【Nacos漏洞修复】Nacos未授权访问漏洞(CVE-2021-29441)

本文详细描述了Nacos中的认证漏洞,指出在某些版本中,由于简单的用户代理判断逻辑,可能导致未授权访问。解决办法包括升级至最新版本并开启鉴权,以保护敏感信息。
摘要由CSDN通过智能技术生成

漏洞描述

该漏洞发生在nacos在进行认证授权操作时,会判断请求的user-agent是否为”Nacos-Server”,如果是的话则不进行任何认证。开发者原意是用来处理一些服务端对服务端的请求。但是由于配置的过于简单,并且将协商好的user-agent设置为Nacos-Server,直接硬编码在了代码里,导致了漏洞的出现。利用这个未授权漏洞,攻击者可以获取到用户名密码等敏感信息,还可以进行任意操作,包括创建新用户并进行登录后操作。

影响范围

<= Nacos 2.0.0-ALPHA.1

< Nacos 1.4.1

解决方法

1.升级Nacos为最新版本

(1)查看当前Nacos的版本

命令:curl -X GET 'http://localhost:8848/nacos/v1/console/server/state'

(2)升级Nacos

参考官方:Nacos 2.0 升级文档

2.开启Nacos鉴权

(1)测试不开启Nacos鉴权

修改Nacos的配置文件application.properties,默认Nacos的鉴权配置是false。如下所示:

### 关闭鉴权
nacos.core.auth.enabled=false

### 关闭使用user-agent判断服务端请求并放行鉴权的功能
nacos.core.auth.enable.userAgentAuthWhite=false

### 配置自定义身份识别的key(不可为空)和value(不可为空)
nacos.core.auth.server.identity.key=secret
nacos.core.auth.server.identity.value=secret

(2)测试是否能够拿到Nacos的账号密码

命令:curl -X GET 'http://localhost:8848/nacos/v1/auth/users?pageNo=1&pageSize=9'

结果真的可以拿到Nacos的账号密码,并且还可以自行添加账号密码,也是通过上面的命令进行。

添加账号密码接口:并设置账号密码为 test/test,大家感兴趣的话可以自行验证是否成功。
curl -X POST 'http://localhost:8848/nacos/v1/auth/users?username=test&password=test'

由此, 说明Nacos的这个漏洞太危险,需立即修复。

(3)测试开启Nacos鉴权

修改Nacos的配置文件application.properties,默认Nacos的鉴权配置是true

重启Nacos,先停止Nacos,再重新启动即可。

(4)验证

命令:curl -X GET 'http://localhost:8848/nacos/v1/auth/users?pageNo=1&pageSize=9'

说明:开启鉴权之后,再次请求这个接口信息,就不会出现账号密码的相关信息而是出现403的错误信息。

注意开启鉴权之后,在项目中也需要加入相关Nacos的配置信息(账号密码)。

参考鉴权官方文档:Authorization

到此,Nacos漏洞修复完成。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值