【系统安全】CVE-2024-49113 Windows轻量级目录访问协议(LDAP)拒绝服务漏洞

devtools/2025/1/15 18:21:46/

文章目录

  • 免责声明
  • 一、漏洞描述
  • 二、漏洞成因
  • 三、漏洞危害
  • 四、影响版本
  • 五、攻击流程
  • 六、修复方案


免责声明

在网络安全领域,技术文章应谨慎使用,遵守法律法规,严禁非法网络活动。未经授权,不得利用文中信息进行入侵,造成的任何后果,由使用者自行承担,本文作者不负责。提供的工具仅限学习使用,严禁外用。


一、漏洞描述

Windows Lightweight Directory Access Protocol(LDAP)是一种轻量级得目录访问协议,它是基于X.500标准的目录访问协议的一个简化版本。LDAP主要用于访问和维护分布式目录信息服务,如活动目录(Active Directory)中的数据。近日,微软发布12月补丁日安全更新修复Windows轻量级目录访问协议(LDAP)拒绝服务漏洞(CVE-2024-49113),该漏洞产生的原因是Windows LDAP客户端处理Netlogon Remote Protocol(NRPC)和LDAP客户端交互时,未能正确处理特制的LDAP响应。

二、漏洞成因

该漏洞源于 Windows 在实现 LDAP 客户端逻辑时存在的整数溢出问题。攻击者可以通过诱导目标服务器(域控制器或其他 Windows Server)访问恶意构造的 LDAP/CLDAP 服务,触发整数溢出,造成信息泄漏或导致 LSASS 进程崩溃,引发拒绝服务攻击(DoS)。

三、漏洞危害

攻击者通过向目标服务器发送恶意RPC请求诱骗目标服务器向攻击者发送LDAP查询,从而导致信息泄露和服务器崩溃等危害。

四、影响版本

Windows Server 2012 R2 (Server Core installation)
Windows Server 2012 R2
Windows Server 2012 (Server Core installation)
Windows Server 2012
Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Coreinstallation)
Windows Server 2008 R2 for x64-based Systems Service Pack 1
Windows Server 2008 for x64-based Systems Service Pack 2 (Server Coreinstallation)
Windows Server 2008 for x64-based Systems Service Pack 2
Windows Server 2008 for 32-bit Systems Service Pack 2 (Server Coreinstallation)
Windows Server 2008 for 32-bit Systems Service Pack 2
Windows Server 2016 (Server Core installation)
Windows Server 2016
Windows 10 Version 1607 for x64-based Systems
Windows 10 Version 1607 for 32-bit Systems
Windows 10 for x64-based Systems
Windows 10 for 32-bit Systems
Windows Server 2025
Windows 11 Version 24H2 for x64-based Systems
Windows 11 Version 24H2 for ARM64-based Systems
Windows Server 2022, 23H2 Edition (Server Core installation)
Windows 11 Version 23H2 for x64-based Systems
Windows 11 Version 23H2 for ARM64-based Systems
Windows Server 2025 (Server Core installation)
Windows 10 Version 22H2 for 32-bit Systems
Windows 10 Version 22H2 for ARM64-based Systems
Windows 10 Version 22H2 for x64-based Systems
Windows 11 Version 22H2 for x64-based Systems
Windows 11 Version 22H2 for ARM64-based Systems
Windows 10 Version 21H2 for x64-based Systems
Windows 10 Version 21H2 for ARM64-based Systems
Windows 10 Version 21H2 for 32-bit Systems
Windows Server 2022 (Server Core installation)

五、攻击流程

  • 攻击者向受害者服务器发送DCE/RPC请求;
  • 受害者被触发发送有关SafeBreachLabs.pro的DNS SRV查询;
  • 攻击者的DNS服务器使用攻击者的主机名和LDAP端口进行响应;
  • 受害者发送广播NBNS请求来查找收到的主机名(攻击者)的IP地址;
  • 攻击者发送一个NBNS响应,其中包含其IP地址;
  • 受害者成为LDAP客户端并向攻击者的机器发送CLDAP请求;
  • 攻击者发送带有特定值的CLDAP引用响应数据包,导致LSASS崩溃并强制受害者服务器重新启动;
    在这里插入图片描述

