码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Nacos的API居然存在这么严重的漏洞


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

    目录

      • 一、调用API示例
        • 1.1. 示例一:获取配置
        • 1.2. 示例二:删除命名空间
        • 1.3. 示例三:获取登录用户信息
        • 1.4. Nacos及时响应此问题
      • 二、服务端如何开启鉴权?
      • 三、开启服务身份识别功能

    官网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"
    
    • 1

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

    在这里插入图片描述

    在这里插入图片描述

    开始访问:

    在这里插入图片描述

    会发现直接通过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"
    
    • 1

    在这里插入图片描述

    然后再去查看会发现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
    
    • 1
    • 2

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

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

    -env NACOS_AUTH_ENABLE=true
    
    • 1

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

    在这里插入图片描述

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

    在这里插入图片描述

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

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

    在这里插入图片描述

  • 相关阅读:
    算法通关村第十九关——最小路径和
    唯样商城:驱动器源极引脚的效果:双脉冲测试比较
    JavaScript之运算符、表达式、流程控制语句、if、for循环、Switch、continue和break
    如何解决Ubuntu系统域名解析失败的问题
    【 Vue 路由 跳转 路由守卫 】
    40+倍提升,详解 JuiceFS 元数据备份恢复性能优化之路
    B2主题优化:WordPress文章每次访问随机增加访问量
    Linux从0到1——Linux第一个小程序:进度条
    杨氏双缝干涉条纹matlab实现
    MySql和Oracle表分区
  • 原文地址:https://blog.csdn.net/weixin_43888891/article/details/126779676
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号