漏洞说明:IE8是微软新推出的一款浏览器,其对CSS2.1的完整支持,HTML5的支持,内置开发工具等等。IE8在浏览器安全性上有非常大的改进,内置了一款无法卸载的Xss Filter,对非持久型跨站脚本攻击做了比较好的防护。但是80sec在测试IE8时发现,IE8的Xss Filter存在漏洞,导致在一些东方国家的版本里根本不能阻止URL Xss,譬如在中文版本里,利用一些简单的数据就可以Bypass掉IE8的Filter策略。
漏洞站点:http://www.microsoft.com/
漏洞分析:由于IE8 Xss Filter在过滤时采取的编码是系统内置编码,在中文版本里将是gb2312,在其他一些东方国家里也会采用相应的宽字节编码。提交一个非法的编码序列如%c1<将被IE8作为一个正常的东方字符来进行Filter的关键字匹配,而在页面显示时,由于页面自己会指定一个编码譬如UTF-8等,在解析的时候%c1<并不是一个有效的UTF8编码,这样就会被当作两个字符,从而导致了<绕过检查,这种不一致性导致了漏洞的产生。
漏洞证明:假设存在如下web脚本:
<?php
header(“Content-Type: text/html; charset=utf-8″);
echo $_GET[c];
?>
在东方国家系统的IE8里,如果常规的进行XSS如:
.php?c=<script>alert()</script>
将被IE8安全策略阻止,但是如果提交
.php?c=%c1<script>alert()</script>
代码可以绕过ie8的xss filter并且执行。