永恒之黑(CVE-2020-0796)

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)

首先对漏洞成因进行一波分析
CVE-2020-0796漏洞存在于受影响版本的Windows驱动srv2.sys中,由于Windows SMB更新的3.1.1版本增加了对压缩数据的支持,未对用户传输的压缩数据的合法性进行校验。

我们先搭建具有漏洞的虚拟机环境(记得关掉防火墙,被这个坑惨了: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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
1
粉丝
0
喜欢
2
收藏
0
排名:3240
访问:99
私信
所有博文
社区赞助商