阅读:2750回复:0
Bypass IE XSS Filter
◆0 背景
从IE8 beta2 开始,微软加入了xss Filter。如同大部分安全产品一样,防护的对策就是利用规则去过滤攻击代码,基于可用和效率的考虑,同时加入黑白名单策略(即同源策略)。 经过几代的更新和大量hack爱好者的测试(微软喜欢招揽一些帮助寻找漏洞的人才),到IE9已经有了比较好的提升。下面主要针对IE9和IE10. ◆1 找根源 IE xss filter工作原理 图片:2014091810452690579.png 其流程 图片:2014091810452690579.png 这里有很多环节可以bypass 例如验证同源80sec发现的问题。 http://www.80sec.com/ie8-security-alert.html 先针对xss filter 的绕过进行展开。 不乏很多人的人品好,随意组合便可bypass。以下针对像我这种人品一般的人,真正能游刃有余,就需要知道IE的xss Filter 的正则。 ◆2 提取正则 这里提供几种方法寻找IE xss Filter的正则。(Ie 的xss filter regx 存在于系统内核 mshtml.dll模块中)。 查找很简单 可以使用notepad++ textfx 16进制查看。(搜索‘sc{’) 图片:2014091810452690579.png 或者使用 winhex(作者喜欢的工具) (搜索‘sc{’) 图片:2014091810452690579.png 不过这里强烈建议大家熟悉下IDApro(原因:后面你研究webkit 或者andriod等其他应用时,IDApro是非常好用的利器) 图片:2014091810452690579.png 这里给出一个老外blog 的一条 console 命令 非常实用。 findstr /C:"sc{r}" WINDOWSSYSTEM32mshtml.dll|find "{"这里得到 IE9 20132的xssfilter regx {(v|(&[#()[].]x?0*((86)|(56)|(118)|(76));?))([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*(b|(&[#()[].]x?0*((66)|(42)|(98)|(62));?))([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*(s|(&[#()[].]x?0*((83)|(53)|(115)|(73));?))([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*(c|(&[#()[].]x?0*((67)|(43)|(99)|(63));?))([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*{(r|(&[#()[].]x?0*((82)|(52)|(114)|(72));?))}([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*(i|(&[#()[].]x?0*((73)|(49)|(105)|(69));?))([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*(p|(&[#()[].]x?0*((80)|(50)|(112)|(70));?))([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*(t|(&[#()[].]x?0*((84)|(54)|(116)|(74));?))([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*(:|(&[#()[].]x?0*((58)|(3A));?)).}{(j|(&[#()[].]x?0*((74)|(4A)|(106)|(6A));?))([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*(a|(&[#()[].]x?0*((65)|(41)|(97)|(61));?))([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*(v|(&[#()[].]x?0*((86)|(56)|(118)|(76));?))([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*(a|(&[#()[].]x?0*((65)|(41)|(97)|(61));?))([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*(s|(&[#()[].]x?0*((83)|(53)|(115)|(73));?))([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*(c|(&[#()[].]x?0*((67)|(43)|(99)|(63));?))([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*{(r|(&[#()[].]x?0*((82)|(52)|(114)|(72));?))}([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*(i|(&[#()[].]x?0*((73)|(49)|(105)|(69));?))([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*(p|(&[#()[].]x?0*((80)|(50)|(112)|(70));?))([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*(t|(&[#()[].]x?0*((84)|(54)|(116)|(74));?))([t]|(&[#()[].]x?0*(9|(13)|(10)|A|D);?))*(:|(&[#()[].]x?0*((58)|(3A));?)).}{.*?((@)|(([:=]|(&[#()[].]x?0*((58)|(3A)|(61)|(3D));?)).*?([(]|(&[#()[].]x?0*((40)|(28)|(92)|(5C));?))))}{[ /+t"'`]st{y}le[ /+t]*?=.*?([:=]|(&[#()[].]x?0*((58)|(3A)|(61)|(3D));?)).*?([(]|(&[#()[].]x?0*((40)|(28)|(92)|(5C));?))}{ (webkit)Tip5: "-prompt(document.location)-" (webkit)Tip6: Referer: http://www.google.com/search?hl=en&q=xss"> (webkit)Tip7: User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)xss"> (webkit) 短短研究过这个。参考: http://blogs.technet.com/b/srd/archive/2008/08/19/ie-8-xss-filter-architecture-implementation.aspx http://www.80sec.com |
|