永恆之黑(CVE-2020-0796)

XinCao發表於2020-06-06

CVE-2020-0796漏洞(我把它叫做永恆之黑:laughing:

3月10日:微軟釋出安全通告ADV200005,稱SMBv3協議在處理某些請求的方式中存在程式碼執行漏洞,並提供了緩解措施。
3月11日:國外某廠商針對該漏洞釋出安全防護規則更新。
3月11日:綠盟科技釋出微軟SMBv3協議遠端程式碼執行漏洞(CVE-2020-0796)通告。
3月12日:微軟正式釋出CVE-2020-0796安全通告和漏洞修復補丁。

受影響的版本

Windows 10 Version 1903 for 32-bit Systems
Windows 10 Version 1903 for ARM64-based Systems
Windows 10 Version 1903 for x64-based Systems
Windows 10 Version 1909 for 32-bit Systems
Windows 10 Version 1909 for ARM64-based Systems
Windows 10 Version 1909 for x64-based Systems
Windows Server, version 1903 (Server Core installation)
Windows Server, version 1909 (Server Core installation)

首先我們先搭建具有漏洞的虛擬機器環境(記得關掉防火牆,被這個坑慘了:sob:):
ip:192.168.159.130

CVE-2020-0796漏洞複習(溢位藍屏攻擊和拿shell)

CVE-2020-0796漏洞複習(溢位藍屏攻擊和拿shell)

CVE-2020-0796漏洞複習(溢位藍屏攻擊和拿shell)

並搭建配置一臺kali用來完成後面的利用拿shell:
ip:192.168.159.129

CVE-2020-0796漏洞複習(溢位藍屏攻擊和拿shell)

漏洞發現

開始復現,首先我們利用python檢測指令碼對安裝好的虛擬機器進行檢測,看看是否具有永恆之黑漏洞。
這裡奉上萬能的github上大佬的指令碼QAQ
也可以使用nmap檢測指令碼(nmap賽高)

import socket
import struct
import sys
from netaddr import IPNetwork

pkt = b'\x00\x00\x00\xc0\xfeSMB@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x00\x08\x00\x01\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x02\x00\x00\x00\x02\x02\x10\x02"\x02$\x02\x00\x03\x02\x03\x10\x03\x11\x03\x00\x00\x00\x00\x01\x00&\x00\x00\x00\x00\x00\x01\x00 \x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\n\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00'

subnet = sys.argv[1]

for ip in IPNetwork(subnet):

    sock = socket.socket(socket.AF_INET)
    sock.settimeout(3)

    try:
        sock.connect(( str(ip),  445 ))
    except:
        sock.close()
        continue

    sock.send(pkt)

    nb, = struct.unpack(">I", sock.recv(4))
    res = sock.recv(nb)

    if res[68:70] != b"\x11\x03" or res[70:72] != b"\x02\x00":
        print(f"{ip} Not vulnerable.")
    else:
        print(f"{ip} Vulnerable")

看下虛擬機器能否互通:

CVE-2020-0796漏洞複習(溢位藍屏攻擊和拿shell)

CVE-2020-0796漏洞複習(溢位藍屏攻擊和拿shell)

ok,準備就緒就直接開始執行指令碼檢測就行了(要用python3,不然會報錯)

python3 scanner.py 192.168.159.130

CVE-2020-0796漏洞複習(溢位藍屏攻擊和拿shell)

顯示Vulnerable則表示含有漏洞,否則顯示NOT Vulnerable

藍屏攻擊(嘿嘿,終於可以開始了)

首先,去github找大佬的poc(github,永遠滴神)
安裝好依賴

git clone https://github.com/SecureAuthCorp/impacket.git
cd impacket
python3 setup.py install

利用python指令碼進行藍屏攻擊測試(python老勞模了:laughing:):

python3 gistfile1.py 192.168.159.130

CVE-2020-0796漏洞複習(溢位藍屏攻擊和拿shell)

CVE-2020-0796漏洞複習(溢位藍屏攻擊和拿shell)

換了好幾個poc,還是這個進行溢位攻擊好用

拿shell

嘿嘿嘿,經過藍屏攻擊驗證後我們就可以開始進一步利用漏洞構造payload進行任意程式碼執行的操作(後面填坑)

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章