0x00漏洞简介
该漏洞是去年四月FireEye公布的一个OFFICE 0day,在无需用户交互的情况下,打开word文档就可以通过hta脚本执行任意代码。经过研究发现,此漏洞的成因主要是word在处理内嵌OLE2LINK对象时,通过网络更新对象时没有正确处理的Content-Type所导致的一个逻辑漏洞。
受影响的版本
Microsoft Office 2016
Microsoft Office 2013
Microsoft Office 2010
Microsoft Office 2007
0x01复现过程
首先,创建一个正常的word文档,作为将要链接的rtf对象,就叫做test.docx吧。
然后,将test.docx重命名为test.rtf后放到Apache服务器上面,并创建另一个文档,选择插入->对象->由文件创建,输入rtf文件路径后选择链接到文件。然后将该文件另存为rtf文件,就叫他exp.rtf吧。
此时,打开exp.rtf可以看到刚刚链接的test.rtf是以一个整体的格式显示。
这时,我们在服务器端修改test.rtf文件为Visual Script Script代码需要注意反斜杠的转义,这段代码将弹出本地计算器。
当然,需要改一下Apache的配置,该代码会将该目录下的文件识别为hta脚本,然后重启服务器。
1 | <Directory /var/www/html/test/> |
点击“是”即可弹出计算器,此时用010Editor打开该文档,将\object\objautlink\rsltpict替换为\object\objautlink\objupdate\rsltpict,虽然仍然会有提示,但不需与用户交互,计算器便会自行弹出。
0x02利用过程
由上述部分,我们已经可以成功在打开exp.rtf的电脑上执行VBS代码,现在思路为将服务端的后门下载到本地运行,在远程监听,即可实现利用。
- 后门准备
利用最metasploit生成喜闻乐见的meterpreter后门,放在与test.rtf相同目录下。
- 修改代码
由于前面漏洞复现的时候已经有了VBS运行程序的代码,只需再找一条下载文件的代码就行了,代码如下。
1 | <script> |
- 服务器监听
用metasploit配置监听本地端口。
- 反弹shell
在靶机上打开exp.rtf,进程中出现下载到本地的后门aaa.exe。返回服务器查看,shell反弹成功。