网络&信息安全:OpenSSH_7.4p1升级至OpenSSH_9.6p1 | ssh-agent远程代码执行漏洞(CVE-2023-38408)
- 1.1 风险详情
- 1.2 操作环境
- 1.3 漏洞处理:OpenSSH升级
- 1、查看SSH客户端的版本信息
- 2、列出系统中openssl、openssh的软件包
- 3、启动telnet(防止无法登录主机)
- 4、备份SSL和SSH
- 5、开始升级SSl
- 6、开始升级SSH
- 1.4 验证升级结果
💖The Begin💖点点关注,收藏不迷路💖
|
1.1 风险详情
漏洞名称 :
OpenSSH ssh-agent远程代码执行漏洞(CVE-2023-38408)
风险等级:
高
高可利用:
否
CVE编号:
CVE-2023-38408
端口(服务):
22(OpenSSH)
风险描述:
【该漏洞通过版本比较方式检测,结果可能不准确,需要根据实际情况确认。】OpenSSH 的 ssh-agent 中存在了一个远程代码执行漏洞。此漏洞允许远程攻击者在存在漏洞的 OpenSSH的 forwarded ssh-agent 代理上执行任意命令。
风险影响:
影响openssh: 5.5版本(含)到9.3.p1版本(含)
解决方案:
该漏洞在OpenSSH 9.3p2版本中已得到修复。建议用户升级到最新版本。对于 OpenBSD,发布了一个勘误补丁来修复此问题。
链接如下:
https://www.openssh.com/releasenotes.html
https://www.openbsd.org/errata.html
参考资料:
https://blog.qualys.com/vulnerabilities-threat-research/2023/07/19/cve-2023-38408-remote-code-execution-in-opensshs-forwarded-ssh-agent
协议类型:
ssh
风险举证:
OpenSSH: 7.4
1.2 操作环境
##linux
[root@zyl-server zyl]# uname -a
Linux zyl-server 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@zyl-server zyl]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@zyl-server zyl]#
##ssh
[root@zyl-server zyl]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
[root@zyl-server zyl]#
1.3 漏洞处理:OpenSSH升级
1、查看SSH客户端的版本信息
[root@zyl-server zyl]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
[root@zyl-server zyl]#
2、列出系统中openssl、openssh的软件包
请注意,openssh软件包依赖于openssl软件包,因此在更新openssh时,openssl也要更新。
[root@zyl-server zyl]# rpm -qa | grep openssl
openssl-devel-1.0.2k-26.el7_9.x86_64
openssl-1.0.2k-26.el7_9.x86_64
openssl-libs-1.0.2k-26.el7_9.x86_64
xmlsec1-openssl-1.2.20-7.el7_4.x86_64
[root@zyl-server zyl]#
[root@zyl-server zyl]# rpm -qa | grep openssh
openssh-clients-7.4p1-21.el7.x86_64
openssh-7.4p1-21.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64
[root@zyl-server zyl]#
3、启动telnet(防止无法登录主机)
!!!!!!!这里很关键:建议小心或者测试设备等先行验证。要不你就要跑现场或者机房了!!!!!!
为了确保在卸载openssh时不会导致无法登录主机,可以通过启动telnet服务、创建一个普通账号来提供备用登录方式。
开两个终端,防止升级中断无法连接。
1、设置telnet服务开机启动
systemctl enable telnet.socket
2、启动telnet服务
systemctl start telnet.socket
3、查看端口,看到23端口已打开
netstat -tunlp|grep 23
4、开启防火墙允许访问23端口(没开防火墙跳过此步骤)
firewall-cmd --add-port=23/tcp --permanent firewall-cmd --reload
5、默认root无法远程访问,修改/etc/securetty
vi /etc/securetty #在末尾添加 pts/0 pts/1 pts/2 pts/3 pts/4
6、测试用telnet连接
telnet 192.168.234.10 23 输入用户 输入密码
4、备份SSL和SSH
5、开始升级SSl
下载ssl地址:
https://www.openssl.org/source/old/1.1.1/index.html
下载ssh地址:
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
1、上传安装包:
2、解压安装包
tar -xvf openssl-1.1.1w.tar.gz -C /usr/local/
tar -xvf openssh-9.6p1.tar.gz -C /usr/local/
3、编译安装openssl
cd /usr/local/openssl-1.1.1w/
##编译openssl
./config shared --prefix=/usr/local/openssl
##安装openssl
make -j 4
make install
4、设置openssl软连接
[root@zyl-server openssl-1.1.1w]# echo "/usr/local/openssl/lib/" >> /etc/ld.so.conf
[root@zyl-server openssl-1.1.1w]# ldconfig
[root@zyl-server openssl-1.1.1w]# mv /usr/bin/openssl /usr/bin/openssl.old
[root@zyl-server openssl-1.1.1w]# ln -sv /usr/local/openssl/bin/openssl /usr/bin/openssl
openssl/ openssl-1.1.1w/
[root@zyl-server openssl-1.1.1w]# ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
[root@zyl-server openssl-1.1.1w]# ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
##版本检查——————》OpenSSL 1.1.1w
[root@zyl-server openssl-1.1.1w]# openssl version -a
OpenSSL 1.1.1w 11 Sep 2023
built on: Tue Mar 5 07:04:18 2024 UTC
platform: linux-x86_64
options: bn(64,64) rc4(8x,int) des(int) idea(int) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG
OPENSSLDIR: "/usr/local/openssl/ssl"
ENGINESDIR: "/usr/local/openssl/lib/engines-1.1"
Seeding source: os-specific
[root@zyl-server openssl-1.1.1w]#
6、开始升级SSH
1、备份并卸载旧版openssh
## 备份
mv /etc/ssh/ /etc/ssh.bak
mv /usr/bin/ssh /usr/bin/ssh.bak
mv /usr/sbin/sshd /usr/sbin/sshd.bak
mv /etc/init.d/sshd /etc/init.d/sshd.bak
## 卸载
rpm -e --nodeps $(rpm -qa |grep openssh)
##检查
rpm -qa | grep openssh
2、编译安装openssh
cd /usr/local/openssh-9.6p1
# 编译openssh
[root@zyl-server openssh-9.6p1]# CCFLAGS="-I/usr/local/include" \
LDFLAGS="-L/usr/local/lib64" \
./configure \
--sysconfdir=/etc/ssh \
--with-zlib \
--with-ssl-dir=/usr/local/openssl
# 安装openssh
make -j 4
make install
3、复制配置文件
cp -rf /usr/local/sbin/sshd /usr/sbin/sshd
cp -rf /usr/local/bin/ssh /usr/bin/ssh
cp -rf /usr/local/bin/ssh-keygen /usr/bin/ssh-keygen
cp -ar /usr/local/openssh-9.6p1/contrib/redhat/sshd.init /etc/init.d/sshd
cp -ar /usr/local/openssh-9.6p1/contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
4、授权
chmod 600 /etc/ssh/*
5、允许root用户远程登录
cat >>/etc/ssh/sshd_config<<EOF
PermitRootLogin yes
X11Forwarding yes
PasswordAuthentication yes
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519-sha256@libssh.org
EOF
6、开启端口,赋予/etc/init.d/sshd权限
sed -i "s/^#Port/Port/g" /etc/ssh/sshd_config
chmod 755 /etc/init.d/sshd
7、启用sshd,生成服务配置文件,并重启服务
# 设置开机启用sshd,生成服务配置文件
systemctl enable sshd
# 重启服务
systemctl restart sshd
# 查看服务状态
systemctl status sshd
1.4 验证升级结果
已从 OpenSSH_7.4p1, OpenSSL 1.0.2k-fips
升级至 OpenSSH_9.6p1, OpenSSL 1.1.1w
[root@zyl-server openssh-9.6p1]# ssh -V
OpenSSH_9.6p1, OpenSSL 1.1.1w 11 Sep 2023
[root@zyl-server openssh-9.6p1]#
新建连接窗口,设备可正常连接:
参考文章:https://blog.csdn.net/liu_chen_yang/article/details/133697104
💖The End💖点点关注,收藏不迷路💖
|