xxl-job_2.4.1ssrf导致Rce漏洞代码分析(CVE-2024-24113)
字数 1659 2025-08-29 08:29:58
XXL-JOB 2.4.1 SSRF导致RCE漏洞分析(CVE-2024-24113) 教学文档
漏洞概述
本漏洞是一个组合漏洞,通过SSRF(服务器端请求伪造)获取accessToken后,利用accessToken进行远程代码执行(RCE)。漏洞存在于XXL-JOB 2.4.1版本中。
漏洞原理
- SSRF部分:攻击者可以通过构造特定的
addressList参数,使XXL-JOB调度中心向攻击者控制的服务器发送请求,泄露敏感信息如accessToken。 - RCE部分:获取
accessToken后,攻击者可伪造调度中心身份,向执行器发送恶意请求,执行任意命令。
漏洞详细分析
1. accessToken的作用
accessToken是XXL-JOB用于校验调度中心(Admin)与执行器(Executor)之间通信合法性的凭证。拥有有效的accessToken可以伪装成合法的调度中心。
2. RCE部分分析
命令执行路径
- 路由入口:
/run路由 - 核心类:
com.xxl.job.core.biz.impl.ExecutorBizImpl - 执行方法:
run方法
命令执行流程
- 首先校验
accessToken是否正确 - 判断路由为
/run后进入执行逻辑 - 最终在
com.xxl.job.core.handler.impl.ScriptJobHandler类中执行命令
命令执行核心逻辑
- 检查
glueType是否为脚本类型 - 获取脚本执行命令和构建文件名
- 检查指定路径下的脚本文件是否存在,不存在则创建
- 执行脚本文件
3. SSRF部分分析
触发路径
- 触发路由:
/xxl-job-admin/jobinfo/trigger - 核心类:
com.xxl.job.admin.controller.JobInfoController
关键参数
addressList参数是造成SSRF的关键,攻击者可以控制此参数指向任意地址。
SSRF流程
- 请求进入
JobInfoController.trigger()方法 - 调用链:
com.xxl.job.admin.service.impl.XxlJobServiceImpl.trigger()com.xxl.job.admin.core.thread.JobTriggerPoolHelper.trigger()com.xxl.job.admin.core.trigger.XxlJobTrigger.processTrigger()
- 在
XxlJobTrigger中,攻击者提供的addressList覆盖了原始值 - 最终通过
runExecutor方法向指定地址发送HTTP请求
漏洞利用点
- 整个流程中没有对
addressList参数进行有效校验 - 响应中包含敏感信息如
accessToken
漏洞复现
利用步骤
- 构造恶意
addressList参数指向攻击者控制的服务器 - 发送请求到
/xxl-job-admin/jobinfo/trigger触发SSRF - 从响应中获取
accessToken - 使用获取的
accessToken伪造调度中心身份 - 向执行器发送恶意请求执行任意命令
EXP示例
(根据原文描述,EXP应包含以下关键部分)
- SSRF部分构造恶意
addressList - 从响应中提取
accessToken - 使用
accessToken构造RCE请求
修复建议
- 对
addressList参数进行严格校验,限制只能访问合法的执行器地址 - 加强
accessToken的保护,避免泄露 - 更新到最新安全版本
参考链接
- XXL-JOB之前版本RCE漏洞分析
- 官方安全公告
总结
本漏洞通过SSRF获取敏感凭证accessToken,再利用accessToken进行远程命令执行,是一个典型的组合漏洞。理解此漏洞需要对XXL-JOB的调度中心与执行器交互机制有清晰认识。