# AWS - MQ Enum {{#include ../../../banners/hacktricks-training.md}} ## Amazon MQ ### Introduzione ai Message Brokers **Message brokers** fungono da intermediari, facilitando la comunicazione tra diversi sistemi software, che possono essere costruiti su piattaforme varie e programmati in lingue diverse. **Amazon MQ** semplifica il deployment, l'operazione e la manutenzione dei message brokers su AWS. Fornisce servizi gestiti per **Apache ActiveMQ** e **RabbitMQ**, garantendo provisioning senza soluzione di continuità e aggiornamenti automatici delle versioni software. ### AWS - RabbitMQ RabbitMQ è un noto **software di messaggistica**, conosciuto anche come _message broker_ o _queue manager_. Fondamentalmente è un sistema in cui le code sono configurate. Le applicazioni interagiscono con queste code per **inviare e ricevere messaggi**. I messaggi in questo contesto possono contenere una varietà di informazioni, che vanno da comandi per avviare processi su altre applicazioni (potenzialmente su server diversi) a semplici messaggi di testo. I messaggi sono trattenuti dal software del queue-manager fino a quando non vengono recuperati e elaborati da un'applicazione ricevente. AWS fornisce una soluzione facile da usare per ospitare e gestire i server RabbitMQ. ### AWS - ActiveMQ Apache ActiveMQ® è un **message broker** open-source leader, basato su Java, noto per la sua versatilità. Supporta più protocolli standard del settore, offrendo ampia compatibilità con i client su una vasta gamma di lingue e piattaforme. Gli utenti possono: - Connettersi con client scritti in JavaScript, C, C++, Python, .Net e altro. - Sfruttare il protocollo **AMQP** per integrare applicazioni da diverse piattaforme. - Utilizzare **STOMP** su websockets per scambi di messaggi tra applicazioni web. - Gestire dispositivi IoT con **MQTT**. - Mantenere l'infrastruttura **JMS** esistente ed estenderne le capacità. La robustezza e la flessibilità di ActiveMQ lo rendono adatto a una moltitudine di requisiti di messaggistica. ## Enumerazione ```bash # List brokers aws mq list-brokers # Get broker info aws mq describe-broker --broker-id ## Find endpoints in .BrokerInstances ## Find if public accessible in .PubliclyAccessible # List usernames (only for ActiveMQ) aws mq list-users --broker-id # Get user info (PASSWORD NOT INCLUDED) aws mq describe-user --broker-id --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 --password --username --console-access ``` > [!WARNING] > TODO: Indica come enumerare RabbitMQ e ActiveMQ internamente e come ascoltare in tutte le code e inviare dati (invia PR se sai come farlo) ## Privesc {{#ref}} ../aws-privilege-escalation/aws-mq-privesc.md {{#endref}} ## Accesso non autenticato {{#ref}} ../aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md {{#endref}} ## Persistenza Se conosci le credenziali per accedere alla console web di RabbitMQ, puoi creare un nuovo utente con privilegi di amministratore. ## Riferimenti - [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}}