Nacos namespaces漏洞 未授权访问漏洞【原理扫描】

image.png

漏洞扫描发现该漏洞,可以不经过授权直接获取nacos的命名空间。

在浏览器输入:192.168.x .xxx:8848/nacos/v1/console/namespaces,会以JSON格式返回命名空间:


image.png

注意:如果已经在浏览器登录nacos,请清除缓存或用无痕模式验证。

修复方法有两个:
一个是升级nacos版本。但是nacos官方并不觉得这算漏洞,所以直到3.0.0之后的版本才对该漏洞进行修复。而升级3.0.0版本需要JDK17,表结构也和某些老版本不同,所以会引起比较大的麻烦;
另一个方案就是修改nacos源码。本文即采用该方案,并不复杂, 有些不得不修复的情况可以试试。

首先到下载对应版本的源码:https://github.com/alibaba/nacos/releases
到发布页面,找到自己对应的版本,下载sourcecode即可。我是2.2.3版本,就下载这个:

image.png

下载之后解压,用IDE打开,需要修改的地方如下:

  1. com.alibaba.nacos.console.controller.NamespaceController,这个Controller的getNamespaces()方法和getNamespace()方法,加上注解:
@Secured(resource = AuthConstants.CONSOLE_RESOURCE_NAME_PREFIX + "namespaces", action = ActionTypes.READ)
image.png
  1. com.alibaba.nacos.console.controller.v2.NamespaceControllerV2,这个Controller的getNamespaceList()方法和getNamespace()方法,分别加上注解:
@Secured(resource = AuthConstants.CONSOLE_RESOURCE_NAME_PREFIX + "namespaces", action = ActionTypes.READ)
@Secured(resource = AuthConstants.CONSOLE_RESOURCE_NAME_PREFIX
            + "namespaces", action = ActionTypes.READ, signType = SignType.CONSOLE)
image.png

这样就改好了,然后直接执行命令打包:
mvn -Prelease-nacos -DskipTests clean install -U

打包后,拿到distribution下面的target下面的nacos-server-2.2.3.zip,不要拿错。修改配置并重新部署即可。


image.png

配置在解压后的conf下,启动执行bin下的start.sh或start.cmd。

启动时加上-m standalone,单体启动,否则可能会报错。(只针对本来就是单体的)

不要尝试打包后只替换console模块,会遇到各种奇怪的问题,一卡好几个小时。直接拿zip部署。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容