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攻击

利用步骤:

  1. 创建恶意RMI服务
  2. 生成Hessian2序列化POC
  3. 通过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
  • 可进一步利用执行器执行系统命令

利用步骤:

  1. 创建本地HTTP服务
  2. 创建低权限用户
  3. 获取XXL-JOB-ACCESS-TOKEN
  4. 利用执行器执行命令

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
  • 未授权攻击者可获取敏感信息

六、安全建议

  1. 及时升级到最新版本
  2. 限制调度中心和执行器的访问权限
  3. 修改默认账号密码
  4. 关闭不必要的API接口
  5. 对用户输入进行严格过滤
  6. 定期进行安全审计

七、参考链接

  • XXL-JOB 官方文档
  • FreeBuf 安全文章
  • CVE漏洞数据库
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漏洞数据库