大家好,我是白帽攻防录的白帽akihi。今天分享的是之前挖某产品的pc客户端app的1点击rce漏洞案例。
漏洞概述
某 PC 客户端基于 Electron 框架开发,官方发布的最新 Windows 版本中存在一处 XSS导致的RCE(远程代码执行) 漏洞。攻击者只需诱导受害者加载一个精心构造的恶意文档点击链接,即可在客户端内以当前用户权限执行任意命令,演示中以弹出计算器(calc.exe)作为验证命令。
漏洞复现
1. 发现特权接口
在官网下载最新版 Windows 客户端并安装运行后,打开 Chromium DevTools 调试控制台
在 Console 中通过 JS 遍历全局对象,发现一个暴露给渲染进程的特权对象 xxxx,其中包含特权接口,通过构造poc可以实现一个执行系统命令
xxxx('child_process').exec('calc')
2. 组件发现
通过查看项目代码发现存在mathjax组件

mathjax组件配置不当可以导致xss漏洞,poc如下
$$
\href{javascript:alert(document.cookie)}{MaliciousLink}
$$
3. 提升危害,构造 RCE 链路
结合xss和上面特权接口,可以实现在渲染mathjax数学公式的时候,实现rce
$$
\href{javascript:xxx('child_process').exec('calc')}{RUN_CALC}
$$

危害
客户端xss到rce,当用户打开恶意md文件,点击链接就可以获取客户端权限,控制客户端电脑
总结
结合业务分析产品使用组件的安全风险,审计组件的历史漏洞,xss结合某些特权接口可以实现更高危害。