等保整改之开启Nacos认证-漏扫发现我们使用Nacos时存在未授权访问的漏洞

news2025/1/9 2:08:03

背景

还是之前的一个小项目,部署在专网中,等保在做了一次漏扫后,说是有个高危漏洞要求整改。打开漏洞扫描报告后,总体网络风险级别为:比较危险: nacos未授权访问漏洞 ,漏洞详细信息如下:

NacosLeak.jpg

Nacos 未授权访问!?这还了得??

我们知道, Nacos 结合了注册中心与配置中心,本身在进入后台管理页面时也有一个认证(当然,我们的 Nacos 部署在专网中,并修改了默认密码),这让我们误以为后续的服务注册、配置读取与更新也是开启认证的。显然这就是自以为是的想法,这就是光顾着使用技术,而没有相对深入研究导致的安全事故。其实,官方文档中明确说明: Nacos 服务端默认是不需要登录的,这样会导致配置中心对外直接暴露。

试想一下,你的服务注册、配置读取与更新接口竟然是暴露的,没有任何认证拦截的;尤其是配置中心,通过 URL 可以直接访问到完整的配置信息,甚至包括各种服务的密码信息等,就问怕不怕。。

Nacos官方文档列出了以下服务发现与配置管理的接口:

  • 服务注册

curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'

  • 服务发现

curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'

  • 发布配置

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"

  • 获取配置

curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"

漏洞验证

在进行整改即开启 Nacos 认证之前,我想先尝试验证一下,是不是确实存在未授权的访问。就拿获取配置的接口为例,通过 curl 获取或者直接浏览器访问: http://nacosIP:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test

这里我不放结果了,确实可以直接访问到。。啥也不说了,安全第一,开始整改~~

安全整改

开启认证

Nacos 的配置文件 application.properties 中,开启认证(将nacos.core.auth.enabled的值从false改为true)。

nacos.core.auth.enabled=true

Note:鉴权开关是修改之后立马生效的,不需要重启 Nacos 服务。

验证漏洞

通过 curl 获取或者再次浏览器访问: http://nacosIP:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test ,发现接口403了,真棒。

其中,主要的错误信息是:unknown user!

Nacos403.jpg

com.alibaba.nacos.api.exception.NacosException: Request nacos server failed: 
        at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.requestToServer(NamingGrpcClientProxy.java:279) ~[nacos-client-2.0.3.jar:na]
        at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.queryInstancesOfService(NamingGrpcClientProxy.java:169) ~[nacos-client-2.0.3.jar:na]
        at com.alibaba.nacos.client.naming.remote.NamingClientProxyDelegate.queryInstancesOfService(NamingClientProxyDelegate.java:111) ~[nacos-client-2.0.3.jar:na]
        at com.alibaba.nacos.client.naming.core.ServiceInfoUpdateService$UpdateTask.run(ServiceInfoUpdateService.java:182) ~[nacos-client-2.0.3.jar:na]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_333]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_333]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_333]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_333]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_333]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_333]
        at java.lang.Thread.run(Thread.java:750) [na:1.8.0_333]
Caused by: com.alibaba.nacos.api.exception.NacosException: unknown user!
        at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.requestToServer(NamingGrpcClientProxy.java:271) ~[nacos-client-2.0.3.jar:na]
        ... 10 common frames omitted

获取Token

获取 TokenPOST 接口,这里通过 curl 携带用户名、密码来实现: curl -X POST '127.0.0.1:8848/nacos/v1/auth/login' -d 'username=nacos&password=nacos'

NacosToken.jpg

JWT

长这种样子的 Token 很是面熟呀,显然,这正是 JWT (JSON Web Token),我们顺手到 jwt.io 网站上解析下 Token 中包含哪些内容。

NacosJWT.jpg

携带令牌获取配置

携带令牌获取配置,成功。

NacosConfig.jpg

客户端配置

在所有的微服务客户端(但凡要注册至注册中心的服务都需要配置。我这里相关的服务有:网关服务、系统服务、认证服务、MinIO对象存储服务、WebSocket消息推送服务、定时任务服务、系统监控服务等)的配置文件 bootstrap.yml 中添加以下配置:

spring.cloud.nacos.username=your-username
spring.cloud.nacos.password=your-password

ClientConfig.jpg

Note:

  1. 看上去上面整改写了这好几个步骤,实际进行整改时,直接操作:开启认证客户端配置两步即可。
  2. 这里的整改是直接开启了认证功能,如果需要更细粒度的权限控制,可参考官方文档添加用户、角色、分配权限。

Reference

  • https://nacos.io/zh-cn/docs/auth.html

If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/21757.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux基本用户操作

1.查看用户名 指令:whoami 在Linux下查看本用户下的用户名,可以在普通用户和root超级用户下操作,如下: 其实,查看用户名也可以不用指令就能查看: 箭头所指的就是用户名,root用户名就是root。 2.…

第2章 持久化初始数据到指定表

