微软紧急发布SMBv3协议漏洞-CVE-2020-0796验证、攻击演示、修复和扫描源代码

微软紧急发布SMBv3协议漏洞-CVE-2020-0796验证与修复

**
描述:Microsoft服务器消息块3.1.1(SMBv3)协议处理某些请求的方式中存在一个远程执行代码漏洞。成功利用此漏洞的攻击者可以获得在目标服务器或客户端上执行代码的能力。

为了利用针对服务器的漏洞,未经身份验证的攻击者可以将特制数据包发送到目标SMBv3服务器。若要利用针对客户端的漏洞,未经身份验证的攻击者将需要配置恶意的SMBv3服务器,并诱使用户连接到该服务器。

该安全更新通过更正SMBv3协议处理这些特制请求的方式来解决此漏洞。
作者大余
时间:2020-03-14
网络世界不是随心所欲,它和现实世界一样需要遵循共同的规则。

一、扫描测试工具

Github:https://github.com/dickens88/cve-2020-0796-scanner
百度网盘:链接:https://pan.baidu.com/s/1_8GOTF5_X2LupJu-djF_Nw
提取码:g52f
下载扫描器,可对全网进行扫描,

在这里插入图片描述
命令:python3 cve-2020-0796-scanner.py -t 192.168.1.X/24
使用以上命令进行全网扫描…
Connection refused和Not vulnerable是不存在该漏洞…
在这里插入图片描述
全网还真被我扫出了台终端存在该漏洞情况…Vulnerable!!
查看版本:CMD-winver
在这里插入图片描述
本人计算机版本1809目前是不存在该漏洞的…
不是所有windows10都存在该漏洞!!!可用脚本全网扫描测试!!!

目前github给出的测试定论:

  • 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)
    目前只有该windows10版本系统存在该漏洞!!!

二、修复方法

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0796
根据官网链接进行修复即可…

方法1:

您可以使用以下PowerShell命令禁用压缩功能,以阻止未经身份验证的攻击者利用SMBv3服务器的漏洞…
在powershell执行Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" DisableCompression -Type DWORD -Value 1 -Force

方法2:

本地防火墙出入站规则封禁445端口:
在这里插入图片描述
或者本地注册表进行关闭445端口也行!!

方法3:

在官网微软下载更新修复补丁打上即可…
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0796
在这里插入图片描述
或者打开windows自动更新功能也可进行更新,不推荐非常卡!!!

方法4:

企业外网出口防火墙进行封禁445端口即可!!!

三、关于EXP测试攻击行为

重视重视重视重视重视!!
在这里插入图片描述
还是有很多骇客和黑客存在,希望大家重视安全!存在的尽快修复!
这里EXP我就深藏了…

四、附上扫描源代码脚本-供学习

python:

import socket
import struct
import sys

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'
sock = socket.socket(socket.AF_INET)
sock.settimeout(3)
sock.connect(( sys.argv[1],  445 ))
sock.send(pkt)

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

if not res[68:70] == b"\x11\x03":
    exit("Not vulnerable.")
if not res[70:72] == b"\x02\x00":
    exit("Not vulnerable.")

exit("Vulnerable.")

nmap:

#!/bin/bash
if [ $# -eq 0 ]
  then
    echo $'Usage:\n\tcheck-smb-v3.11.sh TARGET_IP_or_CIDR {Target Specification - Nmap}'
    exit 1
fi

echo "Checking if there's SMB v3.11 in" $1 "..."

nmap -p445 --script smb-protocols -Pn -n $1 | grep -P '\d+\.\d+\.\d+\.\d+|^\|.\s+3.11' | tr '\n' ' ' | tr 'Nmap scan report for' '@' | tr "@" "\n" | tr '|' ' ' | tr '_' ' ' | grep -oP '\d+\.\d+\.\d+\.\d+'

if [[ $? != 0 ]]; then
    echo "There's no SMB v3.11"
fi

网络世界不是随心所欲,它和现实世界一样需要遵循共同的规则!!
在这里插入图片描述

发布了71 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_34801745/article/details/104854700