Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cve-2024-49113-ldap_nightmare_reproduction — cve-2024-49113-ldap_nightmare_reproduction 的复现 | Kitploit
工具/GitHubGitHub/razureink/cve-2024-49113-ldap_nightmare_reproduction
漏洞分析漏洞利用渗透测试学习与教育红队二进制利用实验室与实践
GitHubrazureink/cve-2024-49113-ldap_nightmare_reproduction

cve-2024-49113-ldap_nightmare_reproduction

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

cve-2024-49113-ldap_nightmare_reproduction 的复现

查看仓库
27天前尚未审核

CVE-2024-49113 — LDAP Nightmare

Windows LDAP 客户端远程代码执行(基于堆的缓冲区溢出)

字段值
CVECVE-2024-49113
别名LDAP Nightmare
CVSS 3.19.8 — 严重
CWECWE-122 — 基于堆的缓冲区溢出
发现SafeBreach(2025 年 1 月发布 PoC)
利用状态已确认在野主动利用
补丁Microsoft 2024 年 12 月 Patch Tuesday(KB5048685 / KB5048652)

1. 概述

CVE-2024-49113 是 Windows LDAP 客户端库(wldap32.dll)中的一个严重基于堆的缓冲区溢出漏洞。未经认证的远程攻击者可通过向发起 LDAP 查询的受害 Windows 机器(例如执行目录查找的域控制器)发送特制的 LDAP 响应来触发该漏洞。

由于 Windows 域控制器会经常向其他域控制器、成员服务器和全局编录服务器发送 LDAP 查询,因此该缺陷在 Active Directory 环境中尤为危险。成功利用可在本地系统(Local System)帐户(在域控制器上)的上下文中实现远程代码执行,使攻击者完全控制目标服务器。

公开的概念验证(PoC,名为“LDAP Nightmare”)由 SafeBreach 于 2025 年 1 月发布,此前微软已在 2024 年 12 月 Patch Tuesday 中发布了修复。


2. 技术详情

根本原因

该漏洞位于 wldap32.dll 中——即 RFC 4511 所定义的轻量目录访问协议(LDAP)客户端的 Windows 实现。

当 LDAP 客户端收到 Search Result Entry(搜索结果条目) 响应时,该库会在 BER(基本编码规则)解码器循环中解析 LDAP 消息的协议数据单元(PDU)。在解析 LDAP 属性值期间,堆内存分配逻辑存在缺陷,导致解码器将数据写入超出堆分配缓冲区边界的位置。

具体来说:

  1. BER 解码器读取 LDAP 属性值的长度字段。
  2. 根据该长度分配一个堆缓冲区。
  3. 在解码过程中(尤其是在处理构造字符串或多字节编码时),解码器无法正确跟踪缓冲区内的偏移量。
  4. 这会导致最多达数 KB 的受控堆溢出。

触发条件

  • 受害者必须发起 LDAP 查询(绑定 + 搜索请求)。
  • 攻击者的恶意 LDAP 服务器发送特制的 Search Result Entry(LDAP_RES_SEARCH_ENTRY) 响应。
  • 溢出发生在对响应数据进行任何应用程序级验证之前。
  • 无需认证——溢出可在匿名 LDAP 绑定期间触发。

影响

  • 机密性:系统上所有数据完全失陷。
  • 完整性:完全写入能力;攻击者可安装程序、修改数据、创建帐户。
  • 可用性:完全控制目标;可拒绝服务。
  • 持久性:在域控制器上以 SYSTEM 身份实现 RCE,可在整个域内横向移动。

3. 受影响版本

所有受支持的 Windows Server 和 Windows 客户端版本在 2024 年 12 月 10 日安全更新之前均存在漏洞:

Windows Server(域控制器 — 风险最高)

  • Windows Server 2025、2022、2019、2016、2012 R2、2012、2008 R2 SP1

Windows 客户端(不太可能触发,但仍存在漏洞)

  • Windows 11 24H2 / 23H2 / 22H2 / 21H2
  • Windows 10 22H2 / 21H2

解决此 CVE 的 2024 年 12 月 Patch Tuesday 更新如下:

  • KB5048685 — Windows Server 2025 / Windows 11 24H2
  • KB5048652 — Windows Server 2022 / Windows 11 23H2
  • KB5048661 — Windows 10 22H2
  • 以及其他版本的等效更新(参见 MSRC 公告)。

4. 复现步骤

架构

root@kitploit:~
┌──────────────────┐          LDAP Query           ┌─────────────────────┐
│   Victim Host    │ ──────────────────────────▶   │  Attacker LDAP      │
│  (Windows DC)    │                               │  Server (This PoC)  │
│                  │ ◀──────────────────────────   │                     │
│  wldap32.dll     │    Crafted LDAP Response      │  exploit.py         │
│  overflowed      │    (heap overflow payload)    │  port 389           │
└──────────────────┘                               └─────────────────────┘

前置条件

  • 未安装 2024 年 12 月补丁的 Windows 域控制器(或配置为查询 LDAP 的 Windows 主机)。
  • 攻击者机器上安装 Python 3.8+(可为 Windows、Linux 或 macOS)。
  • 受害者到攻击者之间 TCP 端口 389 的网络连通性。
  • 对于未加入域的受害者,您可能需要将主机配置为将攻击者作为其 LDAP 服务器(例如通过 hosts 文件或 DNS)。

分步操作

1. 验证目标未打补丁

在受害者机器上,检查已安装的 KB:

root@kitploit:~
Get-HotFix | Where-Object { $_.HotFixID -match "KB5048685|KB5048652" }

如果未返回任何结果,则系统未打补丁且存在漏洞。

2. 启动恶意 LDAP 服务器

在攻击者机器上,运行此 PoC:

root@kitploit:~
python exploit.py --listen-ip 192.168.1.100 --listen-port 389

其中 192.168.1.100 是攻击者的 IP 地址。

注意: 在 Linux 上,绑定端口 389 需要 root 权限(sudo)。在 Windows 上,可能需要管理员权限。

3. 从受害者机器触发 LDAP 查询

在受害者机器上(PowerShell,以管理员身份):

root@kitploit:~
# Force an LDAP search against the attacker server
$ldapPath = "LDAP://192.168.1.100/DC=evil,DC=local"
$searcher = New-Object DirectoryServices.DirectorySearcher($ldapPath)
$searcher.Filter = "(objectClass=*)"
$searcher.SearchRoot = $null

try {
    $results = $searcher.FindAll()
} catch {
    Write-Host "Connection attempted — check the PoC server for crash details"
}

或者,使用 ldp.exe(随 Windows Server / RSAT 提供):

  1. 打开 ldp.exe
  2. Connection → Connect → 输入攻击者 IP,端口 389
  3. Connection → Bind →(留空以进行匿名绑定)
  4. View → Tree → 基础 DN:DC=evil,DC=local
  5. 单击 Run

4. 观察溢出

  • PoC 服务器将打印 [*] Sending malicious search result entry... 并发送特制的响应。
  • 如果成功,受害者的 lsass.exe 或 LDAP 客户端进程将因访问违规 (0xC0000005) 而崩溃,或者系统可能出现蓝屏死机(BSOD)。
  • 要实现真正的 RCE,必须对堆布局进行堆风水布置并控制溢出——此处包含的 PoC 演示了崩溃原语(拒绝服务)作为起点。

基于 Docker 的复现(替代方案)

提供了一个 Dockerfile,用于在隔离环境中运行 PoC:

root@kitploit:~
docker build -t ldap-nightmare .
docker run --rm -p 389:389 --cap-add=NET_ADMIN ldap-nightmare

5. 概念验证(exploit.py)

随附的 exploit.py 实现了:

  • LDAP 绑定响应 — 接受匿名或简单绑定。
  • 特制的 Search Result Entry — 传递堆溢出载荷。
  • 线程化连接处理器 — 处理多个受害者连接。
  • 可通过命令行参数(--listen-ip、--listen-port、--payload-size)进行配置。

载荷结构

针对实验室目标运行

root@kitploit:~
# Start the malicious server
sudo python exploit.py --listen-ip 0.0.0.0 --listen-port 389

# In another terminal, watch for connections
tcpdump -i any port 389 -X

6. 缓解措施

补丁

安装 2024 年 12 月 10 日 Patch Tuesday 更新:

  • Windows Update:检查更新并安装 2024 年 12 月累积更新。
  • WSUS / SCCM:批准并部署 KB5048685 / KB5048652 / KB5048661(视版本而定)。
  • Microsoft Catalog:从 Microsoft 更新目录 下载独立程序包。

临时缓解措施(如果补丁延迟)

如果无法立即应用补丁:

  1. 网络分段 — 阻止来自不受信任网络的 LDAP(TCP 389 / 636)流量到达域控制器。
  2. 禁用匿名 LDAP 查询 — 在域控制器上限制匿名访问:
    root@kitploit:~
    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" `
      -Name "LDAPServerIntegrity" -Value 2 -Type DWord
    Restart-Service NTDS
    
  3. 监视 LDAP 崩溃 — 为 LDAP 客户端崩溃启用审核:
    root@kitploit:~
    wevtutil qe "Windows PowerShell" /f:text /q:"*[System[EventID=1000]]"
    

7. 参考资料


8. 法律免责声明

本材料仅供教育和授权安全测试之用。 未经明确许可,针对系统未经授权利用 CVE-2024-49113 属于违法行为。作者不对任何滥用此信息的行为负责。在测试任何系统之前,请务必获得书面授权。


下载工具
偏移字段值
0x00LDAP 消息标签 (0x30)序列
0x01–0x02总长度(特制)大值触发溢出
0x03协议操作 (0x64)Search Result Entry
0x04–0x0ELDAP 结果字段标准头部
0x0F+属性列表溢出触发器(长度 = 0xFFFF)
来源URL
Microsoft 安全响应中心MSRC CVE-2024-49113
SafeBreach(原始发现)SafeBreach Blog — LDAP Nightmare
NVDNVD CVE-2024-49113
CWE-122基于堆的缓冲区溢出
RFC 4511LDAPv3 协议
2024 年 12 月 Patch TuesdayMicrosoft 发行说明