
CVE-2020-15778 的技术文章与概念验证(PoC),这是 OpenSSH scp(<=8.3p1)中的一个经过身份验证的命令注入漏洞,可通过文件路径中的反引号载荷实现远程代码执行。
邮箱地址:[email protected]
Linkedin:www.linkedin.com/in/chinmay-pandya
产品:Openssh
受影响组件:SCP
受影响版本:<=openssh-8.3p1
修复版本:-
scp 是一个用于在计算机之间复制文件的程序。它使用 SSH 协议。大多数 Linux 和 Unix 发行版默认包含该程序。
在复制文件到远程服务器时,文件路径会附加到本地 scp 命令的末尾。 例如,如果执行以下命令:
scp SourceFile user@host:directory/TargetFile
它将执行一个本地命令:
scp -t directory/TargetFile
在创建本地 scp 命令时,它没有对文件名进行清理。 攻击者可以传递一个包含反引号的有效载荷作为文件名,当本地 scp 命令执行时,本地 shell 也会执行该反引号有效载荷。
使用 scp 执行以下命令:
scp /sourcefile remoteserver:'`touch /tmp/exploit.sh`/targetfile'
执行此命令后,前往远程服务器,你将在 /tmp/ 目录中看到 exploit.sh 文件存在。在文件名中使用单引号很重要,可以防止有效载荷在本地 shell 中执行,或者使用像单引号这样的转义字符来防止有效载荷在本地 shell 中执行。
这是一个已验证身份的利用,需要有效的 SSH/SCP 凭据才能在远程服务器上执行命令
scp 命令是一个历史协议(称为 rcp),它依赖于那种参数传递方式,并且会遇到扩展问题。 尝试为 scp 模型添加“安全性”已被证明非常困难。所有“检测”和“防止”异常参数传递的尝试都很有可能破坏现有的工作流程。 是的,我们承认这种情况很糟糕。但在有普遍替代方案之前,我们不想破坏人们使用 scp 的简单模式。 如果用户担心,应该改用 rsync 或其他工具。