一、漏洞介绍:
什么是WebExtension:
·Office 中的 WebExtension(通常称为 Office 插件或 Office 应用程序)是一种用于扩展 Microsoft Office 功能的技术。Office 插件使第三方开发者能够在 Office 应用程序中集成自己的服务和功能。这些插件采用跨平台的 Web 技术(如 HTML, CSS 和 JavaScript)开发,可以在不同的平台和设备上运行。
·简单理解就是office内置了一个浏览器,可以解析html/javascript/css代码。
·本次的漏洞,就是WPS在处理WebExtension时,未能正确的处理javascript代码,造成了溢出RCE。(可以参考之前chrome被爆出的RCE漏洞、微信 Windows 版 < 3.1.2.141存在RCE漏洞,比较类似)
二、影响版本:
WPS Office 2023 个人版 低于12.1.0.15120(含)
WPS Office机构版本(如专业版、专业增强版) 低于11.8.2.12055(含)”
三、漏洞利用限制
1、购买***wps.cn的域名
·既然是由WebExtension中的javascript造成的,那么就需要准备对应的html文件,WebExtension支持从第三方网站加载html,所以需要在公网开启web服务,用来共享html文件。
·由于wps的限制,当我们加载第三方网站的html时,wps会进行提醒,大概如下面图片。
·在WPS中,wps.cn的域名是在白名单中的,只要我们加载的资源在wps.cn的网站中,就不会有这个提示。但是我们是无法控制wps.cn的。
·在WPS中,白名单检测存在漏洞,代码中可能使用了http://.*?.wps.cn的正则匹配,在这个匹配中,明显存在漏洞,我们只需要把html文件放在http://hackwps.cn的网站中,就可以绕过检测。
·因此,想要利用这个漏洞,必须要购买一个域名,域名中只需要包含wps.cn即可,比如hackerwps.cn、xxxwps.cn。
2、部署html文件到vps上,并且把域名绑定到vps
·购买域名和vps后,需要把子域名 clientweb.docer.wps.cn.***wps.cn解析到购买的vps上,尽量套一层cdn,再使用nginx反向代理到搭建的服务上。(具体域名/vps/cdn可以自行学习部署。)
·这里的子域名,必须为 clientweb.docer.wps.cn.***wps.cn,不然无法过白名单
3、本地复现无需域名和vps
四、漏洞复现
- 使用的poc https://pan.baidu.com/s/1pGesjeykUZHqW0VLJnkE7w?pwd=xaws 提取码xaws
(可执行获取shell poc链接:https://github.com/ba0gu0/wps-rce
2、在poc目录下开启http服务 python3 -m http.server 80
3、修改hosts文件,目录一般在C:\Windows\System32\drivers\etc
在hosts文件后加上 127.0.0.1 clientweb.docer.wps.cn.cloudwps.cn
4、用WPS打开poc,跳计算器漏洞复现成功。