ExtonHoward/BunnyBrute.py
GitHub: ExtonHoward/BunnyBrute.py
一个轻量级的 Python 密码喷射工具,专门用于对 RabbitMQ/AMQP 代理进行凭证测试,支持批量目标、TLS 加密和可配置的延迟策略。
Stars: 0 | Forks: 0
# BunnyBrute
一个轻量级的 Python 工具,用于针对 RabbitMQ / AMQP 代理测试凭证。支持单一目标或批量目标列表、凭证喷射、TLS、可配置延迟、抖动等。
## 功能
- 喷射单一凭证对或完整的用户名/密码列表
- 接受来自文件的多个目标(每行一个 `host` 或 `host:port`)
- 每个目标的多端口扫描
- TLS/AMQPS 支持
- 可在尝试之间配置延迟和抖动以减少噪音
- 使用 `--max-attempts` 限制总尝试次数
- 首次成功后提前退出(使用 `--stop-on-success`)
- 自动检测缺少的依赖项并提供安装说明
## 环境要求
- Python 3.7+
- [pika](https://pypi.org/project/pika/)
### 安装依赖
**pip:**
```
pip install pika
```
**apt (Debian/Ubuntu):**
```
sudo apt install python3-pika
```
如果在运行脚本时缺少任何必需的库,它将打印安装说明并在尝试任何连接之前退出。
## 安装说明
```
git clone https://github.com/ExtonHoward/BunnyBrute.py
cd BunnyBrute
sudo apt install python3-pika
```
## 运行 Naabu
```
python3 BunnyBrute.py --targets FILE [options]
```
### 参数
#### 目标
| 参数 | 描述 |
|---|---|
| `--targets FILE` | **(必需)** 目标文件路径,每行一个。每行可以是主机名/IP 或 `host:port`。 |
| `--ports PORTS` | 以逗号分隔的端口列表,用于未指定端口的目标。默认为 `5672`。 |
| `--vhost VHOST` | 要进行身份验证的 AMQP 虚拟主机。默认为 `/`。 |
#### 用户 *(提供一个即可)*
| 参数 | 描述 |
|---|---|
| `--user USERNAME` | 要测试的单个用户名。 |
| `--users FILE` | 包含用户名的文件,每行一个。 |
#### 密码 *(提供一个即可)*
| 参数 | 描述 |
|---|---|
| `--password PASSWORD` | 要测试的单个密码。 |
| `--passwords FILE` | 包含密码的文件,每行一个。 |
#### 时间与限速
| 参数 | 默认值 | 描述 |
|---|---|---|
| `--delay SECONDS` | `0.5` | 每次尝试之间的固定暂停。增加此值以减少噪音 / 避免账户锁定。 |
| `--jitter SECONDS` | `0.0` | 每次尝试时在 `--delay` 基础上增加的随机额外延迟(0 到 JITTER 之间)。 |
| `--timeout SECONDS` | `5.0` | 每次尝试的 Socket / 连接超时时间。 |
| `--max-attempts N` | `0` (无限制) | 在所有目标上尝试 N 次后停止。 |
#### 连接选项
| 参数 | 描述 |
|---|---|
| `--ssl` | 使用 TLS/AMQPS。配合端口 `5671` 使用。 |
| `--stop-on-success` | 首次成功登录后立即退出。 |
## 示例
**单一目标,单一凭证对:**
```
python3 BunnyBrute.py --targets hosts.txt --user guest --password guest
```
**对多个目标喷射凭证列表:**
```
python3 BunnyBrute.py --targets hosts.txt --users users.txt --passwords passwords.txt --delay 1.0
```
**TLS 连接,首次有效登录即停止:**
```
python3 BunnyBrute.py --targets hosts.txt --ports 5671 --users users.txt --passwords passwords.txt --ssl --stop-on-success
```
**增加抖动以随机化时间:**
```
python3 BunnyBrute.py --targets hosts.txt --ports 5672,5671 --users users.txt --passwords passwords.txt --delay 0.5 --jitter 0.3
```
**非默认 vhost,最多尝试 50 次:**
```
python3 BunnyBrute.py --targets hosts.txt --user admin --passwords passwords.txt --vhost myapp --max-attempts 50
```
## 目标文件格式
每行一个条目。除非使用 `--ports` 覆盖,否则纯主机名/IP 使用默认端口(`5672`)。内联的 `host:port` 优先级高于其他所有设置。
```
192.168.1.10
rabbitmq.example.com
10.0.0.5:5671
10.0.0.6:5672
```
## 输出
```
[*] Testing target 10.0.0.5:5672
[-] FAIL 10.0.0.5:5672 admin:admin
[-] FAIL 10.0.0.5:5672 admin:password
[+] SUCCESS 10.0.0.5:5672 admin:rabbit123
[*] Done. Total attempts: 3
```
| 前缀 | 含义 |
|---|---|
| `[*]` | 信息 |
| `[+]` | 成功登录 |
| `[-]` | 失败尝试 |
| `[!]` | 警告 / 达到限制 |
## 许可证
MIT — 详情请参阅 [LICENSE](LICENSE)。
标签:AMQP, CTF学习, PoC, Python, RabbitMQ, TLS/SSL支持, 内网渗透, 凭据测试, 协议安全, 多线程扫描, 安全测试, 密码喷射, 攻击性安全, 数据统计, 无后门, 暴力破解, 消息队列, 端口扫描, 网络安全, 逆向工具, 隐私保护, 黑盒测试