本篇文章为大家展示了如何进行漏洞复现及修复,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
该漏洞主要是由于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
2、查看环境情况
Windows版本,按win+r,在弹出窗口中输入winver,查看版本信息
3、用国外大神的脚本进行检测有漏洞和没漏洞的结果如下:
PowerShell.exe -ExecutionPolicy UnRestricted -File C:\Users\user\Desktop\new.ps1.ps1
4、执行ipconfig,查看ipv6地址这里注意,靶机的ipv6地址选取 “ipv6地址” 或 “临时ipv6地址”
5、执行ipconfig,查看ipv6地址这里注意,攻击机的ipv6地址选取 “本地ipv6地址
6、运行plyload,靶机蓝屏
由于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
可以根据此列表,查询到需要禁用的接口,执行禁用命令如下
netsh int ipv6 set int 8 rabaseddnsconfig=disable
返回“确定”后禁用成功,开启方法同上。上述操作均无需重启电脑。
上述内容就是如何进行漏洞复现及修复,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。