解析Nacos的API居然存在這么嚴(yán)重的漏洞
很多人使用Nacos其實并沒有真正的去讀過官網(wǎng),以至于忽視了很多重要的細(xì)節(jié),Nacos為我們提供了大量API,但是這些API默認(rèn)是沒有開啟認(rèn)證的,直接可以訪問,針對于這一點我們也都可以去驗證一下。下面我提供了兩個調(diào)用示例供大家參考,基于這一點Nacos登錄頁也明確提示Nacos部署到內(nèi)網(wǎng),不要部署到公網(wǎng),但是對于沒真正了解過Nacos,壓根也不知道有這個API,也不知道有開啟授權(quán)這回事,所以也就意識不到這個API暴露出去后果到底有多么嚴(yán)重!
官網(wǎng)API:https://nacos.io/zh-cn/docs/open-api.html

仔細(xì)看我們下載的nacos的登錄頁面,有一個特別大的紅字,
內(nèi)部系統(tǒng),不可暴露到公網(wǎng)。所以nacos一旦部署在公網(wǎng),風(fēng)險非常大!

一、調(diào)用API示例
1.1. 示例一:獲取配置
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos-config-client-dev-yaml&group=DEFAULT_GROUP"
如下配置是我們要獲取的配置:


開始訪問:

會發(fā)現(xiàn)直接通過API就可以拿到,而且API沒有任何認(rèn)證,我認(rèn)為這是一個很大的問題,那也就是意味著只要我知道你Nacos部署的地址以及端口,我就可以拿到你的配置。
我們有時候會往nacos當(dāng)中存儲一些數(shù)據(jù)庫相關(guān)信息,一旦被盜竊,后果不堪設(shè)想。當(dāng)然還好獲取配置的API當(dāng)中沒有namespace參數(shù),他只能查看public的。
但是對于服務(wù)發(fā)現(xiàn)相關(guān)的API還有命名空間相關(guān)API他是提供了namespace參數(shù)的。
1.2. 示例二:刪除命名空間

這里我專門創(chuàng)建了一個test命名空間,并且空間還有配置文件。

直接調(diào)用會驚訝的發(fā)現(xiàn),竟然可以刪除成功,而且還沒有攜帶任何token什么的。
curl -X DELETE "http://localhost:8848/nacos/v1/console/namespaces" -d "namespaceId=test"

然后再去查看會發(fā)現(xiàn)test命名空間已經(jīng)沒有了。

這個問題就比較嚴(yán)重了,要知道我們系統(tǒng)當(dāng)中都會依賴配置文件,一旦配置文件都被人刪除了,后果是什么應(yīng)該就不用我說了吧。
1.3. 示例三:獲取登錄用戶信息
http://127.0.0.1:8848/nacos/v1/auth/users/?pageNo=1&pageSize=9

1.4. Nacos及時響應(yīng)此問題
bug描述:https://github.com/advisories/GHSA-36hp-jr8h-556f
Nacos官網(wǎng)聲明在2021年一月份發(fā)布的1.4.1版本修復(fù)了此問題:https://github.com/alibaba/nacos/pull/4703
在Nacos低版本當(dāng)中,如上確實是一個bug,但是后來呢,Nacos針對于此也特意加了一個開關(guān),用來控制是否鑒權(quán)。
不管怎么說,我們一定要盡量用最新的版本,因為Nacos其實版本之間變化相對來說沒那么大,就算升級版本也很少會影響到我們自己的代碼。
二、服務(wù)端如何開啟鑒權(quán)?
官網(wǎng)介紹:https://nacos.io/zh-cn/docs/auth.html

官網(wǎng)給我們提供了Docker環(huán)境以及非Docker環(huán)境開啟鑒權(quán)的方式。
非Docker環(huán)境直接修改application.properties當(dāng)中的如下參數(shù):
### If turn on auth system: nacos.core.auth.enabled=true
注意:非Docker環(huán)境 鑒權(quán)開關(guān)是修改之后立馬生效的,不需要重啟服務(wù)端。
Docker環(huán)境直接啟動命令當(dāng)中添加如下參數(shù)即可:
-env NACOS_AUTH_ENABLE=true
開啟后再訪問API直接會403!

如果再想訪問API需要先訪問登錄接口,獲取到token,然后將token攜帶到參數(shù)訪問即可,如下:

三、開啟服務(wù)身份識別功能
這個主要是針對于Nacos集群而來的,開啟鑒權(quán)功能后,服務(wù)端之間的請求也會通過鑒權(quán)系統(tǒng)的影響。我理解的就是將每個集群的節(jié)點設(shè)置的identity.key和identity.value設(shè)置為一樣的,這樣就認(rèn)為鑒權(quán)通過了。

到此這篇關(guān)于Nacos的API居然存在這么嚴(yán)重的漏洞的文章就介紹到這了,更多相關(guān)Nacos API漏洞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot 動態(tài)配置郵箱發(fā)件人過程解析
這篇文章主要介紹了SpringBoot 動態(tài)配置郵箱發(fā)件人過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08
SpringBoot結(jié)果封裝和異常攔截的實現(xiàn)示例
SpringBoot 項目中,我們通常需要將結(jié)果數(shù)據(jù)封裝成特定的格式,以方便客戶端進(jìn)行處理,本文主要介紹了SpringBoot?優(yōu)雅的結(jié)果封裝和異常攔截,感興趣的可以了解一下2023-08-08
引入QQ郵箱發(fā)送驗證碼進(jìn)行安全校驗功能實現(xiàn)
最近遇到這樣的需求用戶輸入自己的郵箱,點擊獲取驗證碼,后臺會發(fā)送一封郵件到對應(yīng)郵箱中,怎么實現(xiàn)呢?下面小編給大家?guī)砹艘隥Q郵箱發(fā)送驗證碼進(jìn)行安全校驗功能,需要的朋友可以參考下2023-02-02
springboot3環(huán)境隔離的實現(xiàn)
在開發(fā)中,環(huán)境很多,本文主要介紹了springboot3環(huán)境隔離的實現(xiàn),能夠快速切換開發(fā)、測試、生產(chǎn)環(huán)境,具有一定的參考價值,感興趣的可以了解一下2024-03-03

