![e67875bc77f0e8a12b0bbfd849e899b7.png](https://i-blog.csdnimg.cn/blog_migrate/e9198707d114396f40a10791a3b1c804.jpeg)
0x01 简介
OpenSSH是SSH(Secure SHell)协议的免费开源实现。OpenSSH是个SSH的软件,linux/unix都用openssh软件提供SSH服务。scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
0x02 漏洞概述
该漏洞编号CVE-2020-15778。OpenSSH的8.3p1及之前版本中的scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令。目前绝大多数linux系统受影响。
0x03 影响版本
OpenSSH <= OpenSSH-8.3p1
0x04 环境搭建
未安装ssh,进行安装,安装命令如下:
已安装ssh:
使用ssh -V 查看版本信息,可以看到我这里使用的实验版本是Openssh_8.3p1。
![ed27228b8ce01df683ee0aa3d92d2975.png](https://i-blog.csdnimg.cn/blog_migrate/64150d529fa90f8be36ec9e452eaa88f.png)
0x05 漏洞复现
前提已知:
攻击机:192,168.152.130(kali)
目标机:192.168.152.133(centOs 7 64位)
需要知道目标ssh账号密码
1. 利用scp命令,用kali对centOs进行写文件,复制文件。
复制当前目录下的1.txt到目标的/tmp目录下,并且执行 touch /tmp/test.sh 的命令
![4d42f7590fc4582e0541f30493199815.png](https://i-blog.csdnimg.cn/blog_migrate/1316a5d4a457e7de5f0a5bbf1bf61826.png)
![8a851401f5d55bd6f0ddcf732bb8fb96.png](https://i-blog.csdnimg.cn/blog_migrate/d2468c619b33d413f8e2595aa1e563d3.png)
可以发现成功的将kali上面的文件传入到centOS上面也创建了text.txt文件,确认漏洞存在:
![4b9e12f9a43864f7a153c481c8755110.png](https://i-blog.csdnimg.cn/blog_migrate/b5d0fcdcd229bb24bba820cd1bd01c53.jpeg)
2. 执行命令:监听端口9999
命令:nc -lvvp 9999
![12aee85f135ea649d6dd319343b48b4a.png](https://i-blog.csdnimg.cn/blog_migrate/bd9c78a5dc79412fe0623ba07ba6bc84.png)
3.再打开kali的一个窗口进行反弹shell,
![929199d5d03eac3e11317bac804676fb.png](https://i-blog.csdnimg.cn/blog_migrate/2844d55d1d9b508e2fc6647975904cf4.png)
![e7ce50481ee98db9e38828d43ae37e9b.png](https://i-blog.csdnimg.cn/blog_migrate/d4e73775f2e584d743a54d7daa9c70ab.jpeg)
0x06 漏洞分析
在使用scp远程传输文件时,正常使用是这样的
scp SourceFile user@host:目录/TargetFile
在执行上面这条命令时会执行一个本地命令
scp -t 目录/TargetFile
对应源码如下:
![52671ba7dc8b1025718cba26f28f1983.png](https://i-blog.csdnimg.cn/blog_migrate/9c222950975174f4e04af5e93e78b52b.png)
源码地址:
https://github.com/openssh/openssh-portable/blob/a2855c048b3f4b17d8787bd3f24232ec0cd79abe/scp.c#L989
由此可以看到对用户输入的目录没有做过滤,导致攻击者可以利用反引号(` `)可以执行一些shell命令。
反引号在linux中的作用:
反引号(`)这个字符所对应的键一般位于键盘的左上角,不要将其同单引号(')混淆。反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。如例程中的`date -d '-1 day' +%Y%m%d`就是把这条命令的结果赋给变量OPDATE。
0x07 修复方式
1、周期性的更换密码或密钥
2、使用rsync代替scp
参考链接:
https://github.com/cpandya2909/CVE-2020-15778/