《Make A Contract with IE and Become a XSS Girl!》
这是日本猥琐流代表Yosuke HASEGAWA在hit2011上的议题,当时有幸和朋友hiphop通过QQ收听了来之现场的演讲。这个议题主要是讲ie6-8的一些导致xss的问题。其实主要的就讲了一个问题,也就是"第1話 忽視 Content-Type 標頭",其他后面就连细节都没有给出来.....
不过悲剧的是,现场的朋友更加多的是表现出对演讲开始show的“介紹到JavaScript的混淆”兴趣!
"第1話 忽視 Content-Type 標頭"这个问题分析得很nb:
关键的结论部分:
也就是说单纯的通过设置Content-Type是防御不了xss的!! Content-Type设置直接被无视,这个效果类似于mhtml的问题《Hacking with mhtml protocol handler》。
我们来回顾一下我在blog里提到关于设置Content-Type的的文章:
《不要忘记数据本身的解析》
《about utf7-BOM string injection》
《Hacking with mhtml protocol handler》http://www.80vul.com/mhtml/Hacking%20with%20mhtml%20protocol%20handler.txt
在《about utf7-BOM string injection》文里:
<--------------------------------------------->
那么解决这个问题的方案有2点:
1. 严格控制数据文件,返回的Content-Type。
2. 数据存储时,使用编码。
当时甲方的朋友们看到json里直接插入html标签进行xss后,都基本所用了“2. 数据存储时,使用编码”了,而且没有去限制“Content-Type”,基本很在继续的“text/html”,这个也为这次的utf7-BOM string injection埋下了罪恶种子,如果这次再不修改Content-Type,我想有可能种子还有机会发芽开花!! :) 我想如果上面的2点方案同时用上,应该是一个不错的选择。
<--------------------------------------------->
这个正好与utf7-BOM的相反,是对于没有做"2. 数据存储时,使用编码。" 而只做了"1. 严格控制数据文件,返回的Content-Type。"的情况下的利用。:) 看来要防御这些问题2者缺一不可!!!
看来又是一个"那100+个xss"??
在作者的ppt里MS的那个例子已经被修补了,于是我想到taobao上的一个点,那是测试mhtml问题的期间在某个blog上[具体url不记得了]看到的一个点:
http://www.taobao.com/expressway/index.php?id=mytaobao&container=%27%22%3E%3Cscript%3Ealert%280347322%29;%3C/script%3E%0A%3C%22
这个点设置了Content-Type: text/javascript直接访问回提示下载:
当时因为文件里有多个换行所以当时也是没有利用mhtml去xss的... 那么我们看看加个x.html看看:
http://www.taobao.com/expressway/index.php/x.html?id=mytaobao&container=</iframe><script>alert(1)</script>
ok!! 成功弹jj... [该漏洞已经被修补!]
最后,再次感谢hiphop的现场直播