前几天knownsec sogili同学发现ie xss filter一个有意思的bypass,又是一种差异性导致的xss,这次是服务端语言的问题。除了这个,ie还有一个特性,判断origin是否来自本域,是的话,xss filter无效。

昨天研究下chrome xss filter,和ie的机制不太一样,表面看是不做替换,这只是表象而已,实际上chrome会对响应回的HTML做一次规范化,这个过程会判断get请求是否有潜在的xss exp,如果有,输出规范化就会做出各种过滤修改等。只是你直接查看源码是看不到的,可以配合F12,好好看看规范化之后的行为,这个技巧对于我们进行漏洞挖掘非常有利。

除了chrome F12可以看到真实的HTML,其他浏览器呢?通过DOM技巧就行:

javascript:alert(document.getElementsByTagName(‘body’)[0].innerHTML)

这样有什么好处?有利于我们判断浏览器的规范化行为,并进一步找出规范化差异或bugs,也许一个能bypass很多网站过滤器的exp就这样被我们找到,这个过程其实是可以写成一个基于浏览器的fuzzing工具的:P
Continue reading