hacktricks/src/network-services-pentesting/5671-5672-pentesting-amqp.md

74 lines
4.4 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.

# 5671,5672 - Pentesting AMQP
{{#include ../banners/hacktricks-training.md}}
## 基本信息
来自 [cloudamqp](https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html):
> **RabbitMQ** 是一种 **消息队列软件**,也被称为 _消息代理_ 或 _队列管理器_。简单来说它是定义队列的软件应用程序连接到这些队列以传输消息。\
> **消息可以包含任何类型的信息**。例如,它可以包含关于应该在另一个应用程序上启动的进程或任务的信息(甚至可以在另一台服务器上),或者它可以只是一个简单的文本消息。队列管理软件会存储消息,直到接收应用程序连接并从队列中取出一条消息。接收应用程序随后处理该消息。\
> 定义来自 .
**默认端口**: 5672,5671
```
PORT STATE SERVICE VERSION
5672/tcp open amqp RabbitMQ 3.1.5 (0-9)
```
## 枚举
### 手动
```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)
```
### 自动
```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
```
### 暴力破解
- [**AMQP协议暴力破解**](../generic-hacking/brute-force.md#amqp-activemq-rabbitmq-qpid-joram-and-solace)
- [**STOMP协议暴力破解**](../generic-hacking/brute-force.md#stomp-activemq-rabbitmq-hornetq-and-openmq)
## 其他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) 客户端,[管理UI](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。除非这些端口上的外部连接确实必要例如集群使用 [联邦](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`
{{#include ../banners/hacktricks-training.md}}