CVE-2021-21220 Chrome远程代码执行漏洞复现 – 作者:17608406504

0x00 简介

Google Chrome浏览器是一款由Google公司开发的网页浏览器,该浏览器基于其他开源软件撰写,包括WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

通过CVE-2021-21220漏洞,受害者通过未开沙箱机制的Chrome浏览器打开攻击者置入恶意代码的网页后就会执行攻击者想要执行的任意代码。

微信作为腾讯公司发布的一款聊天工具。通过PC端微信用户可以直接在电脑上接受手机微信上的任何信息,例如接收:文字、图片、语音、视频等功能。这款软件是腾讯公司为了方便广大的微信用户而开发的客户端。为了方便快速打开链接浏览网页内容,微信内置了一个浏览器给用户使用,该浏览器使用的是低版本的Chrome内核,同样受此次CVE-2021-21220漏洞的影响,在微信中点击打开包含恶意代码的链接后,攻击者即可在受害者机器上执行任意指令,获取受害者机器的控制权。

0x01 漏洞概述

该漏洞产生的原因是Chrome的V8引擎JIT模块在 ChangeInt32ToInt64 函数的输入值一定会被看作一个 int32 的值来处理,就会进行有符号扩展,进而发生下溢,以此可以利用来修改一些东西,比如分配的数组的长度,这样就可以越界访问其他内存的数据,进而达到任意地址写的目的,攻击者还结合了一些其他手段来绕过Chrome内部的缓解措施达到任意目录执行的目的。

0x02 影响版本

x64架构GoogleChrome<=89.0.4389.128
基于Chromium内核的MicrosoftEdge<=89.0.774.76
其他基于V8引擎的浏览器

0x03 环境搭建

1.本次复现使用的是64位的 Windows7 SP1 虚拟机,可自行下载Windows系统镜像并安装虚拟机;

2.安装完成后启动虚拟机,作为受害靶机,并在靶机上安装受该漏洞影响的Chrome浏览器版本,自行上网下载后运行安装;

3.安装完成后桌面会生成一个快捷方式,可以右键打开所在文件夹;

image-20210624215348003

image-20210624215634561

image-20210624215921688

在此处打开命令行并以无沙箱模式打开chrome浏览器,

chrome.exe--no-sandbox

image-20210624220244301

4.对于PC端微信的安装,可以自行在网上查找旧版本进行安装,安装时不会强制更新,但是旧版本微信打开后进行登录时会强制要求更行,否则无法进行登录,保留有旧版本微信的电脑在打开旧版本微信时则会直接强制进行版本更新,所以对微信内置浏览器的测试就引用漏洞刚刚披露时就行的测试截图,现在已无法进行测试,但是原理和无沙箱打开Chrome进行测试是一样的。

0x04 漏洞复现

测试弹出计算器

1.在受害机器win7上以关闭沙箱的方式打开chrome浏览器,可以看到浏览器对当前模式的提醒

image-20210624230202550

2.在攻击机(kali)上生成windows64位的shellcode(功能:打开计算器)

msfvenom -ax64 -pwindows/x64/exec CMD="calc"EXITFUNC=thread -fnum

image-20210624223402838

复制生成的shellcode并粘贴到exp中相应位置并保存为 poc.html

image-20210624230408262

3.在保存poc.html的目录下打开命令行并执行以下指令以开启http服务

python3 -mhttp.server 80

image-20210624230941046

4.在无沙箱模式下的chrome浏览器中访问开启http服务的攻击机上的poc页面

image-20210624230545669

成功弹出计算器

使用CS上线shell

Cobalt Strike,一个渗透测试平台,常用于团队作战,以下简称 CS,本次测试使用的CS版本为4.0

1.启动服务端程序并设置连接密码(这里使用linux服务端)

image-20210625010819466

2.启动客户端程序(这里使用windows客户端)

image-20210625010928449

用户名可以随意取,密码就是服务端设置的连接密码。

3.打开监听器模块

image-20210625011050312

新建一个监听器并填入信息,

image-20210625011512791

4.生成用来反弹shell的payload

image-20210625011614765

指定监听器并生成payload

image-20210625011811177

5.生成的payload.c文件自行保存,打开payload.c文件提取里面的payload

image-20210625012155436

使用任意文本编辑器将所有 \x 替换为 ,0x ,然后粘贴到poc里相应的位置

image-20210625012415334

6.将修改好的poc网页文件放到攻击机上,并和前一部分一样开启http服务并访问

image-20210625012705619

可以看到CS上线,

image-20210625012803909

7.右键进入beacon

image-20210625012854629

此时就可以在shell中执行任意指令

image-20210625013236847

也可以进行其他进一步的利用,如获取密码、进程信息、文件信息、屏幕截图等

这里针对浏览器进程以及记事本进程进行键盘记录,可以看到返回的记录信息完全一致

image-20210625014627828

查看屏幕截图,

image-20210625014013818

键盘记录,

image-20210625014549470

靶机界面。

image-20210625014742472

测试微信内置浏览器利用

只要在微信中直接点击恶意链接就可以通过微信内置的浏览器打开恶意链接,而在3.2版本之前的微信使用的内置浏览器使用的就是低版本的Chrome内核,并且没有开启沙箱,因此点击链接后PC版微信就会执行恶意页面内置的shellcode。

这里我们做的测试是简单的弹一个计算器,进行其他命令执行或通过CS远程上线等操作可以参考前面进行的复现步骤,由于最新PC版微信现在已经修复了漏洞,并且即使安装了或者保留有旧版本的微信,在打开后进行登录时也会强制要求进行更新才能继续使用,所以这里使用之前漏洞刚出时的一张测试截图。

image-20210625155005563

如图,在微信点击恶意链接后执行了页面中的payload,打开了计算器。

0x05修复建议

1.更新Chrome浏览器到最新版本

2.更新微信客户端到最新版本

3.更新Microsoft Edge到最新版本

来源:freebuf.com 2021-06-30 15:17:17 by: 17608406504

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论