对金山WPS控件漏洞的肤浅探究
Office与WPS支持Web控件加载HTML、CSS、JavaScript,WPS 11.1.0.12300中内嵌了没开沙盒的Chromium 87.0.4280.20,调用内嵌浏览器渲染远程HTML时执行JS,触发V8代码执行漏洞。
如何触发远程加载
原POC在大段文字中间位置,放了一个跟换行符号大小接近的动态表格,用于拉起Web控件加载与渲染远程HTML。
如果手动调整长宽为0,可以实现默认状态下完全不可见。
但仍能通过开发工具
->XML映射窗格
->选择窗格
发现蛛丝马迹。
为何有域名限制
通过Procmon监控,发现wps.exe
调用了WPS Office/11.1.0.12300/office6/addons/kwebextensionlist/kwebextensionlist.cfg
根据同目录下其他文件可以知道,动态表格的远程加载存在白名单限制:
1 | [General] |
进一步可以定位到WPS Office/11.1.0.12300/office6/kso.dll
中存在关键字,但IDA好久都没解析完这个50兆的DLL。
黑盒测试可知,只要满足*wps.cn|*wpscdn.cn
规则的域名均被视为白名单,支持URL解码。尝试了结合一个或多个@#? /\&\r\n
等符号绕过没有成功,找了官方某个子域站的上传功能,居然禁了html真离谱啊。
V8 RCE
有了WPS子进程和Chrome的背书,直接替换为CS的原生shellcode也不会被defender杀。
注意事项
文档内会记录编辑者的wps帐号、Windows用户名。