# 5671,5672 - AMQP Pentesting
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)을 **팔로우**하세요.
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
## 기본 정보
[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="", 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를 펜테스팅하기 위해 다음과 같은 자동화 도구를 사용할 수 있습니다.
#### 1. RabbitMQ-CLI
RabbitMQ-CLI는 RabbitMQ 서버와 상호 작용하기 위한 명령줄 인터페이스입니다. 이 도구를 사용하면 RabbitMQ 서버에 연결하고, 큐를 생성하고, 메시지를 전송하고, 큐를 삭제하는 등의 작업을 자동화할 수 있습니다.
#### 2. AMQP-Tool
AMQP-Tool은 AMQP 프로토콜을 사용하는 애플리케이션을 테스트하기 위한 도구입니다. 이 도구를 사용하면 AMQP 메시지를 생성하고 전송하고, 큐를 관리하고, 라우팅을 테스트하는 등의 작업을 자동화할 수 있습니다.
#### 3. AMQP-Client
AMQP-Client는 AMQP 프로토콜을 사용하는 클라이언트 애플리케이션을 테스트하기 위한 도구입니다. 이 도구를 사용하면 AMQP 메시지를 생성하고 전송하고, 큐를 관리하고, 라우팅을 테스트하는 등의 작업을 자동화할 수 있습니다.
#### 4. AMQP-Exploit
AMQP-Exploit은 AMQP 서버에 대한 취약점을 검사하고 악용하기 위한 도구입니다. 이 도구를 사용하면 AMQP 서버의 취약점을 자동으로 탐지하고, 악용하여 권한 상승이나 데이터 유출과 같은 공격을 수행할 수 있습니다.
#### 5. AMQP-Fuzzer
AMQP-Fuzzer는 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
```
### 브루트 포스
* [**AMQP 프로토콜 브루트 포스**](../generic-methodologies-and-resources/brute-force.md#amqp-activemq-rabbitmq-qpid-joram-and-solace)
* [**STOMP 프로토콜 브루트 포스**](../generic-methodologies-and-resources/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 clients](http://mqtt.org) (MQTT 플러그인이 활성화되어 있을 경우 TLS 없이 및 TLS와 함께 사용됨). [**MQTT를 pentest하는 방법에 대해 자세히 알아보세요**](1883-pentesting-mqtt-mosquitto.md).
* **4369: epmd**, RabbitMQ 노드 및 CLI 도구에서 사용되는 피어 검색 서비스. [**이 서비스를 pentest하는 방법에 대해 자세히 알아보세요**](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) 클라이언트, [management UI](https://www.rabbitmq.com/management.html) 및 [rabbitmqadmin](https://www.rabbitmq.com/management-cli.html) (management 플러그인이 활성화되어 있는 경우에만). [**이 서비스를 pentest하는 방법에 대해 자세히 알아보세요**](15672-pentesting-rabbitmq-management.md).
* 15674: STOMP-over-WebSockets 클라이언트 (Web STOMP 플러그인이 활성화되어 있는 경우에만)
* 15675: MQTT-over-WebSockets 클라이언트 (Web MQTT 플러그인이 활성화되어 있는 경우에만)
* 15692: Prometheus 메트릭 (Prometheus 플러그인이 활성화되어 있는 경우에만)
* 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: TLS 없이 및 TLS와 함께 사용되는 STOMP 클라이언트 (STOMP 플러그인이 활성화되어 있는 경우에만). 이 포트가 열린 장치는 10개 미만이며 대부분 DHT 노드에 대한 UDP입니다.
## Shodan
* `AMQP`
htARTE (HackTricks AWS Red Team Expert)를 통해 제로에서 영웅까지 AWS 해킹을 배워보세요!
HackTricks를 지원하는 다른 방법:
* HackTricks에서 **회사를 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family)인 [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)을 **팔로우**하세요.
* 여러분의 해킹 기법을 공유하려면 [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.