此文章主要记录工作中遇到的漏洞以及修复过程。
名称 | 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算法
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 version
进入到 /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的安装目录下的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中存在一个基于堆的缓冲区溢出漏洞,非root用户可以使用sudo命令来以root用户身份执行命令.sudo在参数中转义反斜杠导致堆缓冲区溢出.攻击者在不需要获得root密码的情况下取得root权限。
前往sudo官网下载最新版本的安装包升级。
sudo -V
sudoedit -s /
若出现 sudoedit: /: not a regular file 表示存在漏洞
tar zxvf sudo-1.9.13p3.tar.gz
cp -r ~/sudo-1.9.13p3 /usr/share/doc/
./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
OpenSSH ssh-agent 组件存在远程代码执行漏洞(CVE-2023-38408)。此漏洞允许远程攻击者在 OpenSSH 上执行任意命令。
5.5 < OpenSSH ≤ 9.3p1
升级最新为版本
下载地址:官网下载地址
此处我下载的是openssh-9.4p1.tar.gz版本
注意: