Nacos漏洞深入分析

一、Nacos漏洞修復

Nacos在項目即將發布的時候,曾出現過多個漏洞,這些漏洞都被及時修復。當你選擇Nacos作為配置中心/服務註冊中心,需要特別關注Nacos的漏洞狀況並及時進行升級。

升級Nacos的步驟如下:

  1. 備份Nacos服務器
  2. 下載新的Nacos版本
  3. 停止當前正在運行的Nacos服務
  4. 解壓新版本的Nacos文件到服務器上,並將備份數據拷貝到新的Nacos版本中
  5. 啟動新版本的Nacos服務

升級過程很簡單,但是要注意備份數據,以防數據丟失。

二、Nacos任意用戶添加漏洞

Nacos 2.0版本中有一個任意用戶添加的漏洞,可以使攻擊者任意添加用戶並分配用戶角色,給企業帶來重大風險。

這個漏洞的修復需要修改nacos-2.0.0\server\nacos-server-builder\nacos-2.0.0\nacos\naming\src\main\java\com\alibaba\nacos\naming\boot\nacospropertiesrefresher\NacosNamingRefreshScheduler.java這個文件。首先,找到以下源代碼:

if (StringUtils.isBlank(servers) && StringUtils.isBlank(standaloneServer)) {
    // if both servers and standaloneServer are blank
    servers = "localhost:8848";
}

這個源代碼會先判斷Nacos註冊中心的地址是否為空,如果都為空,則設置默認的地址為“localhost:8848”。為了解決漏洞,需要更改為:

if (StringUtils.isBlank(servers) && StringUtils.isBlank(standaloneServer)) {
    throw new NacosException("No server address found: servers:" + servers + ",standaloneServer:" + standaloneServer);
}

這樣一來,如果沒有配置Nacos註冊中心地址則會拋出異常,從而保證了安全性。

三、Nacos漏洞Getshell

Nacos註冊中心存在Getshell漏洞,攻擊者可以通過這個漏洞在服務器上執行任意命令,給企業帶來極大威脅。

攻擊者可以在配置文件中加入以下內容:

spring.datasource.platform=postgresql
db.num=1
db.url.0=jdbc:postgresql://localhost:5432/nacos?searchpath=public
db.user=root
db.password=root
&& ping any

當攻擊者訪問nacos:8848/nacos·ui/login頁面登錄時,便會觸發ping any,執行攻擊者插入的惡意代碼。

避免Getshell漏洞的方法是不讓攻擊者有權限訪問配置文件,或者將數據庫的url設置為只讀權限。

四、Nacos默認Token漏洞

Nacos默認Token漏洞是指當Nacos服務啟動時,如果沒有指定token,那麼就默認為一個固定的字符串,攻擊者只需要知道這個固定的字符串就可以進行攻擊。攻擊者可以訪問nacos:8848/nacos·ui/login頁面,輸入以下內容即可欺騙Nacos登錄:

username: nacos
password: && nacos

攻擊者登錄後可以執行任意操作,如刪除信息、修改信息等。

避免漏洞的方法是在啟動Nacos服務時指定token,或修改默認的token。

五、Nacos其他漏洞

除了上述幾個漏洞,Nacos還存在其他漏洞,如通過攻擊nacos:8848/nacos·ui/v1/cs/configs獲取敏感信息、攻擊nacos:8848/nacos·v1/ns/ip獲取敏感信息等。由於本文篇幅有限,不再贅述。企業使用Nacos時需要密切關注Nacos的安全漏洞情況並及時更新,同時對Nacos的使用要嚴格遵循安全規則,保證企業信息安全。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/157399.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-18 20:03
下一篇 2024-11-18 20:03

相關推薦

  • Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901解析

    本文將對Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901進行詳細解析,並提供相關代碼示例。 一、漏洞背景 Treck TCP/IP Stack是一…

    編程 2025-04-27
  • Python漏洞挖掘全指南

    本文將從多個方面詳細闡述Python漏洞挖掘的相關知識,幫助開發工程師了解並掌握漏洞挖掘的基礎知識和實戰技巧。 一、漏洞類型 漏洞是指誤用或設計上的錯誤,可導致產品、應用或系統中存…

    編程 2025-04-27
  • 深入解析Vue3 defineExpose

    Vue 3在開發過程中引入了新的API `defineExpose`。在以前的版本中,我們經常使用 `$attrs` 和` $listeners` 實現父組件與子組件之間的通信,但…

    編程 2025-04-25
  • Coremail 漏洞詳解

    Coremail是國內主流的企業郵件服務器軟件,2018年曝出多個漏洞。本文將詳細闡述Coremail漏洞的危害,漏洞種類和利用方法。同時提供完整的代碼示例,幫助讀者更加深入地了解…

    編程 2025-04-25
  • 深入理解byte轉int

    一、字節與比特 在討論byte轉int之前,我們需要了解字節和比特的概念。字節是計算機存儲單位的一種,通常表示8個比特(bit),即1字節=8比特。比特是計算機中最小的數據單位,是…

    編程 2025-04-25
  • 深入理解Flutter StreamBuilder

    一、什麼是Flutter StreamBuilder? Flutter StreamBuilder是Flutter框架中的一個內置小部件,它可以監測數據流(Stream)中數據的變…

    編程 2025-04-25
  • 深入探討OpenCV版本

    OpenCV是一個用於計算機視覺應用程序的開源庫。它是由英特爾公司創建的,現已由Willow Garage管理。OpenCV旨在提供一個易於使用的計算機視覺和機器學習基礎架構,以實…

    編程 2025-04-25
  • 深入了解scala-maven-plugin

    一、簡介 Scala-maven-plugin 是一個創造和管理 Scala 項目的maven插件,它可以自動生成基本項目結構、依賴配置、Scala文件等。使用它可以使我們專註於代…

    編程 2025-04-25
  • 深入了解LaTeX的腳註(latexfootnote)

    一、基本介紹 LaTeX作為一種排版軟件,具有各種各樣的功能,其中腳註(footnote)是一個十分重要的功能之一。在LaTeX中,腳註是用命令latexfootnote來實現的。…

    編程 2025-04-25
  • 深入理解Python字符串r

    一、r字符串的基本概念 r字符串(raw字符串)是指在Python中,以字母r為前綴的字符串。r字符串中的反斜杠(\)不會被轉義,而是被當作普通字符處理,這使得r字符串可以非常方便…

    編程 2025-04-25

發表回復

登錄後才能評論