# 5671,5672 - Pentesting AMQP {{#include ../banners/hacktricks-training.md}} ## 기본 정보 From [cloudamqp](https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html): > **RabbitMQ**는 _메시지 브로커_ 또는 _큐 관리자_로도 알려진 **메시지 큐 소프트웨어**입니다. 간단히 말하면, 메시지를 전송하기 위해 애플리케이션이 연결되는 큐가 정의된 소프트웨어입니다.\ > **메시지는 어떤 종류의 정보도 포함할 수 있습니다**. 예를 들어, 다른 애플리케이션(다른 서버에 있을 수도 있음)에서 시작해야 하는 프로세스나 작업에 대한 정보가 포함될 수 있으며, 단순한 텍스트 메시지일 수도 있습니다. 큐 관리자 소프트웨어는 수신 애플리케이션이 연결되어 큐에서 메시지를 가져갈 때까지 메시지를 저장합니다. 수신 애플리케이션은 그 후 메시지를 처리합니다.\ > Definition from . **기본 포트**: 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="", 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 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 ``` ### Brute Force - [**AMQP Protocol Brute-Force**](../generic-hacking/brute-force.md#amqp-activemq-rabbitmq-qpid-joram-and-solace) - [**STOMP Protocol Brute-Force**](../generic-hacking/brute-force.md#stomp-activemq-rabbitmq-hornetq-and-openmq) ## Other RabbitMQ ports In [https://www.rabbitmq.com/networking.html](https://www.rabbitmq.com/networking.html) you can find that **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**: TLS 없이 및 TLS와 함께 AMQP 0-9-1 및 1.0 클라이언트에서 사용 - **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}}