# AWS - MQ Enum

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

## Amazon MQ

### Introduction aux courtiers en messages

**Les courtiers en messages** servent d'intermédiaires, facilitant la communication entre différents systèmes logiciels, qui peuvent être construits sur des plateformes variées et programmés dans différents langages. **Amazon MQ** simplifie le déploiement, l'exploitation et la maintenance des courtiers en messages sur AWS. Il fournit des services gérés pour **Apache ActiveMQ** et **RabbitMQ**, garantissant un approvisionnement sans faille et des mises à jour automatiques des versions logicielles.

### AWS - RabbitMQ

RabbitMQ est un logiciel de **file d'attente de messages** de premier plan, également connu sous le nom de _courtier de messages_ ou _gestionnaire de files d'attente_. C'est fondamentalement un système où des files d'attente sont configurées. Les applications interagissent avec ces files d'attente pour **envoyer et recevoir des messages**. Les messages dans ce contexte peuvent transporter une variété d'informations, allant des commandes pour initier des processus sur d'autres applications (potentiellement sur différents serveurs) à de simples messages texte. Les messages sont conservés par le logiciel de gestionnaire de files d'attente jusqu'à ce qu'ils soient récupérés et traités par une application réceptrice. AWS fournit une solution facile à utiliser pour héberger et gérer des serveurs RabbitMQ.

### AWS - ActiveMQ

Apache ActiveMQ® est un **courtier de messages** open-source de premier plan, basé sur Java, connu pour sa polyvalence. Il prend en charge plusieurs protocoles standard de l'industrie, offrant une compatibilité client étendue à travers un large éventail de langages et de plateformes. Les utilisateurs peuvent :

- Se connecter avec des clients écrits en JavaScript, C, C++, Python, .Net, et plus encore.
- Tirer parti du protocole **AMQP** pour intégrer des applications de différentes plateformes.
- Utiliser **STOMP** sur websockets pour les échanges de messages d'applications web.
- Gérer des appareils IoT avec **MQTT**.
- Maintenir l'infrastructure **JMS** existante et étendre ses capacités.

La robustesse et la flexibilité d'ActiveMQ en font un choix adapté à une multitude de besoins en matière de messagerie.

## Énumération
```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 : Indiquer comment énumérer RabbitMQ et ActiveMQ en interne et comment écouter toutes les files d'attente et envoyer des données (envoyez une PR si vous savez comment faire cela)

## Privesc

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

## Accès non authentifié

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

## Persistance

Si vous connaissez les identifiants pour accéder à la console web RabbitMQ, vous pouvez créer un nouvel utilisateur avec des privilèges d'administrateur.

## Références

- [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}}
