【漏洞修复】 CVE Linux 系统应用漏洞修复笔记

这里写自定义目录标题

  • 说明
  • SSL/TLS协议信息泄露漏洞(CVE-2016-2183)
    • 漏洞信息
      • 解决办法
    • 验证方法
    • 修复步骤
      • 说明
      • 查询当前使用的openssl版本号
      • 下载并安装新版本的openssl
      • 替换nginx中使用的openssl到最新版
  • sudo 漏洞 CVE-2021-3156
    • 漏洞信息
    • 影响版本
    • 解决办法
    • 验证方法
    • 修复步骤
  • OpenSSH ssh-agent 远程代码执行漏洞(CVE-2023-38408)
    • 漏洞信息
    • 影响版本
    • 解决办法
    • 修复步骤
      • 1. 下载新版包
      • 2. 开始升级

说明

此文章主要记录工作中遇到的漏洞以及修复过程。

SSL/TLS协议信息泄露漏洞(CVE-2016-2183)

漏洞信息

名称 SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】【可验证】
详细描述 TLS是安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。TLS, SSH, IPSec协商及其他产品中使用的IDEA、DES及Triple DES密码或者3DES及Triple 3DES存在大约四十亿块的生日界,这可使远程攻击者通过Sweet32攻击,获取纯文本数据。
危险程度说明 攻击者可以远程执行任意命令或者代码,或对系统进行远程拒绝服务攻击。
发现日期 2016-08-31
CVE编号 CVE-2016-2183
CNVD编号 CNVD-2016-06765
CNNVD编号 CNNVD-201608-448
CNCVE编号 CNCVE-20162183

解决办法

建议:避免使用IDEA、DES和3DES算法

  1. OpenSSL Security Advisory [22 Sep 2016]
    链接:https://www.openssl.org/news/secadv/20160922.txt
    请在下列网页下载最新版本:
    https://www.openssl.org/source/
  2. 对于nginx、apache、lighttpd等服务器禁止使用DES加密算法
    主要是修改conf文件
  3. Windows系统可以参考如下链接:
    https://social.technet.microsoft.com/Forums/en-US/31b3ba6f-d0e6-417a-b6f1-d0103f054f8d/ssl-medium-strength-cipher-suites-supported-sweet32cve20162183?forum=ws2016

https://docs.microsoft.com/zh-cn/troubleshoot/windows-server/windows-security/restrict-cryptographic-algorithms-protocols-schannel

验证方法

根据SSL/TLS协议信息泄露漏洞(CVE-2016-2183)原理,通过发送精心构造的数据包到目标服务,根据目标的响应情况,验证漏洞是否存在

修复步骤

说明

原本我的nginx中使用的openssl 版本号为:1.0.2s
升级后的openssl 版本号为:1.1.1K

查询当前使用的openssl版本号

使用命令查询当前版本号

openssl version

在这里插入图片描述

下载并安装新版本的openssl

进入到 /usr/local 目录,使用以下命令下载最新版的安装包到此目录下。

wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz --no-check-certificate

解压安装包

tar xvf openssl-1.1.1k.tar.gz 

进入解压出来的文件夹

 cd /usr/local/openssl-1.1.1k/

编译安装

./config && make && make install
echo "/usr/local/lib64/" >> /etc/ld.so.conf
ldconfig

将旧的备份

mv /usr/bin/openssl /usr/bin/openssl.old

创建文件软连接

ln -sv /usr/local/bin/openssl /usr/bin/openssl

结束后在此查询openssl的版本号,验证是否升级成功

替换nginx中使用的openssl到最新版

进入nginx的安装目录下的sbin下,运行命令查看详细信息

./nginx -V

在这里插入图片描述
并从详细信息的onfigure arguments中获取到旧版本的详细配置参数,我的参数如下:

--prefix=/usr/local/nginx --with-http_sub_module --with-http_stub_status_module --with-pcre --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_realip_module --with-stream --with-stream_ssl_module --with-openssl=/usr/local/openssl-1.0.2s

找到nginx的 configure 文件。以下是我的nginx目录结构.configure 文件在 nginx-1.23.2 中,cd nginx-1.23.2 进入此文件夹。
【漏洞修复】 CVE Linux 系统应用漏洞修复笔记_第1张图片
使用以下命令重新编译nginx.

