解析Nacos的API居然存在這么嚴(yán)重的漏洞
很多人使用Nacos其實(shí)并沒(méi)有真正的去讀過(guò)官網(wǎng),以至于忽視了很多重要的細(xì)節(jié),Nacos為我們提供了大量API,但是這些API默認(rèn)是沒(méi)有開(kāi)啟認(rèn)證的
,直接可以訪問(wèn),針對(duì)于這一點(diǎn)我們也都可以去驗(yàn)證一下。下面我提供了兩個(gè)調(diào)用示例供大家參考,基于這一點(diǎn)Nacos登錄頁(yè)也明確提示Nacos部署到內(nèi)網(wǎng),不要部署到公網(wǎng)
,但是對(duì)于沒(méi)真正了解過(guò)Nacos,壓根也不知道有這個(gè)API,也不知道有開(kāi)啟授權(quán)這回事,所以也就意識(shí)不到這個(gè)API暴露出去后果到底有多么嚴(yán)重!
官網(wǎng)API:https://nacos.io/zh-cn/docs/open-api.html
仔細(xì)看我們下載的nacos的登錄頁(yè)面,有一個(gè)特別大的紅字,
內(nèi)部系統(tǒng),不可暴露到公網(wǎng)
。所以nacos一旦部署在公網(wǎng),風(fēng)險(xiǎn)非常大!
一、調(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"
如下配置是我們要獲取的配置:
開(kāi)始訪問(wèn):
會(huì)發(fā)現(xiàn)直接通過(guò)API就可以拿到,而且API沒(méi)有任何認(rèn)證,我認(rèn)為這是一個(gè)很大的問(wèn)題,那也就是意味著只要我知道你Nacos部署的地址以及端口,我就可以拿到你的配置。
我們有時(shí)候會(huì)往nacos當(dāng)中存儲(chǔ)一些數(shù)據(jù)庫(kù)相關(guān)信息,一旦被盜竊,后果不堪設(shè)想。當(dāng)然還好獲取配置的API當(dāng)中沒(méi)有namespace參數(shù),他只能查看public的。
但是對(duì)于服務(wù)發(fā)現(xiàn)相關(guān)的API還有命名空間相關(guān)API他是提供了namespace參數(shù)的
。
1.2. 示例二:刪除命名空間
這里我專門(mén)創(chuàng)建了一個(gè)test命名空間,并且空間還有配置文件。
直接調(diào)用會(huì)驚訝的發(fā)現(xiàn),竟然可以刪除成功,而且還沒(méi)有攜帶任何token什么的。
curl -X DELETE "http://localhost:8848/nacos/v1/console/namespaces" -d "namespaceId=test"
然后再去查看會(huì)發(fā)現(xiàn)test命名空間已經(jīng)沒(méi)有了。
這個(gè)問(wèn)題就比較嚴(yán)重了,要知道我們系統(tǒng)當(dāng)中都會(huì)依賴配置文件,一旦配置文件都被人刪除了,后果是什么應(yīng)該就不用我說(shuō)了吧。
1.3. 示例三:獲取登錄用戶信息
http://127.0.0.1:8848/nacos/v1/auth/users/?pageNo=1&pageSize=9
1.4. Nacos及時(shí)響應(yīng)此問(wèn)題
bug描述:https://github.com/advisories/GHSA-36hp-jr8h-556f
Nacos官網(wǎng)聲明在2021年一月份發(fā)布的1.4.1版本修復(fù)了此問(wèn)題:https://github.com/alibaba/nacos/pull/4703
在Nacos低版本當(dāng)中,如上確實(shí)是一個(gè)bug,但是后來(lái)呢,Nacos針對(duì)于此也特意加了一個(gè)開(kāi)關(guān),用來(lái)控制是否鑒權(quán)。
不管怎么說(shuō),我們一定要盡量用最新的版本,因?yàn)镹acos其實(shí)版本之間變化相對(duì)來(lái)說(shuō)沒(méi)那么大,就算升級(jí)版本也很少會(huì)影響到我們自己的代碼。
二、服務(wù)端如何開(kāi)啟鑒權(quán)?
官網(wǎng)介紹:https://nacos.io/zh-cn/docs/auth.html
官網(wǎng)給我們提供了Docker環(huán)境以及非Docker環(huán)境開(kāi)啟鑒權(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)開(kāi)關(guān)是修改之后立馬生效的,不需要重啟服務(wù)端。
Docker環(huán)境直接啟動(dòng)命令當(dāng)中添加如下參數(shù)即可:
-env NACOS_AUTH_ENABLE=true
開(kāi)啟后再訪問(wèn)API直接會(huì)403!
如果再想訪問(wèn)API需要先訪問(wèn)登錄接口,獲取到token,然后將token攜帶到參數(shù)訪問(wèn)即可,如下:
三、開(kāi)啟服務(wù)身份識(shí)別功能
這個(gè)主要是針對(duì)于Nacos集群而來(lái)的,開(kāi)啟鑒權(quán)功能后,服務(wù)端之間的請(qǐng)求也會(huì)通過(guò)鑒權(quán)系統(tǒng)的影響。我理解的就是將每個(gè)集群的節(jié)點(diǎn)設(shè)置的identity.key
和identity.value
設(shè)置為一樣的,這樣就認(rèn)為鑒權(quán)通過(guò)了。
到此這篇關(guān)于Nacos的API居然存在這么嚴(yán)重的漏洞的文章就介紹到這了,更多相關(guān)Nacos API漏洞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java中Supplier知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于java中Supplier知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-04-04SpringBoot disruptor高性能隊(duì)列使用
這篇文章主要介紹了SpringBoot disruptor高性能隊(duì)列使用,Disruptor是英國(guó)外匯交易公司LMAX開(kāi)發(fā)的一個(gè)高性能隊(duì)列,研發(fā)的初衷是解決內(nèi)存隊(duì)列的延遲問(wèn)題2023-02-02SpringBoot使用SchedulingConfigurer實(shí)現(xiàn)多個(gè)定時(shí)任務(wù)多機(jī)器部署問(wèn)題(推薦)
這篇文章主要介紹了SpringBoot使用SchedulingConfigurer實(shí)現(xiàn)多個(gè)定時(shí)任務(wù)多機(jī)器部署問(wèn)題,定時(shí)任務(wù)多機(jī)器部署解決方案,方式一拆分,單獨(dú)拆分出來(lái),單獨(dú)跑一個(gè)應(yīng)用,方式二是基于aop攔截處理(搶占執(zhí)行),只要有一個(gè)執(zhí)行,其它都不執(zhí)行,需要的朋友可以參考下2023-01-01Java實(shí)現(xiàn)注冊(cè)登錄與郵箱發(fā)送賬號(hào)驗(yàn)證激活功能
這篇文章主要介紹了Java實(shí)現(xiàn)注冊(cè)登錄與郵箱發(fā)送賬號(hào)驗(yàn)證激活功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-12-12Springboot入門(mén)案例及部署項(xiàng)目的詳細(xì)過(guò)程
Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程,本文給大家分享一個(gè)入門(mén)案例使用Springboot1.5.9搭建,具體配置部署過(guò)程跟隨小編一起看看吧2021-07-07java中字符串如何計(jì)算字節(jié)長(zhǎng)度
這篇文章主要介紹了java中字符串如何計(jì)算字節(jié)長(zhǎng)度,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10JAVA基礎(chǔ)類庫(kù)之String類,StringBuffer類和StringBuilder類
這篇文章主要介紹了Java中基礎(chǔ)類庫(kù)的String類,StringBuffer類和StringBuilder類,是Java入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2021-09-09