xxljob使用教程以及漏洞
字数 1703 2025-08-11 17:40:19
XXL-JOB 使用教程与安全漏洞分析
一、XXL-JOB 简介
XXL-JOB 是一个分布式任务调度平台,核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
二、系统架构
XXL-JOB 有两个核心模块:
1. 调度中心 (xxl-job-admin)
- 负责管理调度信息,按照调度配置发出调度请求
- 自身不承担业务代码,与任务解耦
- 支持可视化动态管理调度信息
- 功能包括:任务新建、更新、删除、GLUE开发、任务报警等
- 支持监控调度结果和执行日志
- 支持执行器 Failover
2. 执行器
- 负责接收调度请求并执行任务逻辑
- 专注于任务执行,开发和维护简单高效
- 接收"调度中心"的执行请求、终止请求和日志请求等
三、使用教程
1. 部署调度中心
- 访问地址: http://localhost:8080/xxl-job-admin
- 默认登录账号: admin/123456
2. 部署执行器项目
- 可直接部署执行器
- 也可将执行器集成到现有业务项目中
3. 新建任务
在调度中心上配置定时任务:
基础配置:
- 执行器: 绑定执行器,实现任务自动发现功能
- 任务描述: 任务描述信息
- 负责人: 任务负责人
- 报警邮件: 任务失败时通知的邮箱地址
触发配置:
- 调度类型:
- 无: 不主动触发
- CRON: 通过CRON表达式触发
- 固定速度: 固定间隔时间周期性触发
- 固定延迟: 从上次调度结束后开始计算延迟时间触发
任务配置:
- 运行模式:
- BEAN模式: 任务以JobHandler方式维护在执行器端
- GLUE模式(Java): 任务以Java源码方式维护在调度中心
- GLUE模式(Shell): 任务以shell脚本方式维护
- GLUE模式(Python): 任务以python脚本方式维护
- GLUE模式(PHP): 任务以php脚本方式维护
- GLUE模式(NodeJS): 任务以nodejs脚本方式维护
- GLUE模式(PowerShell): 任务以PowerShell脚本方式维护
四、RESTful API
XXL-JOB 提供跨平台、跨语言的RESTful API:
1. 调度中心 RESTful API
- 提供给执行器使用的API
- 包括执行器注册、任务结果回调等
2. 执行器 RESTful API
- 提供给调度中心使用的API
- 包括任务触发、任务终止、任务日志查询等
五、安全漏洞分析
1. XXL-JOB API未授权Hessian2反序列化漏洞
- 影响版本: <=2.0.2
- 可直接攻击调度中心
- 利用方式: 通过javax.el.ELProcessor执行RMI攻击
利用步骤:
- 创建恶意RMI服务
- 生成Hessian2序列化POC
- 通过Burp提交序列化数据(需设置Display as raw bytes)
2. XXL-JOB executor未授权访问漏洞
- 影响版本: <=2.2.0
- 漏洞存在于执行器Restful API的任务触发接口
3. XXL-JOB SSRF漏洞
- 影响版本: <=2.3.1
- 利用条件: 需要一个低权限账号获取XXL-JOB-ACCESS-TOKEN
- 可进一步利用执行器执行系统命令
利用步骤:
- 创建本地HTTP服务
- 创建低权限用户
- 获取XXL-JOB-ACCESS-TOKEN
- 利用执行器执行命令
4. XXL-JOB 跨站脚本漏洞(CVE-2022-29770)
- 影响版本: v2.3.0
- 漏洞位置: /xxl-job-admin/jobinfo
- 类型: 存储型XSS
5. XXL-JOB 信息泄露漏洞(CVE-2020-23811)
- 影响版本: 2.2.0
- 漏洞位置: job/admin/controller/UserController.java
- 未授权攻击者可获取敏感信息
六、安全建议
- 及时升级到最新版本
- 限制调度中心和执行器的访问权限
- 修改默认账号密码
- 关闭不必要的API接口
- 对用户输入进行严格过滤
- 定期进行安全审计
七、参考链接
- XXL-JOB 官方文档
- FreeBuf 安全文章
- CVE漏洞数据库