chrome&ie xss filter bypass第一波0day

前几天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

基于这样的技巧我发现了chrome xss filter一些有意思的过滤机制,并成功xss了,哈哈。tips点到为止,几个0day会写进明年开春出版的《跨站之路》(已更名为《Web前端黑客技术揭秘》)的漏洞挖掘章节中,敬请期待啦,因为完成了好些内容了,所以这次就公开这个消息吧。

顺便说下我这本书吧,《跨站之路》(已更名为《Web前端黑客技术揭秘》),里面的知识绝对是会授之以渔的,会让大家知道跨站世界里的各种来龙去脉,甚至还有一些是未曾公开的。为什么要写这书,因为人生路漫漫,跨站仅仅是我这几年走的一条小路,还算精彩,可是我的心不在这点小东西上,世界很精彩,更多神奇的迷等待我们去破解,如此多空位,该告一段落的就告一段落,努力地去填补各种更有意思的空位。

压力@_@!