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/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

发表回复

登录后才能评论