这里写自定义目录标题
- 说明
- SSL/TLS协议信息泄露漏洞(CVE-2016-2183)
- 漏洞信息
- 解决办法
- 验证方法
- 修复步骤
- 说明
- 查询当前使用的openssl版本号
- 下载并安装新版本的openssl
- 替换nginx中使用的openssl到最新版
- sudo 漏洞 CVE-2021-3156
- 漏洞信息
- 影响版本
- 解决办法
- 验证方法
- 修复步骤
- OpenSSH ssh-agent 远程代码执行漏洞(CVE-2023-38408)
- 漏洞信息
- 影响版本
- 解决办法
- 修复步骤
- 1. 下载新版包
- 2. 开始升级
- liblzma/xz 官方库被植入后门漏洞(CVE-2024-3094)
- 漏洞信息
- 影响版本
- 解决办法
说明
此文章主要记录工作中遇到的漏洞以及修复过程。
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算法
- OpenSSL Security Advisory [22 Sep 2016]
链接:https://www.openssl.org/news/secadv/20160922.txt
请在下列网页下载最新版本:
https://www.openssl.org/source/ - 对于nginx、apache、lighttpd等服务器禁止使用DES加密算法
主要是修改conf文件 - Windows系统可以参考如下链接:
https://social.technet.microsoft.com/Forums/en-US/31b3ba6f-d0e6-417a-b6f1-d0103f054f8d/ssl-medium-strength-cipher-suites-supported-sweet32cve20162183?forum=ws2016
验证方法
根据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 进入此文件夹。
使用以下命令重新编译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.8.2 到版本 1.8.31sp12
- 从版本1.9.0 到版本 1.9.5sp1
解决办法
前往sudo官网下载最新版本的安装包升级。
验证方法
- 查看当前的sudo版本是否在受影响的版本范围内
sudo -V
2. 使用普通用户执行以下命令
sudoedit -s /
若出现 sudoedit: /: not a regular file 表示存在漏洞
修复步骤
- 去sudo官方下载最新的安装包,此处我下载的版本为 1.9.13p3
官网地址: 地址 - 将下载的压缩包上传到服务器的 /root下,并使用以下命令将压缩包解压
tar zxvf sudo-1.9.13p3.tar.gz
- 解压后得到文件夹sudo-1.9.13p3 ,将此文件夹复制到 /usr/share/doc/ 下
cp -r ~/sudo-1.9.13p3 /usr/share/doc/
- 进入 文件夹 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.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版本
2. 开始升级
注意:
- openssl必须版本必须大于等于1.1.1,建议先按照本文中的【SSL/TLS协议信息泄露漏洞(CVE-2016-2183)】升级openssl的版本
- 需要依赖gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel ,所以留意一下服务器中是否已经有相关依赖,没有则需要安装。
- 此处使用脚本进行安装,安装步骤请详细查看shell脚本。(需要看懂shell脚本,当然脚本里有输出提示)。脚本地址:centerOs7安装相关的应用脚本 中的 【更新openssh】 章节。
liblzma/xz 官方库被植入后门漏洞(CVE-2024-3094)
漏洞信息
xz 是一种通用的数据压缩格式,几乎存在于每个 Linux 发行版中,无论是社区项目还是商业产
品发行版。从 5.6.0 版本开始,在 xz 的上游 tarball 包中发现了恶意代码。通过一系列复杂的混淆
手段,liblzma 的构建过程从伪装成测试文件的源代码中提取出预构建的目标文件,然后用它来修改
liblzma 代码中的特定函数。这导致生成了一个被修改过的 liblzma 库,任何链接此库的软件都可能
使用它,从而拦截并修改与此库的数据交互。
影响版本
xz 和 liblzma 5.6.0~5.6.1 版本,可能包括的发行版 / 包管理系统有:
- List item
- Fedora 41 / Fedora Rawhide
- Debian Sid
- Alpine Edge
- x64 架构的 homebrew
- 滚动更新的发行版,包括 Arch Linux / OpenSUSE Tumbleweed
如果您的系统使用 systemd 启动 OpenSSH 服务器,您的 SSH 认证过程可能被攻击。非 x64 (amd64) 架构的系统不受影响。
解决办法
- 使用以下命令查看系统中的xz版本是否在影响版本的范围。如果在影响版本 5.6.0~5.6.1范围内,则说明有可能存在此漏洞。
xz --version
- 如果在漏洞影响版本范围内,则利用以下脚本进行排查是否存在后门
#!/bin/bash
# 设置shell。如果任何命令的退出状态码(返回值)不为0,脚本将立即退出。确保脚本在出现错误时立即停止执行非常有用,以防止错误的状态继续传播。如果尝试使用未定义的变量,脚本将产生错误并退出
set -eu
# 查找liblzma 所在路径
path="$(ldd $(which sshd) | grep liblzma | grep -o '/[^ ]*' )"
# 判断是否存在漏洞
if [ "${path}" == "" ];then
echo "不存在漏洞,脚本退出"
exit 1001;
fi
# 检查函数签名
if hexdump -ve '1/1 "%.2x"' "$path" | grep -q f30f1efa554889f54c89ce5389fb81e7000000804883ec28488954241848894c2410
then
echo "存在漏洞"
exit 1001;
else
echo "不存在漏洞"
exit 1001;
fi
- 如果存在漏洞,请升级至 5.6.4 版本。目前官方已经更新最新版本。
yum update
yum install xz-devel
rpm -q xz-devel