SaltStack漏洞复现
SaltStack介绍
SaltStack是一款Python开发的开源配置管理工具;
可用来发现、监控、响应、协调、自动化管理本地、混合、云和IOT资产;
其最主要的差异是主从模式,分为master和minions(slave);
经过配置之后master可以管理成千上万个minions;
master安装的是服务端组件salt-mater,minions安装的是salt-minion;
Salt使用基于ZeroMQ的强大异步网络拓扑,主要是为实现最快的通信;
Salt Master运行2个网络服务,ZeroMQ PUB系统,默认运行在4505端口;
ZeroMQ REP系统,用于与Salt Minion进行双向通信,默认运行在4506端口;
Salt客户端(salt命令)发送的命令将通过ZeroMQ PUB/SUB广播给各个Salt Minion。前提是Salt Minion配置了Mater,并且Salt Master通过salt-key命令信任了对应的Salt Minion。建立连接之后,Salt Minion可以接收到广播命令,并且执行;
PUB/SUB是单向通信,因此一旦广播结束,Master服务器上的PUB接口就不会再与Minion进行任何通信。Minion在运行命令之后,通过REP端口(4506)将命令的返回数据发回Master。
SaltStack漏洞介绍
近日,国外安全团队发现了多个SaltStack的漏洞,其中包含2个严重漏洞,身份验证绕过漏洞(CVE-2020-11651)和目录遍历漏洞(CVE-2020-11652)。
CVE-2020-11651(身份验证绕过漏洞)
ClearFuncs类处理未经身份验证的请求,并且无意中公开了_send_pub()方法,该方法可用于直接在master服务器上创建消息队列,此类消息可用于触发minions以root身份运行任意命令。
ClearFuncs类还公开了_prep_auth_info()方法,该方法返回用于验证master服务器上本地root用户命令的“root key”。可以使用此“root key”在主服务器上远程调用管理命令。这种无意的暴露为远程未经身份验证的攻击者提供了与salt-master相同的根访问权限。因此未经身份验证的远程攻击者可以使用此漏洞执行任意命令。
CVE-2020-116512(目录遍历漏洞)
wheel模块包含在特定目录路径下读取和写入文件的命令。这些函数的输入参数与目标目录连接在一起,生成的路径未规范化处理,从而绕过了预期的路径限制。
salt.tokens.localfs类的get_token()方法(由ClearFuncs类暴露给未经身份验证的攻击者)无法清除token输入参数,该参数随后用作文件名,从而允许插入“ ..”路径元素并读取预期目录之外的文件。
受漏洞影响的SaltStack版本
SaltStack Salt<2019.2.4
SaltStack Salt<300.2
漏洞检测
相关用户可通过下列命令查看当前SaltStack版本,以判断是否在受影响范围内。
salt --versions-report
漏洞复现
靶机:unbutu ip:192.168.28.129
攻击机:kali ip:192.168.28.128
在unbutu里安装环境
docker pull vulfocus/saltstack-cve_2020_11651
启动
docker run -d -p 4506:4506 -p 4505:4505 vulfocus/saltstack-cve_2020_11651
查看环境
docker images
docker ps
下载poc
https://github.com/jasperla/CVE-2020-11651-poc
python支持库 salt
切记使用linux安装
推荐使用kali
salt版本推荐3000.1
这里有个大坑
Kali里面pip默认安装的salt是3000.2版本的
而漏洞版本是3000.1版本 所以就需要我们手动安装3000.1版本
Salt3000.1
下载地址: https://pypi.org/simple/salt/ps:一定要下载3000.1版本
将压缩包拖进kali里面 使用tar -xvzf 进行解压
解压完开始安装 运行 python3 setup.py install命令安装 安装完即可
开始运行exp 可以看见key
成功读取文件
成功拿到shell 走上人生巅峰
修复方案
1、将Salt Master默认监听端口(默认4505 和 4506)设置为禁止对公网开放,或仅对可信对象开放。将SaltStack升级至安全版本以上,升级前建议做好快照备份,设置SaltStack为自动更新,及时获取相应补丁。
2、Redis 非必要情况不要暴露在公网,使用足够强壮的Redis口令。
3、参考以下步骤手动检查并清除H2Miner挖矿木马:
(1).kill掉进程中包含salt-minions和salt-store文件的进程,文件has为a28ded80d7ab5c69d6ccde4602eef861、8ec3385e20d6d9a88bc95831783beaeb;
(2).删除文件/tmp/salt-minions、/tmp/salt-store;
(3).将恶意脚本服务器地址217.12.210.192、206.189.92.32进行封禁;
(4).升级SaltStack到2019.2.4或3000.2,防止病毒再次入侵。