hacktricks/network-services-pentesting/5671-5672-pentesting-amqp.md
2023-08-03 19:12:22 +00:00

168 lines
10 KiB
Markdown
Raw 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.

<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- 你在一家**网络安全公司**工作吗你想在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来分享你的黑客技巧**。
</details>
# 基本信息
**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="<IP>", 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 <IP>
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`
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- 你在一家**网络安全公司**工作吗想要在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来分享你的黑客技巧**。
</details>