Nacos的API居然存在这么严重的漏洞

本文揭示了Nacos API默认未开启认证的安全隐患,包括配置获取、命名空间删除等操作可以直接执行。Nacos官方已修复此问题,并提供了开启鉴权的方法。介绍了如何在服务端开启鉴权以及服务身份识别功能,强调保持Nacos版本更新以确保系统安全。
摘要由CSDN通过智能技术生成

很多人使用Nacos其实并没有真正的去读过官网,以至于忽视了很多重要的细节,Nacos为我们提供了大量API,但是这些API默认是没有开启认证的,直接可以访问,针对于这一点我们也都可以去验证一下。下面我提供了两个调用示例供大家参考,基于这一点Nacos登录页也明确提示Nacos部署到内网,不要部署到公网,但是对于没真正了解过Nacos,压根也不知道有这个API,也不知道有开启授权这回事,所以也就意识不到这个API暴露出去后果到底有多么严重!

官网API:https://nacos.io/zh-cn/docs/open-api.html

在这里插入图片描述

仔细看我们下载的nacos的登录页面,有一个特别大的红字,内部系统,不可暴露到公网。所以nacos一旦部署在公网,风险非常大!

在这里插入图片描述

一、调用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"

如下配置是我们要获取的配置:

在这里插入图片描述

在这里插入图片描述

开始访问:

在这里插入图片描述

会发现直接通过API就可以拿到,而且API没有任何认证,我认为这是一个很大的问题,那也就是意味着只要我知道你Nacos部署的地址以及端口,我就可以拿到你的配置。

我们有时候会往nacos当中存储一些数据库相关信息,一旦被盗窃,后果不堪设想。当然还好获取配置的API当中没有namespace参数,他只能查看public的。但是对于服务发现相关的API还有命名空间相关API他是提供了namespace参数的

1.2. 示例二:删除命名空间

在这里插入图片描述
这里我专门创建了一个test命名空间,并且空间还有配置文件。

在这里插入图片描述

直接调用会惊讶的发现,竟然可以删除成功,而且还没有携带任何token什么的。

curl -X DELETE "http://localhost:8848/nacos/v1/console/namespaces" -d "namespaceId=test"

在这里插入图片描述

然后再去查看会发现test命名空间已经没有了。

在这里插入图片描述

这个问题就比较严重了,要知道我们系统当中都会依赖配置文件,一旦配置文件都被人删除了,后果是什么应该就不用我说了吧。

1.3. 示例三:获取登录用户信息

http://127.0.0.1:8848/nacos/v1/auth/users/?pageNo=1&pageSize=9

在这里插入图片描述

1.4. Nacos及时响应此问题

bug描述:https://github.com/advisories/GHSA-36hp-jr8h-556f
Nacos官网声明在2021年一月份发布的1.4.1版本修复了此问题:https://github.com/alibaba/nacos/pull/4703

在Nacos低版本当中,如上确实是一个bug,但是后来呢,Nacos针对于此也特意加了一个开关,用来控制是否鉴权。

不管怎么说,我们一定要尽量用最新的版本,因为Nacos其实版本之间变化相对来说没那么大,就算升级版本也很少会影响到我们自己的代码。

二、服务端如何开启鉴权?

官网介绍:https://nacos.io/zh-cn/docs/auth.html

在这里插入图片描述

官网给我们提供了Docker环境以及非Docker环境开启鉴权的方式。

非Docker环境直接修改application.properties当中的如下参数:

### If turn on auth system:
nacos.core.auth.enabled=true

注意:非Docker环境 鉴权开关是修改之后立马生效的,不需要重启服务端。

Docker环境直接启动命令当中添加如下参数即可:

-env NACOS_AUTH_ENABLE=true

开启后再访问API直接会403!

在这里插入图片描述

如果再想访问API需要先访问登录接口,获取到token,然后将token携带到参数访问即可,如下:

在这里插入图片描述

三、开启服务身份识别功能

这个主要是针对于Nacos集群而来的,开启鉴权功能后,服务端之间的请求也会通过鉴权系统的影响。我理解的就是将每个集群的节点设置的identity.keyidentity.value设置为一样的,这样就认为鉴权通过了。

在这里插入图片描述

Nacos 是一个开源的分布式配置中心和服务发现平台,它提供了丰富的 API 文档以帮助开发者更好地使用和了解 Nacos 的功能。 NacosAPI 文档分为两部分:配置管理 API 和服务发现 API。 配置管理 API 包括了对配置的创建、获取、删除等操作。通过这些 API,开发者可以方便地对配置进行管理和操作,实现动态配置的能力。例如,可以使用 createConfig API 创建一个配置,使用 getConfig API 获取一个配置,使用 deleteConfig API 删除一个配置。 服务发现 API 提供了服务注册、注销、查询等功能。通过这些 API,开发者可以将服务注册到 Nacos 中,并通过查询 API 来获取注册的服务信息。例如,可以使用 registerInstance API 将一个服务实例注册到 Nacos 中,使用 getInstance API 获取某个服务实例的详细信息。 除了基本的配置管理和服务发现功能外,Nacos API 还提供了其他一些有用的功能。例如,可以使用 getServerStatus API 来获取 Nacos 服务器的状态信息,可以使用 listenerConfig API 监听配置的变化,实现配置的即时通知。 在使用 Nacos API 文档时,开发者可以根据自己的需求选择合适的 API 进行调用,从而实现对 Nacos 的配置管理和服务发现的功能。同时,API 文档中还包含了详细的参数说明和示例代码,方便开发者理解和使用。 总之,Nacos API 文档提供了丰富的功能和详细的说明,可以帮助开发者更好地使用和了解 Nacos,实现配置管理和服务发现的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪 咖@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值