概要:本次復(fù)現(xiàn)是針對編號為CVE-2004-2761的漏洞,由于條件有限,本次復(fù)現(xiàn)通過創(chuàng)建自簽名證書進(jìn)行操作。
問題描述:證書鏈中的 SSL 證書使用弱哈希算法進(jìn)行簽名。
1 環(huán)境搭建
本次復(fù)現(xiàn)環(huán)境在Linux平臺下使用Nginx進(jìn)行環(huán)境的搭建,通過Openssl
組件生成自簽名證書,并在Nginx
配置文件中進(jìn)行加載,最后使用Nussus
社區(qū)版進(jìn)行漏洞掃描測試。
類型 | 名稱 | 版本 |
---|---|---|
平臺 | Ubuntu | 20.04.6 LTS |
中間件 | Nginx | 1.18.0-0ubuntu1.4 |
證書工具 | Openssl | 1.1.1f-1ubuntu2.19 |
漏掃工具 | Nessus社區(qū)版 | 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
安裝完成后執(zhí)行openssl version
,彈出版本好即安裝成功。
注意:這里我用的是1.1.1版本,在3.0.0以上的高版本并沒有進(jìn)行測試。高版本可能存在將一些弱密碼配置的參數(shù)給刪除的情況。
2 創(chuàng)建 SSL 證書
創(chuàng)建使用 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
以下是此命令每個部分的作用的細(xì)分:
-openssl:這是用于創(chuàng)建和管理 OpenSSL 證書、密鑰和其他文件的基本命令行工具。
-req:此子命令指定我們要使用X.509證書簽名請求 (CSR) 管理。“X.509”是 SSL 和 TLS對其密鑰和證書管理所遵循的公鑰基礎(chǔ)設(shè)施標(biāo)準(zhǔn)。我們想創(chuàng)建一個新的 X.509 證書,所以我們使用這個子命令。
-x509:這通過告訴實用程序我們要制作自簽名證書而不是像通常發(fā)生的那樣生成證書簽名請求來進(jìn)一步修改前一個子命令。
-nodes:這告訴 OpenSSL 跳過使用密碼保護我們的證書的選項。當(dāng)服務(wù)器啟動時,我們需要 Nginx 能夠在沒有用戶干預(yù)的情況下讀取文件。密碼可以防止這種情況發(fā)生,因為我們必須在每次重新啟動后輸入它。
-days 365:此選項設(shè)置證書被視為有效的時間長度。我們在這里設(shè)置了一年。
-newkey rsa:2048:這指定我們要同時生成新證書和新密鑰。我們沒有在上一步中創(chuàng)建簽署證書所需的密鑰,因此我們需要將其與證書一起創(chuàng)建。該rsa:2048部分告訴它制作一個2048
位長的 RSA 密鑰。-keyout:這一行告訴 OpenSSL 在哪里放置我們正在創(chuàng)建的生成的私鑰文件。
-out:這告訴 OpenSSL 在哪里放置我們正在創(chuàng)建的證書。
-sha1:指定一種單向加密算法,這里選的是sha1.
命令執(zhí)行后,系統(tǒng)會詢問您一些有關(guān)服務(wù)器的問題,以便將信息正確嵌入到證書中。
最重要的一行是請求Common Name (e.g. server FQDN or YOUR name).
需要輸入與您的服務(wù)器相關(guān)聯(lián)的域名。
由于我們是自簽名證書做漏洞復(fù)現(xiàn)測試,這里為了方便我是直接回車。并沒有詳細(xì)填寫。
整個提示將如下所示:
#這是表示組織所在國家的兩個字母的代碼。
Country Name (2 letter code) [AU]:US
#這是組織所在州或省的全名。
State or Province Name (full name) [Some-State]:New York
#這是組織所在的城市。
Locality Name (eg, city) []:New York City
#這是頒發(fā)證書的組織或公司的法律名稱。
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Bouncy Castles, Inc.
#此字段允許您指定組織內(nèi)的特定部門或單元。
Organizational Unit Name (eg, section) []:Ministry of Water Slides
#這是將使用證書的服務(wù)器的完全限定域名(FQDN
Common Name (e.g. server FQDN or YOUR name) []:server_IP_address
#這是與負(fù)責(zé)服務(wù)器或證書的組織或個人相關(guān)的電子郵件地址。
Email Address []:admin@your_domain.com
輸入完成后,創(chuàng)建的證書文件和私鑰文件都將放置在該/etc/ssl目錄的相應(yīng)子目錄中。
證書:/etc/ssl/certs/nginx-selfsigned.crt
私鑰:/etc/ssl/private/nginx-selfsigned.key
3 配置 Nginx 以使用 SSL
1. 打開Nginx的默認(rèn)配置文件。
sudo vim /etc/nginx/nginx.conf
嵌入以下內(nèi)容
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
輸出如下則表示正確。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test issuccessful
3. 重新加載nginx配置文件,使其生效。
sudo nginx -s reload
4 使用漏掃工具測試
- 打開瀏覽器,輸入本機Nginx服務(wù)地址
https://172.30.103.52
由于是自簽名證書會收到警告,因為您創(chuàng)建的證書不是由您瀏覽器的受信任證書頒發(fā)機構(gòu)之一簽署的。直接點高級,然后訪問即可。
在這里查看證書所使用的簽名算法,可以看出正是我們之前創(chuàng)建的sha1.
2. 使用Nessus對172.30.103.52
這個IP進(jìn)行掃描。發(fā)現(xiàn)漏洞問題如下:
到這里我們就算復(fù)現(xiàn)成功。
5 漏洞修復(fù)
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. 再次查看證書簽名算法,已經(jīng)變?yōu)閟ha256.
4. 再次使用nessus進(jìn)行掃描。結(jié)果如下,可以看見弱密碼的漏洞已經(jīng)被修復(fù)。只剩下了自簽名證書的漏洞問題。文章來源:http://www.zghlxwxcb.cn/news/detail-685711.html
本次復(fù)現(xiàn)漏洞已經(jīng)全部結(jié)束,對您有幫助的可以點個關(guān)注。文章來源地址http://www.zghlxwxcb.cn/news/detail-685711.html
到了這里,關(guān)于【漏洞復(fù)現(xiàn)】CVE-2004-2761:使用弱哈希算法簽名的 SSL 證書(SSL Certificate Signed Using Weak Hashing Algorithm)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!