当前位置: 代码网 > it编程>软件设计>算法 > 【漏洞复现】CVE-2004-2761:使用弱哈希算法签名的 SSL 证书(SSL Certificate Signed Using Weak Hashing Algorithm)

【漏洞复现】CVE-2004-2761:使用弱哈希算法签名的 SSL 证书(SSL Certificate Signed Using Weak Hashing Algorithm)

2024年08月06日 算法 我要评论
本次复现是针对编号为CVE-2004-2761的漏洞,由于条件有限,本次复现通过创建自签名证书进行操作。解决证书链中的 SSL 证书使用弱哈希算法进行签名的问题。

1 环境搭建

本次复现环境在linux平台下使用nginx进行环境的搭建,通过openssl组件生成自签名证书,并在nginx配置文件中进行加载,最后使用nussus社区版进行漏洞扫描测试。

类型名称版本
平台ubuntu20.04.6 lts
中间件nginx1.18.0-0ubuntu1.4
证书工具openssl1.1.1f-1ubuntu2.19
漏扫工具nessus社区版10.5.4 (#13) linux
主机ip172.30.103.52/

1. 安装nginx

sudo apt install nginx

安装好后访问地址:http://172.30.103.52,弹出nginx欢迎页(如下图)即安装成功。
在这里插入图片描述
2. 安装openssl

sudo apt isntall opensll

安装完成后执行openssl version,弹出版本好即安装成功。
注意:这里我用的是1.1.1版本,在3.0.0以上的高版本并没有进行测试。高版本可能存在将一些弱密码配置的参数给删除的情况。

2 创建 ssl 证书

创建使用 sha1 散列的ssl证书
命令如下:

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt -sha1 -days 365

以下是此命令每个部分的作用的细分:

命令执行后,系统会询问您一些有关服务器的问题,以便将信息正确嵌入到证书中。

最重要的一行是请求common name (e.g. server fqdn or your name). 需要输入与您的服务器相关联的域名。

由于我们是自签名证书做漏洞复现测试,这里为了方便我是直接回车。并没有详细填写。

整个提示将如下所示:

输入完成后,创建的证书文件和私钥文件都将放置在该/etc/ssl目录的相应子目录中。
证书:/etc/ssl/certs/nginx-selfsigned.crt
私钥:/etc/ssl/private/nginx-selfsigned.key

3 配置 nginx 以使用 ssl

1. 打开nginx的默认配置文件。

sudo vim /etc/nginx/nginx.conf

嵌入以下内容

 server {
                listen 443 ssl;
                server_name localhost;
                ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
                ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
}

如图所示:
在这里插入图片描述
2. 检查配置文件是否正确。

sudo nginx -t 

输出如下则表示正确。

3. 重新加载nginx配置文件,使其生效。

sudo nginx -s reload

4 使用漏扫工具测试

  1. 打开浏览器,输入本机nginx服务地址 https://172.30.103.52
    由于是自签名证书会收到警告,因为您创建的证书不是由您浏览器的受信任证书颁发机构之一签署的。直接点高级,然后访问即可。

在这里查看证书所使用的签名算法,可以看出正是我们之前创建的sha1.
在这里插入图片描述
在这里插入图片描述

2. 使用nessus对172.30.103.52这个ip进行扫描。发现漏洞问题如下:
在这里插入图片描述在这里插入图片描述
到这里我们就算复现成功。

5 漏洞修复

1. 重新制作强密码哈希算法的证ssl证书,还是使用之前的命令。

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt -sha256 -days 365

对比之前的命令主要是将-sha1替换为-sha256

2. 再次加载nginx配置。

nginx -s reload

3. 再次查看证书签名算法,已经变为sha256.
在这里插入图片描述
4. 再次使用nessus进行扫描。结果如下,可以看见弱密码的漏洞已经被修复。只剩下了自签名证书的漏洞问题。
在这里插入图片描述

本次复现漏洞已经全部结束,对您有帮助的可以点个关注。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com