# Az - Service Bus Post Exploitation

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

## Service Bus

Pour plus d'informations, consultez :

{{#ref}}
../az-services/az-servicebus-enum.md
{{#endref}}

### Actions : `Microsoft.ServiceBus/namespaces/Delete`

Un attaquant disposant de cette autorisation peut supprimer un namespace Azure Service Bus entier. Cette action supprime le namespace et toutes les ressources associées, y compris les files d'attente, les sujets, les abonnements et leurs messages, provoquant des perturbations généralisées et une perte de données permanente dans tous les systèmes et flux de travail dépendants.
```bash
az servicebus namespace delete --resource-group <ResourceGroupName> --name <NamespaceName>
```
### Actions: `Microsoft.ServiceBus/namespaces/topics/Delete`

Un attaquant disposant de cette autorisation peut supprimer un sujet Azure Service Bus. Cette action supprime le sujet ainsi que toutes ses abonnements et messages associés, ce qui peut entraîner la perte de données critiques et perturber les systèmes et flux de travail dépendant du sujet.
```bash
az servicebus topic delete --resource-group <ResourceGroupName> --namespace-name <NamespaceName> --name <TopicName>
```
### Actions: `Microsoft.ServiceBus/namespaces/queues/Delete`

Un attaquant disposant de cette autorisation peut supprimer une file d'attente Azure Service Bus. Cette action supprime la file d'attente et tous les messages qui s'y trouvent, ce qui peut entraîner la perte de données critiques et perturber les systèmes et les flux de travail dépendant de la file d'attente.
```bash
az servicebus queue delete --resource-group <ResourceGroupName> --namespace-name <NamespaceName> --name <QueueName>
```
### Actions: `Microsoft.ServiceBus/namespaces/topics/subscriptions/Delete`

Un attaquant disposant de cette autorisation peut supprimer un abonnement Azure Service Bus. Cette action supprime l'abonnement et tous ses messages associés, perturbant potentiellement les flux de travail, le traitement des données et les opérations système s'appuyant sur l'abonnement.
```bash
az servicebus topic subscription delete --resource-group <ResourceGroupName> --namespace-name <NamespaceName> --topic-name <TopicName> --name <SubscriptionName>
```
### Actions : `Microsoft.ServiceBus/namespaces/write` & `Microsoft.ServiceBus/namespaces/read`

Un attaquant ayant des permissions pour créer ou modifier des espaces de noms Azure Service Bus peut exploiter cela pour perturber les opérations, déployer des ressources non autorisées ou exposer des données sensibles. Ils peuvent modifier des configurations critiques telles que l'activation de l'accès au réseau public, la réduction des paramètres de cryptage ou le changement de SKU pour dégrader les performances ou augmenter les coûts. De plus, ils pourraient désactiver l'authentification locale, manipuler les emplacements des répliques ou ajuster les versions TLS pour affaiblir les contrôles de sécurité, rendant la mauvaise configuration des espaces de noms un risque significatif après exploitation.
```bash
az servicebus namespace create --resource-group <ResourceGroupName> --name <NamespaceName> --location <Location>
az servicebus namespace update --resource-group <ResourceGroupName> --name <NamespaceName> --tags <Key=Value>
```
### Actions : `Microsoft.ServiceBus/namespaces/queues/write` (`Microsoft.ServiceBus/namespaces/queues/read`)

Un attaquant ayant les permissions de créer ou de modifier des files d'attente Azure Service Bus (pour modifier la file d'attente, vous aurez également besoin de l'Action : `Microsoft.ServiceBus/namespaces/queues/read`) peut exploiter cela pour intercepter des données, perturber des flux de travail ou permettre un accès non autorisé. Ils peuvent altérer des configurations critiques telles que le transfert de messages vers des points de terminaison malveillants, ajuster le TTL des messages pour conserver ou supprimer des données de manière inappropriée, ou activer le dead-lettering pour interférer avec la gestion des erreurs. De plus, ils pourraient manipuler les tailles de file d'attente, les durées de verrouillage ou les statuts pour perturber la fonctionnalité du service ou échapper à la détection, ce qui en fait un risque significatif après exploitation.
```bash
az servicebus queue create --resource-group <ResourceGroupName> --namespace-name <NamespaceName> --name <QueueName>
az servicebus queue update --resource-group <ResourceGroupName> --namespace-name <NamespaceName> --name <QueueName>
```
### Actions : `Microsoft.ServiceBus/namespaces/topics/write` (`Microsoft.ServiceBus/namespaces/topics/read`)

Un attaquant ayant des permissions pour créer ou modifier des sujets (pour modifier le sujet, vous aurez également besoin de l'Action : `Microsoft.ServiceBus/namespaces/topics/read`) au sein d'un espace de noms Azure Service Bus peut exploiter cela pour perturber les flux de messages, exposer des données sensibles ou permettre des actions non autorisées. En utilisant des commandes comme az servicebus topic update, ils peuvent manipuler des configurations telles que l'activation du partitionnement pour un usage abusif de l'évolutivité, modifier les paramètres TTL pour conserver ou rejeter des messages de manière inappropriée, ou désactiver la détection des doublons pour contourner les contrôles. De plus, ils pourraient ajuster les limites de taille des sujets, changer le statut pour perturber la disponibilité, ou configurer des sujets express pour stocker temporairement des messages interceptés, faisant de la gestion des sujets un point critique pour l'atténuation post-exploitation.
```bash
az servicebus topic create --resource-group <ResourceGroupName> --namespace-name <NamespaceName> --name <TopicName>
az servicebus topic update --resource-group <ResourceGroupName> --namespace-name <NamespaceName> --name <TopicName>
```
### Actions : `Microsoft.ServiceBus/namespaces/topics/subscriptions/write` (`Microsoft.ServiceBus/namespaces/topics/subscriptions/read`)

Un attaquant ayant des permissions pour créer ou modifier des abonnements (pour modifier l'abonnement, vous aurez également besoin de l'Action : `Microsoft.ServiceBus/namespaces/topics/subscriptions/read`) au sein d'un sujet Azure Service Bus peut exploiter cela pour intercepter, rediriger ou perturber les flux de messages. En utilisant des commandes comme az servicebus topic subscription update, ils peuvent manipuler des configurations telles que l'activation du dead lettering pour détourner des messages, transférer des messages vers des points de terminaison non autorisés, ou modifier la durée de vie (TTL) et la durée de verrouillage pour conserver ou interférer avec la livraison des messages. De plus, ils peuvent modifier les paramètres de statut ou de nombre maximal de livraisons pour perturber les opérations ou échapper à la détection, rendant le contrôle des abonnements un aspect critique des scénarios de post-exploitation.
```bash
az servicebus topic subscription create --resource-group <ResourceGroupName> --namespace-name <NamespaceName> --topic-name <TopicName> --name <SubscriptionName>
az servicebus topic subscription update --resource-group <ResourceGroupName> --namespace-name <NamespaceName> --topic-name <TopicName> --name <SubscriptionName>
```
### Actions : `AuthorizationRules` Envoyer & Recevoir des Messages

Regardez ici :

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

## Références

- https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues
- https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api
- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes
- https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless
- https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus
- https://learn.microsoft.com/en-us/cli/azure/servicebus/namespace?view=azure-cli-latest
- https://learn.microsoft.com/en-us/cli/azure/servicebus/queue?view=azure-cli-latest

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