1 环境搭建
本次复现环境在linux平台下使用nginx进行环境的搭建,通过openssl
组件生成自签名证书,并在nginx
配置文件中进行加载,最后使用nussus
社区版进行漏洞扫描测试。
类型 | 名称 | 版本 |
---|---|---|
平台 | ubuntu | 20.04.6 lts |
中间件 | nginx | 1.18.0-0ubuntu1.4 |
证书工具 | openssl | 1.1.1f-1ubuntu2.19 |
漏扫工具 | nessus社区版 | 10.5.4 (#13) linux |
主机ip | 172.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 使用漏扫工具测试
- 打开浏览器,输入本机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进行扫描。结果如下,可以看见弱密码的漏洞已经被修复。只剩下了自签名证书的漏洞问题。
本次复现漏洞已经全部结束,对您有帮助的可以点个关注。
发表评论