作者:watercloud@nsfocus.com
主页:http://www.nsfocus.com
日期:2002-3-18
关于IE执行任意程序漏洞的深入分析
目录:
1. 漏洞回顾
2. 进一步追踪
3. IE可本地执行任意命令分析
4. IE的ActiveX安全设置可被绕过分析
5. 扩展:扩展:IE的DHTML实现中关于html源码再解析部分和IE的安全机制脱节
6. 临时解决方法
7. 测试环境
8. 参考
9. 感谢
<1> 漏洞回顾
Bugtraq 3867描述了IE允许恶意网站在浏览其网页的客户机上执行任意程序。
如果你不了解该漏洞的信息请参阅:
http://magazine.nsfocus.com/detail.asp?id=1192
原文的示例简化如下:
将这个页面本地双击打开,我们看到记事本出来了,同样放到网上,通过IE
连接相关URL打开记事本也被打开,可见IE在整个html再次分析时都有问题。
其他跟动态页面修改的方法还有insertAdjacentElement、动态数据绑定等。
但经测试createElement(htmlStr)不受再次解释问题影响。
动态页面修改不使用script仍然有很多方法,主要是通过动态数据绑定。
举例来说有:
方法一: 使用数据操作控件
写一HTML文件test.html,内容如下:
再写一个文件test.txt,内容如下: (两行,请修改notepad.exe的位置和你一致)
contex
将这两个文件放到你的web服务器的根目录下,然后通过IE访问,你将发现记事本被打开,在这个实现中我们没有使用脚本!
说明:以上代码依赖IE安装时自带安装的动态数据处理控件,所以你的IE设置的
ActiveX 应该允许运行(默认情况下是允许的)。
方法二:使用xml,参考http://security.greymagic.com/adv/gm001-ie/提供的
方法是使用如下html文件实现:
<![CDATA[
]>
说明: 该代码内没有任何控件引用,所以你即使在安全设置中禁用ActiveX控件也能工作,原理一样。主要是新版的IE将xml解释内置所以可直接不调用任何控件实现动态数据绑定,而绑定的数据作为html解释也就实现了动态html修改。
<6> 临时解决方法
明白其原理后就有相应的解决方案了,对于第二个问题二次HTML解释问题是IE程序实现上的问题我们无能为力,我们能做的就是堵住ActiveX的下载安装。
如果是2k/xp可通过一些权限设置来堵住其”下载安装“这一步,但常会伴随副作用。主要是对Downloaded Program Files目录设置不可执行,不可写等权限。
同时我们看到,二次解释后的代码得到的是本地计算机的权限,那么我们可以对IE本地进行权限设置,禁止本地代码下载ActiveX控件也可以得到相应的效果。
但是我们如何对本地权限设置呢?IE的安全设置里只有Internet、本地Intranet、
受限制的站点、受信任的站点的设置,没有对本机的设置!
根据scz的分析:注册表中
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
InternetSettings\Zones\]下有5项,后面的1,2,3,4对应就是你在IE安全设置中看到
的4项,第一个0就是本地计算机,默认看不到,如果把0\Flags值修改为十六进制的47那么你就能发现IE的安全设置中多了一项“我的电脑”。这就是我们苦苦追寻的IE本地权限的控制中心!!!
好了,现在到IE安全设置中\我的电脑\下禁用ActiveX下载就一切OK了。不就是IE的问题导致网上的HTML代码能取得本地代码权限,然后本地代码再下载ActiveX,而IE默认本地代码最大信任,有权下载控件才造成这一系列的问题吗?现在得到本地权限也不能下载ActiveX了,呵呵世界清净了!
<7> 测试环境
IE6 pwin98 & NT4(sp6) 受影响
IE5.5(sp2) win2k(sp2) 受影响
IE5 win2k(sp2) 不受影响
WEB服务器用的是https。
理论上所有IE都会有第一个问题。
<8> 参考资料
http://www.liquidwd.freeserve.co.uk/
http://magazine.nsfocus.com/detail.asp?id=1192
http://msdn.microsoft.com/library/default.asp?url=/workshop/entry.asp
http://security.greymagic.com/adv/gm001-ie/
<9> 感谢
感谢scz的讨论,HeJianBo的支持。
个人愚见,望斧正。
__ watercloud __
watercloud@nsfocus.com
2002年2月24日
最后修改:2002年3月18日