Az - Service Bus Enum

Reading time: 8 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Service Bus

Azure Service Bus è un servizio di messaggistica basato su cloud progettato per abilitare una comunicazione affidabile tra diverse parti di un'applicazione o applicazioni separate. Funziona come un intermediario sicuro, garantendo che i messaggi vengano consegnati in modo sicuro, anche se il mittente e il destinatario non operano simultaneamente. Decoupling dei sistemi consente alle applicazioni di lavorare in modo indipendente pur continuando a scambiare dati o istruzioni. È particolarmente utile per scenari che richiedono bilanciamento del carico tra più lavoratori, consegna affidabile dei messaggi o coordinamento complesso, come l'elaborazione di compiti in ordine o la gestione sicura dell'accesso.

Concetti Chiave

  1. Namespaces: Un namespace nei sistemi di messaggistica è un contenitore logico che organizza e gestisce componenti di messaggistica, code e argomenti. Fornisce un ambiente isolato in cui le applicazioni possono inviare, ricevere e elaborare messaggi. Le code e gli argomenti condividono la stessa infrastruttura e configurazione all'interno di un namespace di Service Bus, ma operano in modo indipendente senza interagire tra loro.
  2. Queues: il suo scopo è memorizzare i messaggi fino a quando il destinatario è pronto.
  • I messaggi sono ordinati, timestampati e memorizzati in modo durevole.
  • Consegnati in modalità pull (recupero su richiesta) a un consumatore.
  • Può essere configurato in modo che quando il messaggio viene condiviso venga automaticamente eliminato o in modalità "Peek lock" in cui il consumatore deve riconoscere che può essere eliminato. In caso contrario, il messaggio tornerà nella coda.
  • Supporta la comunicazione punto a punto.
  1. Topics: Messaggistica publish-subscribe per la trasmissione.
  • Più sottoscrizioni indipendenti ricevono copie dei messaggi.
  • Ogni sottoscrizione è come una coda all'interno dell'argomento.
  • Le sottoscrizioni possono avere regole/filtri per controllare la consegna o aggiungere metadati.

La stringa di connessione/endpoint del service bus è:

bash
https://<namespace>.servicebus.windows.net:443/

Funzioni Avanzate

Alcune funzioni avanzate sono:

  • Message Sessions: Garantisce l'elaborazione FIFO e supporta modelli di richiesta-risposta.
  • Auto-Forwarding: Trasferisce messaggi tra code o argomenti nello stesso namespace.
  • Dead-Lettering: Cattura messaggi non consegnabili per la revisione.
  • Scheduled Delivery: Ritarda l'elaborazione dei messaggi per compiti futuri.
  • Message Deferral: Rimanda il recupero dei messaggi fino a quando non è pronto.
  • Transactions: Raggruppa operazioni in esecuzione atomica.
  • Filters & Actions: Applica regole per filtrare o annotare messaggi.
  • Auto-Delete on Idle: Elimina le code dopo inattività (min: 5 minuti).
  • Duplicate Detection: Rimuove messaggi duplicati durante i reinvii.
  • Batch Deletion: Elimina in blocco messaggi scaduti o non necessari.

Autenticazione Locale

Il parametro --disable-local-auth di az cli viene utilizzato per controllare se l'autenticazione locale (che consente l'uso di chiavi Shared Access Signature (SAS)) è abilitata per il tuo namespace di Service Bus.

  • Quando disable è impostato su true: L'autenticazione locale utilizzando le chiavi SAS è disabilitata e l'autenticazione con Entrad ID è consentita.
  • Quando disable è impostato su false (predefinito): Sia l'autenticazione locale SAS che l'autenticazione con Entra ID sono disponibili e puoi utilizzare le stringhe di connessione con le chiavi SAS per accedere alle risorse del tuo Service Bus.

Regola di Autorizzazione / Politica SAS

Le Politiche SAS definiscono i permessi di accesso per le entità del namespace di Azure Service Bus (la più importante), code e argomenti. Ogni politica ha i seguenti componenti:

  • Permissions: Caselle di controllo per specificare i livelli di accesso:
  • Manage: Concede il pieno controllo sull'entità, inclusa la gestione della configurazione e dei permessi.
  • Send: Consente l'invio di messaggi all'entità.
  • Listen: Consente di ricevere messaggi dall'entità.
  • Primary and Secondary Keys: Queste sono chiavi crittografiche utilizzate per generare token sicuri per autenticare l'accesso.
  • Primary and Secondary Connection Strings: Stringhe di connessione preconfigurate che includono l'endpoint e la chiave per un uso facile nelle applicazioni.
  • SAS Policy ARM ID: Il percorso di Azure Resource Manager (ARM) per la politica per identificazione programmatica.

È importante notare che un namespace ha una singola politica SAS che influisce su ogni entità al suo interno, mentre code e argomenti possono avere le proprie politiche SAS individuali per un controllo più granulare.

Enumerazione

bash
# Namespace Enumeration
az servicebus namespace list
az servicebus namespace network-rule-set list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
az servicebus namespace show --resource-group <MyResourceGroup> --name <MyNamespace>
az servicebus namespace network-rule-set show --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
az servicebus namespace private-endpoint-connection list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
az servicebus namespace exists --name ProposedNamespace

# Authorization Rule Enumeration
az servicebus namespace authorization-rule list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
az servicebus queue authorization-rule list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --queue-name <MyQueue>
az servicebus topic authorization-rule list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --topic-name <MyTopic>
az servicebus namespace authorization-rule keys list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --name <MyAuthRule>

# Get keys
az servicebus namespace authorization-rule keys list --resource-group <res-group> --namespace-name <namespace-name> [--authorization-rule-name RootManageSharedAccessKey]
az servicebus topic authorization-rule keys list --resource-group <res-group> --namespace-name <namespace-name> --topic-name <topic-name> --name <auth-rule-name>
az servicebus queue authorization-rule keys list --resource-group <res-group> --namespace-name <namespace-name> --queue-name <topic-name> --name <auth-rule-name>

# Queue Enumeration
az servicebus queue list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
az servicebus queue show --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --name <MyQueue>

# Topic Enumeration
az servicebus topic list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
az servicebus topic show --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --name <MyTopic>

# Susbscription Enumeration
az servicebus topic subscription list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --topic-name <MyTopic>
az servicebus topic subscription show --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --topic-name <MyTopic> --name <MySubscription>

Escalation dei privilegi

Az - Service Bus Privesc

Post Exploitation

Az - Service Bus Post Exploitation

Riferimenti

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks