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

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

一、漏洞介绍

该漏洞主要是由于Windows TCP/IP堆栈在处理选项类型为25(0x19,递归DNS服务器选项)且长度字段值为偶数的ICMPv6的路由广播数据包时,处理逻辑存在纰漏,导致存在远程代码执行漏洞。成功利用该漏洞的攻击者可以在目标机器(主机或服务器)上执行任意代码。

影响范围:

• 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
• Microsoft Windows Server, version 1903
• Microsoft Windows Server, version 1909
• Microsoft Windows Server, version 2004

二、漏洞浅析

当Windows TCP / IP堆栈不正确地处理使用选项类型25(递归DNS服务器选项)且长度字段值为偶数的ICMPv6路由器广告数据包时,存在一个远程执行代码漏洞。在此选项中,长度以8个字节为增量进行计数,因此长度为3的RDNSS选项的总长度应为24个字节。该选项本身包含五个字段:IPv6递归DNS服务器的类型,长度,保留,生存时间和地址。前四个字段始终总共为8个字节,但最后一个字段可以包含可变数量的IPv6地址,每个IPv6地址均为16个字节。按照RFC 8106,长度字段应始终为至少3的奇数值,当提供一个偶数长度值时,Windows TCP / IP堆栈错误地将网络缓冲区的前进量减少了8个字节。这是因为堆栈在内部以16字节为增量进行计数,因此无法解决使用非RFC兼容长度值的情况。这种不匹配导致堆栈将当前选项的最后8个字节解释为第二个选项的开始,最终导致缓冲区溢出和潜在的RCE。

三、漏洞复现

复现步骤

1、 虚拟机网络设置开启ipv6

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

2、查看环境情况

Windows版本,按win+r,在弹出窗口中输入winver,查看版本信息

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

3、用国外大神的脚本进行检测有漏洞和没漏洞的结果如下:

PowerShell.exe -ExecutionPolicy UnRestricted -File C:/Users/user/Desktop/new.ps1.ps1

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

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

4、执行ipconfig,查看ipv6地址这里注意,靶机的ipv6地址选取 “ipv6地址” 或 “临时ipv6地址”

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

5、执行ipconfig,查看ipv6地址这里注意,攻击机的ipv6地址选取 “本地ipv6地址

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

6、运行plyload,靶机蓝屏

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

poc原理:

由于Windows TCP/IP堆栈在处理选项类型为25(0x19,递归DNS服务器选项),当伪造长度字段值为偶数的ICMPv6的路由广播数据包发送给目标主机时,Windows TCP/IP 在检查包过程中会根据Length来获取每个包的偏移,遍历解析,导致对 Addresses of IPv6 Recursive DNS Servers 和下一个 RDNSS 选项的边界解析错误,从而绕过验证,将攻击者伪造的option包进行解析,造成栈溢出,从而导致系统崩溃。

四、修复方法

(1)下载微软官方提供的补丁:

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-16898

(2)内网等不便安装更新的用户,可以使用微软官方给出的临时变通措施:

禁用 ICMPv6 RDNSS:

以管理员身份打开PowerShell,输入以下命令,即可"显示接口参数"

netsh int ipv6 show interface

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

可以根据此列表,查询到需要禁用的接口,执行禁用命令如下

netsh int ipv6 set int 8 rabaseddnsconfig=disable

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

返回“确定”后禁用成功,开启方法同上。上述操作均无需重启电脑。

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

原创文章,作者:506227337,如若转载,请注明出处:https://blog.ytso.com/220537.html

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

相关推荐

发表回复

登录后才能评论