本项目由 hony(h0ny)、wh!te?be6ar 共同开发。如果觉得这个项目对你有帮助,请别忘了点个 🌟Star 支持一下,谢谢。
说明 / Disclaimer
本项目仅供安全研究与学使用。请勿将本工具用于生产环境或非法用途。因使用本项目内容造成的任何直接或间接损失,由使用者自行承担全部责任。
最新 Releases 下载地址:https://github.com/h0ny/NacosExploit/releases
| PoC | Exploit | 漏洞名称 | 漏洞编号 |
|---|---|---|---|
| ✅ | ✅ | Nacos 默认关闭认证 | / |
| ✅ | ✅ | Nacos 默认密码 (nacos/nacos) | AVD-2021-896025 |
| ✅ | ✅ | Nacos 默认 server.identity | / |
| ✅ | ✅ | Nacos 默认 token.secret.key | AVD-2023-1655789 |
| ✅ | ✅ | Nacos 默认 User-Agent | AVD-2021-29441 |
| ✅ | ✅ | Nacos Derby SQL Injection | AVD-2021-897468 |
| / | ✅ | Nacos JRaft Hessian 反序列化 | AVD-2023-1700159 |
| / | ✅ | Nacos JRaft Services 文件操作漏洞 | AVD-2024-1743586 |
-
下载最新 jar 文件。
-
启动方式(推荐使用 JDK 8):
java -jar nacos-exploit-3.0.5-jar-with-dependencies.jar
-
在对内存马或命令执行的利用项进行测试时,请确保目标为已授权的测试环境。
RCE:
文件读取:
- 自动根据对当前目标所检测出的漏洞利用。
- “导出所有配置” 功能,会遍历所有命名空间,将其导出为压缩包。
- “添加权限” 功能,会创建一个角色,将指定用户名添加入创建的角色,并遍历所有命名空间,为该角色添加读写权限。
- 支持两种内存马注入方式:
- 通过 Derby SQL 语句直接创建 classloader 注入内存马(无 Jar 落地,服务重启后失效)。
- 通过 Derby SQL 语句上传 Jar 文件并落地,加载该 Jar 并创建命令执行函数(持久化,服务重启后仍有效)。
- 若尝试多次仍未成功,可能为网络或环境限制,建议换用体积更小的 cmd 内存马再试。
- 利用链基于 Jackson + JDK8 的原生链,对该漏洞进行利用必须在 JDK8 环境下运行。
- 不明原因,漏洞利用成功率一般,建议优先尝试 cmd 内存马,便于通过访问 url 路径验证是否注入成功。
- Raft Group 说明:
naming_persistent_service_v2/naming_persistent_service:通常只能注入一次,且进行漏洞利用后会产生异常信息。naming_service_metadata/naming_instance_metadata:可以多次注入。
- 自定义内存马须继承类:
com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet。
- 文件读取:可多次使用(对
naming_persistent_service_v2使用会产生异常信息)。 - 文件写入/删除:会导致受攻击节点异常,当前出于稳定性考虑暂不对外开放写/删功能。
- 代理功能:仅代理 HTTP 流量。针对非 HTTP(如 JRaft 端口)请使用专用代理工具(例如 proxifier)。
- 扫描设置:可在 UI 中选择需检测的漏洞,未勾选的漏洞将不会被扫描。
- 允许自定义设置 HTTP 请求头。
- 选择 “批量导出配置文件” 后,会根据认证绕过检测结果自动导出相关配置文件。







