解析Nacos的API居然存在這么嚴(yán)重的漏洞
很多人使用Nacos其實(shí)并沒有真正的去讀過官網(wǎng),以至于忽視了很多重要的細(xì)節(jié),Nacos為我們提供了大量API,但是這些API默認(rèn)是沒有開啟認(rèn)證的
,直接可以訪問,針對于這一點(diǎn)我們也都可以去驗(yàn)證一下。下面我提供了兩個調(diào)用示例供大家參考,基于這一點(diǎn)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)中,如上確實(shí)是一個bug,但是后來呢,Nacos針對于此也特意加了一個開關(guān),用來控制是否鑒權(quán)。
不管怎么說,我們一定要盡量用最新的版本,因?yàn)镹acos其實(shí)版本之間變化相對來說沒那么大,就算升級版本也很少會影響到我們自己的代碼。
二、服務(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é)點(diǎn)設(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使用SchedulingConfigurer實(shí)現(xiàn)多個定時任務(wù)多機(jī)器部署問題(推薦)
這篇文章主要介紹了SpringBoot使用SchedulingConfigurer實(shí)現(xiàn)多個定時任務(wù)多機(jī)器部署問題,定時任務(wù)多機(jī)器部署解決方案,方式一拆分,單獨(dú)拆分出來,單獨(dú)跑一個應(yīng)用,方式二是基于aop攔截處理(搶占執(zhí)行),只要有一個執(zhí)行,其它都不執(zhí)行,需要的朋友可以參考下2023-01-01Java實(shí)現(xiàn)注冊登錄與郵箱發(fā)送賬號驗(yàn)證激活功能
這篇文章主要介紹了Java實(shí)現(xiàn)注冊登錄與郵箱發(fā)送賬號驗(yàn)證激活功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-12-12Springboot入門案例及部署項(xiàng)目的詳細(xì)過程
Spring Boot是由Pivotal團(tuán)隊提供的全新框架,其設(shè)計目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程,本文給大家分享一個入門案例使用Springboot1.5.9搭建,具體配置部署過程跟隨小編一起看看吧2021-07-07JAVA基礎(chǔ)類庫之String類,StringBuffer類和StringBuilder類
這篇文章主要介紹了Java中基礎(chǔ)類庫的String類,StringBuffer類和StringBuilder類,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2021-09-09