前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenSSH 命令注入漏洞(CVE-2020-15778)

OpenSSH 命令注入漏洞(CVE-2020-15778)

原创
作者头像
一觉睡到小时候
发布2022-11-16 17:10:57
2.5K0
发布2022-11-16 17:10:57
举报
文章被收录于专栏:国产程序员国产程序员

详细描述

OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。

OpenSSH 9.0p1及之前版本中的scp的scp.c文件存在命令注入漏洞。该漏洞源于外部输入数据构造可执行命令过程中,网络系统或产品未正确过滤其中的特殊元素。攻击者可利用该漏洞执行非法命令。

解决办法

临时缓解措施

可以禁用scp,改用rsync等缓解风险(可能会导致小文件机器内拷贝变慢)

禁止scp
代码语言:txt
复制
rpm -qa|grep openssh-*
yum remove openssh-clients -y

删除了openssh-clients后,再执行scp,就会报下面的错误:

-bash: scp: command not found

但删除该包也会导致其他ssh命令不可用

移除scp执行权限
代码语言:txt
复制
whereis scp #查找scp所在目录
cd /usr/local/bin
chmod -x scp #移除执行权限
ll scp

这时远程执行scp命令时也会提示权限不够

升级OpenSSH

开启telnet
代码语言:txt
复制
记得先测试telnet能否成功登录再升级openssh不然ssh会挂掉,当然如果你是在本机升级可以省略这一步

yum install telnet-server telnet

systemctl start telnet.socket
systemctl enable telnet.socket

lsof -i:23

#开放防火墙策略

firewall-cmd --zone=public --add-port=23/tcp --permanent
备份旧的ssh
代码语言:txt
复制
#查询ssh目录

whereis sshd

mv /usr/sbin/sshd /usr/sbin/sshd.bak

whereis ssh

mv /usr/bin/ssh /usr/bin/ssh.bak

whereis ssh-keygen
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
卸载旧的openssh-server
代码语言:txt
复制
yum  remove openssh-server
安装新的openssh-server
代码语言:txt
复制
# 安装依赖
yum install zlib-devel openssl-devel -y
cd /usr/local

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.1p1.tar.gz

tar -zxvf   openssh-9.1p1.tar.gz

cd  openssh-9.1p1

./configure

make & make install

# 设置全局使用
cp /usr/local/sbin/sshd  /usr/sbin
cp /usr/local/bin/ssh /usr/bin
cp /usr/local/bin/ssh-keygen /usr/bin/
查看新本版
代码语言:txt
复制
ssh -V
启动ssh 并设置开机自启
代码语言:txt
复制
cp /usr/local/openssh-9.1p1/contrib/redhat/sshd.init /etc/init.d/sshd

/etc/init.d/sshd restart

systemctl status sshd

systemctl enable sshd
安装后可能会导致ssh无法连接,解决办法如下
代码语言:txt
复制
第一步:
cp /usr/local/openssh-9.1p1/sshd_config /etc/ssh/

第二步:
vim /etc/ssh/sshd_config

找到PermitRootLogin without-password 改成PermitRootLogin yes

第三步:
vim /etc/init.d/sshd
在48行下面加上 OPTIONS="-f /etc/ssh/sshd_config"

第四步:
systemctl daemon-reload
systemctl restart sshd
image
image

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 详细描述
  • 解决办法
    • 临时缓解措施
      • 禁止scp
      • 移除scp执行权限
    • 升级OpenSSH
      • 开启telnet
      • 备份旧的ssh
      • 卸载旧的openssh-server
      • 安装新的openssh-server
      • 查看新本版
      • 启动ssh 并设置开机自启
      • 安装后可能会导致ssh无法连接,解决办法如下
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档