# Az - Service Bus Enum

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

## Service Bus

Azure Service Bus is 'n wolk-gebaseerde **boodskapdiens** wat ontwerp is om betroubare **kommunikasie tussen verskillende dele van 'n toepassing of geskeide toepassings** moontlik te maak. Dit dien as 'n veilige tussenganger, wat verseker dat boodskappe veilig afgelewer word, selfs al werk die sender en ontvanger nie gelyktydig nie. Deur stelsels te ontkoppel, laat dit toepassings toe om onafhanklik te werk terwyl hulle steeds data of instruksies uitruil. Dit is veral nuttig vir scenario's wat laaibelasting oor verskeie werkers, betroubare boodskapaflewering, of komplekse koördinering vereis, soos die verwerking van take in volgorde of die veilige bestuur van toegang.

### Key Concepts

1. **Namespaces:** 'n namespace in boodskapstelsels is 'n logiese houer wat boodskapkomponente, rye en onderwerpe organiseer en bestuur. Dit bied 'n geïsoleerde omgewing waar toepassings boodskappe kan stuur, ontvang en verwerk. Rye en onderwerpe deel dieselfde infrastruktuur en konfigurasie binne 'n Service Bus namespace, maar hulle werk onafhanklik sonder om met mekaar te kommunikeer.
2. **Queues:** die doel daarvan is om boodskappe te stoor totdat die ontvanger gereed is.
- Boodskappe is georden, tydstempel, en duursaam gestoor.
- Afgelewer in trekmodus (op aanvraag) aan een verbruiker.
- Dit kan geconfigureer word sodat wanneer die boodskap gedeel word, dit outomaties verwyder word of in “Peek lock” modus waar die verbruiker moet erken dat dit verwyder kan word. As nie, sal die boodskap terug na die ry gaan.
- Ondersteun punt-tot-punt kommunikasie.
3. **Topics:** Publiseer-subscribe boodskapdiens vir uitsending.
- Meerdere onafhanklike intekeninge ontvang kopieë van boodskappe.
- Elke intekening is soos 'n ry binne die onderwerp.
- Intekeninge kan reëls/filters hê om aflewering te beheer of metadata by te voeg.

Die diensbus eindpunt/verbindingstring is:
```bash
https://<namespace>.servicebus.windows.net:443/
```
### Gevorderde Kenmerke

Sommige gevorderde kenmerke is:

- **Bo Nachricht Sessies**: Verseker FIFO verwerking en ondersteun versoek-antwoorde patrone.
- **Outomatiese Oorgang**: Oordra bo-nachrichten tussen rye of onderwerpe in dieselfde naamruimte.
- **Doodbrief**: Vang onaflewerbare bo-nachrichten vir hersiening.
- **Geskeduleerde Aflewering**: Vertraag bo-nachrichten verwerking vir toekomstige take.
- **Bo Nachricht Uitstel**: Stel bo-nachrichten herwinning uit totdat gereed.
- **Transaksies**: Groepeer operasies in atomiese uitvoering.
- **Filters & Aksies**: Pas reëls toe om bo-nachrichten te filter of te annotasie.
- **Outomatiese Verwydering op Inaktiwiteit**: Verwyder rye na inaktiwiteit (min: 5 minute).
- **Dubbele Opsporing**: Verwyder dubbele bo-nachrichten tydens herstuur.
- **Batch Verwydering**: Massaverwydering van vervalde of onnodige bo-nachrichten.

### Plaaslike Verifikasie

Die **`--disable-local-auth`** van az cli parameter word gebruik om te beheer of **plaaslike verifikasie** (wat die gebruik van Shared Access Signature (SAS) sleutels toelaat) geaktiveer is vir jou Service Bus naamruimte.

- Wanneer disable op **waar** gestel is: Plaaslike verifikasie met SAS sleutels is gedeaktiveer en Entra ID verifikasie is toegelaat.
- Wanneer disable op **vals (standaard)** gestel is: Beide SAS plaaslike verifikasie en Entra ID verifikasie is beskikbaar en jy kan verbindingsstringe met SAS sleutels gebruik om toegang tot jou Service Bus hulpbronne te verkry.