利用条件:

  1. 攻击者能够发起并触发目标服务器的 RPC 调用,通常需要在内网环境中。
  2. 目标服务器(DC)的 DNS 查询可出网。
  3. 攻击者能够接收来自目标服务器的 LDAP/CLDAP 请求,并返回恶意响应。

漏洞检测脚本如下:

import socket
import argparse
import threading
import time
import ipaddress
from concurrent.futures import ThreadPoolExecutor
from impacket.dcerpc.v5 import transport, nrpcclass ExploitChecker:def __init__(self, target_ip):self.target_ip = target_ipself.results = {"ldap_connect": False,"rpc_connect": False,"netlogon_service": False,"ldap_callback": False}def check_rpc_port(self, port=49664):try:rpctransport = transport.DCERPCTransportFactory(f'ncacn_ip_tcp:{self.target_ip}[{port}]')dce = rpctransport.get_dce_rpc()dce.connect()try:dce.bind(nrpc.MSRPC_UUID_NRPC)self.results["netlogon_service"] = Trueexcept:passdce.disconnect()self.results["rpc_connect"] = Truereturn Trueexcept:return Falsedef check_ldap_port(self, port=389):try:sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.settimeout(2)result = sock.connect_ex((self.target_ip, port))sock.close()self.results["ldap_connect"] = (result == 0)return self.results["ldap_connect"]except:return Falsedef ldap_callback_listener(self):try:sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)sock.bind(('0.0.0.0', 389))sock.settimeout(5)while not self.results["ldap_callback"]:try:data, addr = sock.recvfrom(1024)if addr[0] == self.target_ip:self.results["ldap_callback"] = Truebreakexcept socket.timeout:breaksock.close()except Exception as e:print(f"LDAP Listener Error: {str(e)}")def run_checks(self):print(f"\n[*] Checking {self.target_ip}")listener_thread = threading.Thread(target=self.ldap_callback_listener)listener_thread.daemon = Truelistener_thread.start()with ThreadPoolExecutor(max_workers=3) as executor:executor.submit(self.check_rpc_port)executor.submit(self.check_ldap_port)time.sleep(6)can_exploit = all(self.results.values())status = "Potentially Vulnerable" if can_exploit else "Not Vulnerable"print(f"[{self.target_ip}]")print(f"├── RPC (49664): {'✓' if self.results['rpc_connect'] else '✗'}")print(f"├── LDAP (389): {'✓' if self.results['ldap_connect'] else '✗'}")print(f"├── Netlogon: {'✓' if self.results['netlogon_service'] else '✗'}")print(f"├── Callbacks: {'✓' if self.results['ldap_callback'] else '✗'}")print(f"└── Status: {status}\n")return can_exploitdef check_targets(targets):vulnerable_hosts = []for ip in targets:checker = ExploitChecker(str(ip))if checker.run_checks():vulnerable_hosts.append(str(ip))return vulnerable_hostsdef parse_ip_input(ip_input):try:return list(ipaddress.ip_network(ip_input, strict=False).hosts())except ValueError:try:return [ipaddress.ip_address(ip_input)]except ValueError:with open(ip_input, 'r') as f:return [ipaddress.ip_address(line.strip()) for line in f if line.strip()]def main():parser = argparse.ArgumentParser(description="Multi-target LDAP Nightmare Pre-Exploit Checker")parser.add_argument("target", help="Target IP, subnet (CIDR), or file with IP list")parser.add_argument("-o", "--output", help="Output file for vulnerable hosts")args = parser.parse_args()try:targets = parse_ip_input(args.target)print(f"[*] Loaded {len(targets)} targets")vulnerable_hosts = check_targets(targets)print("\n[+] Scan Complete")print(f"[+] Found {len(vulnerable_hosts)} potentially vulnerable hosts")if args.output and vulnerable_hosts:with open(args.output, 'w') as f:for host in vulnerable_hosts:f.write(f"{host}\n")print(f"[+] Results saved to {args.output}")except Exception as e:print(f"[-] Error: {str(e)}")if __name__ == "__main__":main()

