简要描述:
IE 8 XSS 过滤器绕过。感谢@Sogili牛为本绕过通用性实现上提供的tricks。
详细说明:
1. 在IE8中,可以通过 <?import> + 的方式来构成一个XSS vector。
在测试过程中发现, <?import> 同样可写为 。
也就是说。下面的代码都可以运行JS代码。
Default
<?xml: namespace prefix="t">
<?import namespace="t" implementation="#default#time2">
to="">
namespace prefix="t">
namespace="t" implementation="#default#time2">
to="">
2. 利用这个技巧,我发现可以成功绕过IE 8 的 xss filter
测试例子如下:
Default
http://xsst.sinaapp.com/example/1-1.php?page=
如果用<?import..>,则会触发过滤器。
3. 当然,上面这个代码,只适用于 {输出在这里} 的情况。
我们经常会遇到类似 的情况。
这样一来,我们需要在代码前面加上 “> 来闭合HTML属性。
但是问题来啦, “> 会触发XSS过滤器,过滤掉我们代码中的敏感词。
@jackmasa (https://twitter.com/jackmasa),也就是我们乌云的 @Sogili 牛,给了一个绕过的tricks, “x> 就不会触发XSS过滤器了, x代表任意字母。 非常感谢。
这样一来,我们上面的代码可以进一步通用化。
Default
http://www.xxxx.com/product.php?search="id=>
4. 至于具体怎么利用,恩,大家自己看着办。
编辑点评:虽然这只是IE8的xss,但是读者可以通过思路延伸,研究下如何绕IE9或者其他浏览器,毕竟用IE8的人还是很多的。更多的饶过xss限制的方法可以参考《跨站测试与利用中的绕过技术》文章。