### Magtiging-Reël / SAS Beleid

SAS Beleide definieer die toegangstoestemmings vir Azure Service Bus entiteite naamruimte (Die Meest Belangrike Een), rye en onderwerpe. Elke beleid het die volgende komponente:

- **Toestemmings**: Aankruisvakke om toegangsvlakke te spesifiseer:
- Bestuur: Gee volle beheer oor die entiteit, insluitend konfigurasie en toestemmingsbestuur.
- Stuur: Laat toe om bo-nachrichten na die entiteit te stuur.
- Luister: Laat toe om bo-nachrichten van die entiteit te ontvang.
- **Primêre en Sekondêre Sleutels**: Dit is kriptografiese sleutels wat gebruik word om veilige tokens te genereer vir die verifikasie van toegang.
- **Primêre en Sekondêre Verbindingstringe**: Vooraf geconfigureerde verbindingstringe wat die eindpunt en sleutel insluit vir maklike gebruik in toepassings.
- **SAS Beleid ARM ID**: Die Azure Resource Manager (ARM) pad na die beleid vir programmatiese identifikasie.

Dit is belangrik om te noem dat 'n naamruimte 'n enkele SAS beleid het wat elke entiteit binne dit beïnvloed, terwyl rye en onderwerpe hul eie individuele SAS beleide kan hê vir meer fynbeheer.

### Opsomming

{{#tabs }}
{{#tab name="az cli" }}
```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>
```
{{#endtab }}

{{#tab name="Az Powershell" }}
```powershell
Get-Command -Module Az.ServiceBus

# Retrieves details of a Service Bus namespace, including V2-specific features like additional metrics or configurations.
Get-AzServiceBusNamespaceV2 -ResourceGroupName <ResourceGroupName> -Name <NamespaceName>

# Retrieves the authorization rules for a Service Bus namespace, queue, or topic.
Get-AzServiceBusAuthorizationRule -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>

# Retrieves the Geo-Disaster Recovery configuration for a Service Bus namespace, if it is enabled.
Get-AzServiceBusGeoDRConfiguration -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>

# Retrieves the shared access keys for a specified authorization rule in a Service Bus namespace.
Get-AzServiceBusKey -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -Name <RuleName>

# Retrieves the migration state and details for a Service Bus namespace, if a migration is in progress.
Get-AzServiceBusMigration -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>

# Retrieves properties and details about a Service Bus namespace.
Get-AzServiceBusNamespace -ResourceGroupName <ResourceGroupName> -Name <NamespaceName>

# Retrieves the network rule set for a Service Bus namespace, such as IP restrictions or virtual network access rules.
Get-AzServiceBusNetworkRuleSet -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>

# Retrieves private endpoint connections for a Service Bus namespace.
Get-AzServiceBusPrivateEndpointConnection -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>

# Retrieves private link resources associated with a Service Bus namespace.
Get-AzServiceBusPrivateLink -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>

# Retrieves details of a specified queue in a Service Bus namespace.
Get-AzServiceBusQueue -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -Name <QueueName>

# Retrieves rules (filters and actions) for a subscription under a Service Bus topic.
Get-AzServiceBusRule -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -TopicName <TopicName> -SubscriptionName <SubscriptionName>

# Retrieves details of subscriptions for a specified Service Bus topic.
Get-AzServiceBusSubscription -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -TopicName <TopicName>

# Retrieves details of a specified topic in a Service Bus namespace.
Get-AzServiceBusTopic -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
```
{{#endtab }}
{{#endtabs }}


### Privilege Escalation

{{#ref}}
../az-privilege-escalation/az-servicebus-privesc.md
{{#endref}}

### Post Exploitation

{{#ref}}
../az-post-exploitation/az-servicebus-post-exploitation.md
{{#endref}}

## References

- [https://learn.microsoft.com/en-us/powershell/module/az.servicebus/?view=azps-13.0.0](https://learn.microsoft.com/en-us/powershell/module/az.servicebus/?view=azps-13.0.0)
- [https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview](https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview)
- [https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-quickstart-cli](https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-quickstart-cli)

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