# AWS - MQ Enum

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

## Amazon MQ

### Uvod u posrednike poruka

**Posrednici poruka** služe kao posrednici, olakšavajući komunikaciju između različitih softverskih sistema, koji mogu biti izgrađeni na različitim platformama i programirani na različitim jezicima. **Amazon MQ** pojednostavljuje implementaciju, rad i održavanje posrednika poruka na AWS-u. Pruža upravljane usluge za **Apache ActiveMQ** i **RabbitMQ**, osiguravajući besprekornu opskrbu i automatske nadogradnje verzija softvera.

### AWS - RabbitMQ

RabbitMQ je istaknuti **softver za redove poruka**, poznat i kao _posrednik poruka_ ili _menadžer redova_. To je u suštini sistem gde su redovi konfigurisani. Aplikacije komuniciraju sa ovim redovima da bi **slale i primale poruke**. Poruke u ovom kontekstu mogu nositi razne informacije, od komandi za pokretanje procesa na drugim aplikacijama (potencijalno na različitim serverima) do jednostavnih tekstualnih poruka. Poruke se čuvaju od strane softvera menadžera redova dok ih ne preuzme i obradi aplikacija koja prima. AWS pruža jednostavno rešenje za hostovanje i upravljanje RabbitMQ serverima.

### AWS - ActiveMQ

Apache ActiveMQ® je vodeći open-source, Java-bazirani **posrednik poruka** poznat po svojoj svestranosti. Podržava više industrijskih standardnih protokola, nudeći široku kompatibilnost klijenata kroz razne jezike i platforme. Korisnici mogu:

- Povezati se sa klijentima napisanim u JavaScript-u, C, C++, Python-u, .Net-u i drugim.
- Iskoristiti **AMQP** protokol za integraciju aplikacija sa različitih platformi.
- Koristiti **STOMP** preko websockets za razmenu poruka u web aplikacijama.
- Upravljati IoT uređajima sa **MQTT**.
- Održavati postojeću **JMS** infrastrukturu i proširiti njene mogućnosti.

Robusnost i fleksibilnost ActiveMQ-a čine ga pogodnim za mnoštvo zahteva za razmenu poruka.

## Enumeracija
```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: Naznačiti kako interno enumerisati RabbitMQ i ActiveMQ i kako slušati sve redove i slati podatke (pošaljite PR ako znate kako to da uradite)

## Privesc

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

## Neautentifikovani pristup

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

## Persistencija

Ako znate akreditive za pristup RabbitMQ web konzoli, možete kreirati novog korisnika sa administratorskim privilegijama.

## Reference

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