004 AuthorityScopeEnum、Role、Topic、TaskInfoDto、TasksQz AuthorityScopeEnum:该枚举定义了6种当前程序的访问权限,前程序通过该枚举实例选定其中(NONE(-1:无任何权限)/Custom(1:自定义权限)/MyDepart(2:本部门权…

Typescript:(一)基本使用

TypeScript 定义:Typescript是拥有类型的JavaScript超集 它可以编译成普通,干净,完整的JavaScript代码 我们可以将TypeScript理解成加强版的JavaScript。 JavaScript所拥有的特性,TypeScript全部都是支持的,并且它紧…

Linux系统挂载命令mount(U盘、移动硬盘、光盘)

Linux系统不像windows系统可以自动识别加载新设备,Linux系统需要手动识别,手动加载。Linux中一切皆文件。文件通过一个很大的文件树来组织,文件树的根目录是:/,从根目开始录逐级展开。这些文件通过若干设备铺展开。 命…

BCG 对话框表格控件CBCGPGridCtrl显示子

1、1、MFC窗口中拖放Picture Control 2、 void CSimpleGridSampleDlg::_FillGrid() { CWaitCursor wait; // Create grid tree: CRect rectClient; GetClientRect(rectClient); m_wndGrid.Create(WS_CHILD | WS_VISIBLE, rectClient, this, ID_GRID); m_wndGri…

SAR回波的多普勒特性

专栏目录链接: SAR成像专栏目录 今天我们来看看SAR回波的多普勒特性。 首先推导下正侧视下SAR回波的多普勒频率公式,前提条件: 正侧视不考虑平台运动的不稳定性忽略地球曲率忽略地球自转的影响 根据多普勒效应原理可得SAR回波的多普勒频率(可以回顾下:《雷达导论PART IV.…

C++之二叉搜索树详解

文章目录前言一、二叉搜索树的概念二、二叉搜索树的操作1.节点类2.二叉搜索树类内部定义3.遍历操作4.构造函数5.拷贝构造函数6.赋值运算符重载7.析构函数8.插入函数非递归实现递归实现9.删除函数非递归实现递归实现10.查找函数非递归实现递归实现三、二叉搜索树的应用K模型KV模…

索引和事务

文章目录 1.索引的含义以及应用 2.索引的查看、创建 3.带主键的索引底层结构 4.事务的含义 5.事务的特性 6.JDBC 一.索引的含义及应用 1.索引我们可以认为是文章的目录,有了它,我们可以更加快速的 查看到我们想要查找的内容。 2.并不是说我们加了索引&…

一周侃 | 周末随笔及推荐

前言 每周一次的闲聊胡侃又来啦!这一周世界发生了许多大事,从举世瞩目的中美元首会晤到新的防疫政策二十条出来之后各地防疫政策的转变,再到俄乌冲突持续进行,联大通过俄罗斯赔偿计划……百年未有之大变局正加速演进,…

【k8s】8、service详解

文章目录一、Service详解1、Service介绍1.1 userspace模式1.2 iptables 模式1.3 ipvs模式2、Service类型3、Service使用3.1 实现环境准备3.2 Cluster类型的Service3.2.1 cluster类型的生成ip3.2.2 cluster类型不生成ip3.3 NodePort类型的service3.4 LoadBalancer类型的Service3…

【MySQL】MySQL体系结构与内部组件工作原理解析(原理篇)(MySQL专栏启动)

📫作者简介:小明java问道之路,专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

GEE两行代码下载任意范围影像python API

GEE三行代码下载任意范围影像 前不久,吴秋生博士更新了geemap,现在能更方便地下载影像了最新的下载再也不受有限的Google Drive、图像过大会自动分割、缓慢的下载速度影响了。 有兴趣的同学可以see this: https://geemap.org/notebooks/118_download_i…

蓝牙传输 LE Audio技术

蓝牙 蓝牙(Bluetooth)技术,实际上是一种短距离无线电技术,利用"蓝牙"技术,能够有效地简化掌上电脑、笔记本电脑和移动电话手机等移动通信终端设备之间的通信,也能够成功地简化以上这些设备与因特网Internet之间的通信&…

react(受控组件、生命周期、使用脚手架)

目录 使用脚手架 其他: 学习js: mdn 文档 MDN Web Docs 在react官方文档的 CDN 链接里下载最新的react版本react官网:React 官方中文文档 – 用于构建用户界面的 JavaScript 库 BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务 1. 受控组件…

ES6 入门教程 15 Proxy 15.3 Proxy.revocable() 15.4 this 问题 15.5 实例:Web 服务的客户端

ES6 入门教程 ECMAScript 6 入门 作者:阮一峰 本文仅用于学习记录,不存在任何商业用途,如侵删 文章目录ES6 入门教程15 Proxy15.3 Proxy.revocable()15.4 this 问题15.5 实例:Web 服务的客户端15 Proxy 15.3 Proxy.revocable() …

BLDC的列子2

1.三相采样电流的采集以u相为举例。 采集下桥臂I-V的电压。在除以采样电阻。就可以得到采样电流。但由于I-V的电压比较小。 需要一个放大电路把电压放大ADC才采集的到。 放大后的电压是AMP_IU.用ADC去采集这个电压。从而算出I_V的电压。 在电机停止的时候也会有微小的电压。…

Azure 深入浅出[2] --- App Service的部署并查看应用Log

假设读者已经申请了Azure的免费订阅的账户。如果想部署一个前端NodeJS的服务到Azure的App Service应该如何部署并查看应用程序本身的日志呢?笔者在这边文章就带大家快速看一下。 1.环境准备 安装Visual Studio Code以及在Visual Studio Code里面安装Azure App Ser…

文件上传漏洞 | iwebsec

文章目录靶场搭建文件上传漏洞前端JS过滤绕过文件名过滤绕过Content-Type过滤绕过文件头过滤绕过.htaccess文件上传文件截断上传条件竞争文件上传靶场搭建 参考文章https://juejin.cn/post/7068931744547733517出现个小问题,我的端口冲突了,所以换了一个…

Linux-unbuntu修改apt源

本文介绍如何将ubuntu的apt源修改为清华大学的镜像源 主要是修改/etc/apt/source.list的文件,并且使用sudo apt-get update来刷新源 修改apt源 unbuntu安装好之后,apt的源是us的,这样下载速度比较慢 apt源的地址放在/etc/apt/source.list中…

SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.14 ES 索引操作

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇4 数据层解决方案4.14 ES 索引操作4.14.1 索引操作4.14.2 小结4 数据…