# 注意:
# --prefix 之后的配置内容和旧版的一致。但是 --with-openssl 部分必须改成新的版本号。

./configure   --prefix=/usr/local/nginx --with-http_sub_module --with-http_stub_status_module --with-pcre --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_realip_module --with-stream --with-stream_ssl_module --with-openssl=/usr/local/openssl-1.1.1k && make && make install

等待编译完成。
完成后,关闭原来运行着的nginx


pkill -9 nginx

进入安装路径下的sbin 目录下启动nginx

./nginx

启动完成后查看nginx的版本信息,验证nginx的openssl版本号是否已经升级成功。

将以下的内容替换 nginx 的443配置中的 ssl_ciphers 内容,禁用指定算法

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!3DES:!ADH:!RC4:!DH:!DHE:!IDEA:!DES;

进入安装路径下的sbin 目录下重新加载nginx配置

./nginx -s reload

sudo 漏洞 CVE-2021-3156

漏洞信息

此漏洞是在sudo中存在一个基于堆的缓冲区溢出漏洞,非root用户可以使用sudo命令来以root用户身份执行命令.sudo在参数中转义反斜杠导致堆缓冲区溢出.攻击者在不需要获得root密码的情况下取得root权限。

影响版本

  1. 从版本1.8.2 到版本 1.8.31sp12
  2. 从版本1.9.0 到版本 1.9.5sp1

解决办法

前往sudo官网下载最新版本的安装包升级。

验证方法

  1. 查看当前的sudo版本是否在受影响的版本范围内
sudo -V

在这里插入图片描述
2. 使用普通用户执行以下命令

sudoedit -s /

若出现 sudoedit: /: not a regular file 表示存在漏洞

修复步骤

  1. 去sudo官方下载最新的安装包,此处我下载的版本为 1.9.13p3
    官网地址: 地址
    【漏洞修复】 CVE Linux 系统应用漏洞修复笔记_第2张图片

  2. 将下载的压缩包上传到服务器的 /root下,并使用以下命令将压缩包解压

tar zxvf sudo-1.9.13p3.tar.gz
  1. 解压后得到文件夹sudo-1.9.13p3 ,将此文件夹复制到 /usr/share/doc/
cp -r ~/sudo-1.9.13p3 /usr/share/doc/
  1. 进入 文件夹 sudo-1.9.13p3 中 执行以下命令.
    注意:-docdir= 之后的路径
./configure --prefix=/usr --libexecdir=/usr/lib --with-secure-path --with-all-insults --with-env-editor --docdir=/usr/share/doc/sudo-1.9.13p3 --with-passprompt="[sudo] password for %p: " && make && make install && ln -sfv libsudo_util.so.0.0.0 /usr/lib/sudo/libsudo_util.so.0
  1. 等待安装完成之后查询版本号为1.9.13p3 时,说明升级成功。
    在这里插入图片描述

OpenSSH ssh-agent 远程代码执行漏洞(CVE-2023-38408)

漏洞信息

OpenSSH ssh-agent 组件存在远程代码执行漏洞(CVE-2023-38408)。此漏洞允许远程攻击者在 OpenSSH 上执行任意命令。

影响版本

5.5 < OpenSSH ≤ 9.3p1

解决办法

升级最新为版本

修复步骤

1. 下载新版包

下载地址:官网下载地址
此处我下载的是openssh-9.4p1.tar.gz版本
【漏洞修复】 CVE Linux 系统应用漏洞修复笔记_第3张图片

2. 开始升级

注意:

  1. openssl必须版本必须大于等于1.1.1,建议先按照本文中的【SSL/TLS协议信息泄露漏洞(CVE-2016-2183)】升级openssl的版本
  2. 需要依赖gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel ,所以留意一下服务器中是否已经有相关依赖,没有则需要安装。
  3. 此处使用脚本进行安装,安装步骤请详细查看shell脚本。(需要看懂shell脚本,当然脚本里有输出提示)。脚本地址:centerOs7安装相关的应用脚本 中的 【更新openssh】 章节。

你可能感兴趣的:(linux,运维,服务器)