# Az - Service Bus Enum

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

## Service Bus

Azure Service Bus est un **service de messagerie** basé sur le cloud conçu pour permettre une **communication fiable entre différentes parties d'une application ou des applications séparées**. Il agit comme un intermédiaire sécurisé, garantissant que les messages sont livrés en toute sécurité, même si l'expéditeur et le destinataire ne fonctionnent pas simultanément. En découplant les systèmes, il permet aux applications de fonctionner indépendamment tout en échangeant des données ou des instructions. Il est particulièrement utile pour des scénarios nécessitant un équilibrage de charge entre plusieurs travailleurs, une livraison fiable des messages ou une coordination complexe, comme le traitement des tâches dans l'ordre ou la gestion sécurisée des accès.

### Concepts Clés

1. **Queues :** son but est de stocker les messages jusqu'à ce que le destinataire soit prêt.
- Les messages sont ordonnés, horodatés et stockés de manière durable.
- Livrés en mode pull (récupération à la demande).
- Prend en charge la communication point à point.
2. **Topics :** Messagerie publish-subscribe pour la diffusion.
- Plusieurs abonnements indépendants reçoivent des copies des messages.
- Les abonnements peuvent avoir des règles/filtres pour contrôler la livraison ou ajouter des métadonnées.
- Prend en charge la communication plusieurs à plusieurs.
3. **Namespaces :** Un conteneur pour tous les composants de messagerie, files d'attente et sujets, est comme votre propre part d'un puissant cluster Azure, fournissant une capacité dédiée et s'étendant éventuellement sur trois zones de disponibilité.

### Fonctionnalités Avancées

Certaines fonctionnalités avancées sont :

- **Message Sessions** : Assure le traitement FIFO et prend en charge les modèles de demande-réponse.
- **Auto-Forwarding** : Transfère des messages entre des files d'attente ou des sujets dans le même espace de noms.
- **Dead-Lettering** : Capture les messages non livrables pour examen.
- **Scheduled Delivery** : Retarde le traitement des messages pour des tâches futures.
- **Message Deferral** : Retarde la récupération des messages jusqu'à ce qu'ils soient prêts.
- **Transactions** : Regroupe les opérations en exécution atomique.
- **Filters & Actions** : Applique des règles pour filtrer ou annoter les messages.
- **Auto-Delete on Idle** : Supprime les files d'attente après une période d'inactivité (min : 5 minutes).
- **Duplicate Detection** : Supprime les messages en double lors des renvois.
- **Batch Deletion** : Supprime en masse les messages expirés ou inutiles.

### Authorization-Rule / SAS Policy

Les politiques SAS définissent les autorisations d'accès pour les entités Azure Service Bus namespace (le plus important), files d'attente et sujets. Chaque politique a les composants suivants :

- **Permissions** : Cases à cocher pour spécifier les niveaux d'accès :
- Manage : Accorde un contrôle total sur l'entité, y compris la configuration et la gestion des autorisations.
- Send : Permet d'envoyer des messages à l'entité.
- Listen : Permet de recevoir des messages de l'entité.
- **Primary and Secondary Keys** : Ce sont des clés cryptographiques utilisées pour générer des jetons sécurisés pour authentifier l'accès.
- **Primary and Secondary Connection Strings** : Chaînes de connexion préconfigurées qui incluent le point de terminaison et la clé pour une utilisation facile dans les applications.
- **SAS Policy ARM ID** : Le chemin Azure Resource Manager (ARM) vers la politique pour identification programmatique.

### NameSpace

sku, règle d'autorisation,

### Enumeration

{{#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 }}


### Escalade de privilèges

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

### Post-exploitation

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

## Références

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