利用脚本如下:https://github.com/SafeBreach-Labs/CVE-2024-49113

在这里插入图片描述

六、修复方案

临时修复方案

1、 使用流量设备监控可疑的DNS SRV查询,对可疑查询进行防护。
2、 使用终端设备监控可疑的DsrGetDcNameEx2 RPC调用,对可疑RPC调用进行防护。

Windows自动更新

Windows系统默认启用Microsoft Update,当检测到可用更新时,将会自动下载更新并在下一次启动时安装。
还可以通过以下步骤快速安装更新:

1、 点击开始菜单或按Windows快捷键,点击进入设置
2、 选择更新和安全,进入Windows更新(Windows Server2012以及Windows Server2012R2可通过控制面板进入Windows更新,步骤为控制面板->系统和安全->Windows更新);
3、 选择检查更新,等待系统将自动检查并下载可用更新;
4、 重启计算机,安装更新。

Windows手动安装补丁

对于不能自动更新的系统版本,可参考以下链接下载适用于该系统的补丁并安装:
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-49113


http://www.ppmy.cn/devtools/150738.html

相关文章

《AI赋能鸿蒙Next,打造极致沉浸感游戏》

在游戏开发领域,鸿蒙Next系统与人工智能技术的结合为开发者们带来了前所未有的机遇,使打造更具沉浸感的游戏成为可能。以下将深入探讨如何利用人工智能在鸿蒙Next上开发出令人身临其境的游戏。 利用AI优化游戏角色智能行为 在传统游戏中,非…

美摄科技PC端视频编辑解决方案,为企业打造专属的高效创作平台

在当今这个信息爆炸的时代,视频已成为不可或缺的重要内容形式,美摄科技推出了PC端视频编辑解决方案的私有化部署服务,旨在为企业提供一款量身定制的高效创作平台。 一、全面功能,满足企业多样化需求 美摄科技的PC端视频编辑解决…

1 XDMA IP介绍

1 XDMA IP介绍 关于XDMA IP介绍的介绍无非就是参考手册,我也看了一些手册,对于特定型号的IP其配置页面大差不差,代表的意思也是大差不差,所以在IP核介绍这里,就推荐大佬的文章,这个文章也是我的入门的文章…

宝塔安装mongodb后,写脚本监控运行状态,关闭后自动重启

最近项目用上了mongodb,但是每天晚上 mongodb都回自动关闭,没办法 只能写个监视服务的脚本 在关闭的话就直接重启,创建个计划任务,每三分钟执行一次 # 检查mongo是否还在进程中 countps aux|grep mongo| grep -v grep |wc -l echo…

我的年度总结

这一年的人生起伏:从曙光到低谷再到新的曙光 其实本来没打算做年度总结的,无聊打开了帅帅的视频,结合自己最近经历的,打算简单聊下。因为原本打算做的内容会是一篇比较丧、低能量者的呻吟。 实习生与创业公司的零到一 第一段工…

centos7.6 安装nginx 1.21.3与配置ssl

1 安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel2 下载Nginx wget http://nginx.org/download/nginx-1.21.3.tar.gz3 安装目录 mkdir -p /data/apps/nginx4 安装 4.1 创建用户 创建用户nginx使用的nginx用户。 #添加www组 # groupa…

25/1/14 算法笔记<强化学习> CBR加强化学习

CBR,基于案例的推理,它是一种基于过去的实际经验或经历的推理,他可以根据过往的案例找到与当前案例最相关的案例,然后对该案例做改动来解决当前的问题。 CBR的过程 CBR可以看作一个循环过程:相似按键检索-->案例重用-->案…

测试链接 勿看

这里写自标题 自定义定阿萨德义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定…