☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家**网络安全公司**工作吗?你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
- 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
- 获得[**官方PEASS和HackTricks的衣物**](https://peass.creator-spring.com)
- **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我在**推特**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
# 基本信息
**RabbitMQ**是一种**消息队列软件**,也被称为_消息代理_或_队列管理器_。简单来说,它是一种软件,其中定义了队列,应用程序连接到这些队列以传输消息。\
**消息可以包含任何类型的信息**。例如,它可以包含关于应该在另一个应用程序上启动的进程或任务的信息(甚至可以在另一台服务器上),或者它可以只是一个简单的文本消息。队列管理器软件将消息存储在队列中,直到接收应用程序连接并将消息从队列中取出。然后,接收应用程序处理该消息。\
定义来自[这里](https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html)。
**默认端口**:5672,5671
```
PORT STATE SERVICE VERSION
5672/tcp open amqp RabbitMQ 3.1.5 (0-9)
```
# 枚举
## 手动枚举
### AMQP (5671/5672)
AMQP(高级消息队列协议)是一种用于消息传递的开放标准协议。它通常在端口5671和5672上运行。
#### 端口扫描
使用nmap命令扫描目标主机的5671和5672端口,以确定是否开放。
```bash
nmap -p 5671,5672 <目标IP>
```
#### AMQP枚举
使用amqp-probe工具对AMQP进行枚举,以获取有关目标主机上的AMQP服务的详细信息。
```bash
amqp-probe -t <目标IP> -p 5672
```
#### AMQP爆破
使用amqp-bunny工具对AMQP进行爆破,以尝试破解目标主机上的AMQP服务的凭据。
```bash
amqp-bunny -t <目标IP> -p 5672 -u <用户名字典> -p <密码字典>
```
#### AMQP漏洞利用
根据枚举和爆破的结果,使用相应的漏洞利用工具对目标主机上的AMQP服务进行攻击。
### 参考链接
- [AMQP官方网站](https://www.amqp.org/)
```python
import amqp
#By default it uses default credentials "guest":"guest"
conn = amqp.connection.Connection(host="", port=5672, virtual_host="/")
conn.connect()
for k, v in conn.server_properties.items():
print(k, v)
```
## 自动化
AMQP (Advanced Message Queuing Protocol) 是一种用于消息传递的开放标准协议。它允许应用程序在分布式系统中进行异步通信,并支持高效的消息传递。在渗透测试中,我们可以使用自动化工具来发现和利用AMQP服务的漏洞。
### AMQP自动化工具
以下是一些常用的AMQP自动化工具:
- **RabbitMQ-CLI**:RabbitMQ-CLI是一个命令行工具,用于与RabbitMQ服务器进行交互。它提供了一组命令,用于管理队列、交换机和绑定,以及发送和接收消息。
- **AMQP-Client**:AMQP-Client是一个Python库,用于与AMQP服务器进行交互。它提供了一组API,用于创建连接、声明队列和交换机,以及发送和接收消息。
### AMQP漏洞利用
以下是一些常见的AMQP漏洞利用技术:
- **未授权访问**:某些AMQP服务器可能未正确配置访问控制,导致未经授权的用户可以访问和操作队列、交换机和消息。攻击者可以利用这个漏洞来读取、修改或删除敏感数据。
- **拒绝服务**:通过发送大量无效或恶意的消息,攻击者可以导致AMQP服务器崩溃或变得不可用,从而导致拒绝服务攻击。
- **消息泄漏**:如果消息未正确加密或保护,攻击者可以通过监听网络流量或拦截消息来获取敏感信息。这可能包括用户凭据、敏感数据或业务机密。
### AMQP防御措施
以下是一些保护AMQP服务的措施:
- **强化访问控制**:确保只有经过授权的用户可以访问和操作AMQP服务器。使用强密码、限制IP访问和启用身份验证等措施可以帮助防止未授权访问。
- **限制资源使用**:通过限制每个连接和通道的资源使用量,可以防止拒绝服务攻击。此外,监控服务器资源使用情况,并及时采取措施来应对异常情况。
- **加密通信**:使用TLS/SSL等加密协议来保护AMQP通信,确保消息在传输过程中不被窃听或篡改。
- **安全审计**:定期审计AMQP服务器的配置和日志,以及监控网络流量和消息传递。及时发现和修复潜在的漏洞和安全问题。
- **敏感信息保护**:对于包含敏感信息的消息,应该使用适当的加密和身份验证措施来保护数据的机密性和完整性。
### 结论
AMQP是一种强大的消息传递协议,但在渗透测试中也存在一些潜在的安全风险。通过使用自动化工具和遵循安全最佳实践,可以帮助保护AMQP服务免受攻击,并确保消息的安全传递。
```bash
nmap -sV -Pn -n -T4 -p 5672 --script amqp-info
PORT STATE SERVICE VERSION
5672/tcp open amqp RabbitMQ 3.1.5 (0-9)
| amqp-info:
| capabilities:
| publisher_confirms: YES
| exchange_exchange_bindings: YES
| basic.nack: YES
| consumer_cancel_notify: YES
| copyright: Copyright (C) 2007-2013 GoPivotal, Inc.
| information: Licensed under the MPL. See http://www.rabbitmq.com/
| platform: Erlang/OTP
| product: RabbitMQ
| version: 3.1.5
| mechanisms: PLAIN AMQPLAIN
|_ locales: en_US
```
# 其他RabbitMQ端口
从[https://www.rabbitmq.com/networking.html](https://www.rabbitmq.com/networking.html)可以找到**RabbitMQ使用了多个端口**:
- **1883, 8883**: ([MQTT客户端](http://mqtt.org)无TLS和有TLS的情况,如果启用了[MQTT插件](https://www.rabbitmq.com/mqtt.html)。[**了解有关如何对MQTT进行渗透测试的更多信息**](1883-pentesting-mqtt-mosquitto.md)。
- **4369: epmd**,RabbitMQ节点和CLI工具使用的对等发现服务。[**了解有关如何对此服务进行渗透测试的更多信息**](4369-pentesting-erlang-port-mapper-daemon-epmd.md)。
- **5672, 5671**: AMQP 0-9-1和1.0客户端使用的端口,无TLS和有TLS。
- **15672**: [HTTP API](https://www.rabbitmq.com/management.html)客户端,[管理界面](https://www.rabbitmq.com/management.html)和[rabbitmqadmin](https://www.rabbitmq.com/management-cli.html)(仅在启用了[管理插件](https://www.rabbitmq.com/management.html)的情况下)。[**了解有关如何对此服务进行渗透测试的更多信息**](15672-pentesting-rabbitmq-management.md)。
- 15674: STOMP-over-WebSockets客户端(仅在启用了[Web STOMP插件](https://www.rabbitmq.com/web-stomp.html)的情况下)
- 15675: MQTT-over-WebSockets客户端(仅在启用了[Web MQTT插件](https://www.rabbitmq.com/web-mqtt.html)的情况下)
- 15692: Prometheus指标(仅在启用了[Prometheus插件](https://www.rabbitmq.com/prometheus.html)的情况下)
- 25672: 用于节点间和CLI工具通信的Erlang分布服务器端口,从动态范围分配(默认情况下仅限于单个端口,计算为AMQP端口+20000)。除非这些端口的外部连接确实是必要的(例如集群使用[federation](https://www.rabbitmq.com/federation.html)或CLI工具在子网外的机器上使用),否则不应公开这些端口。有关详细信息,请参阅[网络指南](https://www.rabbitmq.com/networking.html)。**只有9个这样的端口在互联网上打开**。
- 35672-35682: 用于CLI工具的Erlang分布客户端端口,用于与节点通信,从动态范围分配(计算为服务器分布端口+10000到服务器分布端口+10010)。有关详细信息,请参阅[网络指南](https://www.rabbitmq.com/networking.html)。
- 61613, 61614: [STOMP客户端](https://stomp.github.io/stomp-specification-1.2.html)无TLS和有TLS的情况(仅在启用了[STOMP插件](https://www.rabbitmq.com/stomp.html)的情况下)。少于10个设备开放了此端口,主要用于DHT节点的UDP。
# Shodan
* `AMQP`
☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家**网络安全公司**工作吗?想要在HackTricks中**宣传你的公司**吗?或者想要获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
- 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
- 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
- **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。