# AWS - MQ Enum

{{#include ../../../banners/hacktricks-training.md}}

## Amazon MQ

### メッセージブローカーの紹介

**メッセージブローカー**は、異なるソフトウェアシステム間の通信を仲介する役割を果たし、さまざまなプラットフォーム上で構築され、異なる言語でプログラムされたシステムをつなぎます。**Amazon MQ**は、AWS上でのメッセージブローカーの展開、運用、保守を簡素化します。**Apache ActiveMQ**と**RabbitMQ**のための管理サービスを提供し、シームレスなプロビジョニングと自動ソフトウェアバージョンの更新を保証します。

### AWS - RabbitMQ

RabbitMQは、著名な**メッセージキューイングソフトウェア**であり、_メッセージブローカー_または_キューマネージャー_としても知られています。基本的には、キューが構成されるシステムです。アプリケーションはこれらのキューとインターフェースを持ち、**メッセージを送受信**します。この文脈でのメッセージは、他のアプリケーション（異なるサーバー上の可能性もある）でプロセスを開始するためのコマンドから、単純なテキストメッセージまで、さまざまな情報を運ぶことができます。メッセージは、受信アプリケーションによって取得され処理されるまで、キューマネージャーソフトウェアによって保持されます。AWSは、RabbitMQサーバーのホスティングと管理のための使いやすいソリューションを提供します。

### AWS - ActiveMQ

Apache ActiveMQ®は、その多様性で知られる主要なオープンソースのJavaベースの**メッセージブローカー**です。複数の業界標準プロトコルをサポートし、さまざまな言語やプラットフォームにわたる広範なクライアント互換性を提供します。ユーザーは以下を行うことができます：

- JavaScript、C、C++、Python、.Netなどで書かれたクライアントと接続する。
- **AMQP**プロトコルを活用して異なるプラットフォームのアプリケーションを統合する。
- ウェブアプリケーションのメッセージ交換のためにウェブソケット上で**STOMP**を使用する。
- **MQTT**を使用してIoTデバイスを管理する。
- 既存の**JMS**インフラストラクチャを維持し、その機能を拡張する。

ActiveMQの堅牢性と柔軟性は、多様なメッセージング要件に適しています。

## 列挙
```bash
# List brokers
aws mq list-brokers

# Get broker info
aws mq describe-broker --broker-id <broker-id>
## Find endpoints in .BrokerInstances
## Find if public accessible in .PubliclyAccessible

# List usernames (only for ActiveMQ)
aws mq list-users --broker-id <broker-id>

# Get user info (PASSWORD NOT INCLUDED)
aws mq describe-user --broker-id <broker-id> --username <username>

# Lits configurations (only for ActiveMQ)
aws mq list-configurations
## Here you can find if simple or LDAP authentication is used

# Creacte Active MQ user
aws mq create-user --broker-id <value> --password <value> --username <value> --console-access
```
> [!WARNING]
> TODO: RabbitMQとActiveMQを内部で列挙する方法、すべてのキューをリッスンしデータを送信する方法を示してください（これを行う方法を知っている場合はPRを送信してください）

## Privesc

{{#ref}}
../aws-privilege-escalation/aws-mq-privesc/README.md
{{#endref}}

## Unauthenticated Access

{{#ref}}
../aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum/README.md
{{#endref}}

## Persistence

RabbitMQのウェブコンソールにアクセスするための資格情報を知っている場合、新しい管理者権限を持つユーザーを作成できます。

## References

- [https://www.cloudamqp.com/blog/part1-rabbitmq-for-beginners-what-is-rabbitmq.html](https://www.cloudamqp.com/blog/part1-rabbitmq-for-beginners-what-is-rabbitmq.html)
- [https://activemq.apache.org/](https://activemq.apache.org/)

{{#include ../../../banners/hacktricks-training.md}}
