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中,目標已上線
執行命令,以及后續滲透工作