hacktricks/network-services-pentesting/5671-5672-pentesting-amqp.md
2023-06-06 18:56:34 +00:00

60 lines
4.5 KiB
Markdown

# Informações Básicas
O **RabbitMQ** é um software de **fila de mensagens** também conhecido como _message broker_ ou _queue manager_. Simplificando, é um software onde filas são definidas, às quais as aplicações se conectam para transferir uma ou mais mensagens.\
Uma **mensagem pode incluir qualquer tipo de informação**. Pode, por exemplo, ter informações sobre um processo ou tarefa que deve ser iniciada em outra aplicação (que pode até estar em outro servidor), ou pode ser apenas uma mensagem de texto simples. O software do gerenciador de filas armazena as mensagens até que uma aplicação receptora se conecte e retire uma mensagem da fila. A aplicação receptora, então, processa a mensagem.\
Definição retirada [aqui](https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html).
**Porta padrão**: 5672,5671
```
PORT STATE SERVICE VERSION
5672/tcp open amqp RabbitMQ 3.1.5 (0-9)
```
# Enumeração
## Manual
```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)
```
## Automático
```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
```
# Outras portas do RabbitMQ
A partir de [https://www.rabbitmq.com/networking.html](https://www.rabbitmq.com/networking.html), você pode descobrir que **o rabbitmq usa várias portas**:
* **1883, 8883**: ([clientes MQTT](http://mqtt.org) sem e com TLS, se o [plugin MQTT](https://www.rabbitmq.com/mqtt.html) estiver habilitado. [**Saiba mais sobre como testar a penetração do MQTT aqui**](1883-pentesting-mqtt-mosquitto.md).
* **4369: epmd**, um serviço de descoberta de pares usado por nós RabbitMQ e ferramentas CLI. [**Saiba mais sobre como testar a penetração deste serviço aqui**](4369-pentesting-erlang-port-mapper-daemon-epmd.md).
* **5672, 5671**: usado por clientes AMQP 0-9-1 e 1.0 sem e com TLS
* **15672**: clientes [API HTTP](https://www.rabbitmq.com/management.html), [interface de gerenciamento](https://www.rabbitmq.com/management.html) e [rabbitmqadmin](https://www.rabbitmq.com/management-cli.html) (somente se o [plugin de gerenciamento](https://www.rabbitmq.com/management.html) estiver habilitado). [**Saiba mais sobre como testar a penetração deste serviço aqui**](15672-pentesting-rabbitmq-management.md).
* 15674: clientes STOMP-over-WebSockets (somente se o [plugin Web STOMP](https://www.rabbitmq.com/web-stomp.html) estiver habilitado)
* 15675: clientes MQTT-over-WebSockets (somente se o [plugin Web MQTT](https://www.rabbitmq.com/web-mqtt.html) estiver habilitado)
* 15692: métricas do Prometheus (somente se o [plugin Prometheus](https://www.rabbitmq.com/prometheus.html) estiver habilitado)
* 25672: usado para comunicação entre nós e ferramentas CLI (porta do servidor de distribuição Erlang) e é alocado a partir de uma faixa dinâmica (limitada a uma única porta por padrão, calculada como porta AMQP + 20000). A menos que as conexões externas nessas portas sejam realmente necessárias (por exemplo, o cluster usa [federação](https://www.rabbitmq.com/federation.html) ou ferramentas CLI são usadas em máquinas fora da sub-rede), essas portas não devem ser expostas publicamente. Consulte o [guia de rede](https://www.rabbitmq.com/networking.html) para obter detalhes. **Apenas 9 dessas portas estão abertas na internet**.
* 35672-35682: usado por ferramentas CLI (portas do cliente de distribuição Erlang) para comunicação com nós e é alocado a partir de uma faixa dinâmica (calculada como porta de distribuição do servidor + 10000 a porta de distribuição do servidor + 10010). Consulte o [guia de rede](https://www.rabbitmq.com/networking.html) para obter detalhes.
* 61613, 61614: [clientes STOMP](https://stomp.github.io/stomp-specification-1.2.html) sem e com TLS (somente se o [plugin STOMP](https://www.rabbitmq.com/stomp.html) estiver habilitado). Menos de 10 dispositivos com essa porta aberta e principalmente UDP para nós DHT.
# Shodan
* `AMQP`