网络&信息安全:OpenSSH_7.4p1升级至OpenSSH_9.6p1 | ssh-agent远程代码执行漏洞(CVE-2023-38408)



💖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.***/releasenotes.html
https://www.openbsd.org/errata.html

参考资料: https://blog.qualys.***/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、启动tel***(防止无法登录主机)

!!!!!!!这里很关键:建议小心或者测试设备等先行验证。要不你就要跑现场或者机房了!!!!!!

为了确保在卸载openssh时不会导致无法登录主机,可以通过启动tel***服务、创建一个普通账号来提供备用登录方式。

开两个终端,防止升级中断无法连接。

1、设置tel***服务开机启动

systemctl enable tel***.socket

2、启动tel***服务

systemctl start tel***.socket

3、查看端口,看到23端口已打开

***stat -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、测试用tel***连接

tel*** 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) 
***piler: g*** -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 -DKE***AK1600_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]# ***FLAGS="-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.***/liu_chen_yang/article/details/133697104


💖The End💖点点关注,收藏不迷路💖
转载请说明出处内容投诉
CSS教程_站长资源网 » 网络&信息安全:OpenSSH_7.4p1升级至OpenSSH_9.6p1 | ssh-agent远程代码执行漏洞(CVE-2023-38408)

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买