diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md index eb32c0c9f..ee390773b 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md @@ -10,7 +10,79 @@ Pour plus d'informations, consultez : ../az-services/az-servicebus-enum.md {{#endref}} -### Envoyer des messages. Action : `Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action` OU `Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action` +### Microsoft.ServiceBus/namespaces/authorizationrules/listKeys/action OU Microsoft.ServiceBus/namespaces/authorizationrules/regenerateKeys/action + +Ces autorisations vous permettent d'obtenir ou de régénérer les clés pour les règles d'autorisation locales au sein d'un espace de noms Service Bus. En utilisant ces clés, il est possible de s'authentifier en tant qu'espace de noms Service Bus, vous permettant d'envoyer des messages à n'importe quelle file d'attente ou sujet, de recevoir des messages de n'importe quelle file d'attente ou abonnement, ou potentiellement d'interagir avec le système de manière à perturber les opérations, usurper des utilisateurs valides ou injecter des données malveillantes dans le flux de messagerie. + +Notez qu'en règle générale, la **`RootManageSharedAccessKey` règle a un contrôle total** sur l'espace de noms Service Bus et qu'elle est utilisée par le `az` cli, cependant, d'autres règles avec d'autres valeurs de clé peuvent exister. +```bash +# List keys +az servicebus namespace authorization-rule keys list --resource-group --namespace-name --authorization-rule-name RootManageSharedAccessKey [--authorization-rule-name RootManageSharedAccessKey] + +# Regenerate keys +az servicebus namespace authorization-rule keys renew --key [PrimaryKey|SecondaryKey] --resource-group --namespace-name [--authorization-rule-name RootManageSharedAccessKey] +``` +### Microsoft.ServiceBus/namespaces/AuthorizationRules/write + +Avec cette autorisation, il est possible de **créer une nouvelle règle d'autorisation** avec toutes les autorisations et ses propres clés avec : +```bash +az servicebus namespace authorization-rule create --authorization-rule-name "myRule" --namespace-name mynamespacespdemo --resource-group Resource_Group_1 --rights Manage Listen Send +``` +>[!WARNING] +>Cette commande ne répond pas avec les clés, vous devez donc les obtenir avec les commandes (et permissions) précédentes afin d'escalader les privilèges. + +De plus, avec cette commande (et `Microsoft.ServiceBus/namespaces/authorizationRules/read`), si vous effectuez cette action via l'Azure CLI, il est possible de mettre à jour une règle d'autorisation existante et de lui donner plus de permissions (au cas où elle en manquerait) avec la commande suivante : +```bash +az servicebus namespace authorization-rule update \ +--resource-group \ +--namespace-name \ +--name RootManageSharedAccessKey \ +--rights Manage Listen Send +``` +### Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/ListKeys/action OU Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/regenerateKeys/action + +Des sujets et des files d'attente spécifiques à l'intérieur d'un espace de noms Service Bus peuvent avoir leurs propres règles d'autorisation, qui peuvent être utilisées pour contrôler l'accès à l'entité. En ayant ces autorisations, vous pouvez **récupérer ou régénérer les clés pour ces règles d'autorisation locales**, vous permettant de vous authentifier en tant qu'entité et potentiellement d'envoyer ou de recevoir des messages, de gérer des abonnements ou d'interagir avec le système de manière à perturber les opérations, usurper des utilisateurs valides ou injecter des données malveillantes dans le flux de messages. +```bash +# List keys (topics) +az servicebus topic authorization-rule keys list --resource-group --namespace-name --topic-name --name + +# Regenerate keys (topics) +az servicebus topic authorization-rule keys renew --key [PrimaryKey|SecondaryKey] --resource-group --namespace-name --topic-name --name + +# List keys (queues) +az servicebus queue authorization-rule keys list --resource-group --namespace-name --queue-name --name + +# Regenerate keys (queues) +az servicebus queue authorization-rule keys renew --key [PrimaryKey|SecondaryKey] --resource-group --namespace-name --queue-name --name +``` +### Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/write + +Avec cette autorisation, il est possible de **créer une nouvelle règle d'autorisation** avec toutes les autorisations et ses propres clés avec : +```bash +# In a topic +az servicebus topic authorization-rule create --resource-group --namespace-name --topic-name --name --rights Manage Listen Send + +# In a queue +az servicebus queue authorization-rule create --resource-group --namespace-name --queue-name --name --rights Manage Listen Send +``` +>[!WARNING] +>Cette commande ne répond pas avec les clés, vous devez donc les obtenir avec les commandes (et permissions) précédentes afin d'escalader les privilèges. + +De plus, avec cette commande (et `Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/read`), si vous effectuez cette action via l'Azure CLI, il est possible de mettre à jour une règle d'autorisation existante et de lui donner plus de permissions (au cas où elle en manquerait) avec la commande suivante : +```bash +# In a topic +az servicebus topic authorization-rule update --resource-group --namespace-name --topic-name --name --rights Manage Listen Send + +# In a queue +az servicebus queue authorization-rule update --resource-group --namespace-name --queue-name --name --rights Manage Listen Send +``` +### Microsoft.ServiceBus/namespaces/write (& Microsoft.ServiceBus/namespaces/read si az cli est utilisé) + +Avec ces autorisations, **un attaquant peut réactiver "l'authentification locale"** avec la commande suivante et donc toutes les clés des politiques partagées fonctionneront. +```bash +az servicebus namespace update --disable-local-auth false -n --resource-group +``` +### Envoyer des messages avec des clés (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OU Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action) Vous pouvez récupérer le `PrimaryConnectionString`, qui agit comme un identifiant pour le namespace Service Bus. Avec cette chaîne de connexion, vous pouvez vous authentifier complètement en tant que namespace Service Bus, vous permettant d'envoyer des messages à n'importe quelle file d'attente ou sujet et potentiellement d'interagir avec le système de manière à perturber les opérations, usurper des utilisateurs valides ou injecter des données malveillantes dans le flux de messagerie. ```python @@ -81,9 +153,9 @@ print("Messages Sent") print("----------------------------") ``` -### Recevoir des messages. Action : `Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action` OU `Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action` +### Recevoir avec des clés (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OU Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action) -Vous pouvez récupérer le PrimaryConnectionString, qui sert de credential pour le namespace Service Bus. En utilisant cette chaîne de connexion, vous pouvez recevoir des messages de n'importe quelle file d'attente ou abonnement au sein du namespace, permettant l'accès à des données potentiellement sensibles ou critiques, facilitant l'exfiltration de données ou interférant avec le traitement des messages et les flux de travail des applications. +Vous pouvez récupérer le PrimaryConnectionString, qui sert de credential pour le namespace Service Bus. En utilisant cette chaîne de connexion, vous pouvez recevoir des messages de n'importe quelle file d'attente ou abonnement au sein du namespace, permettant l'accès à des données potentiellement sensibles ou critiques, facilitant l'exfiltration de données, ou interférant avec le traitement des messages et les flux de travail des applications. ```python #You need to install the following libraries #pip install azure-servicebus @@ -127,16 +199,6 @@ asyncio.run(receive_and_process_messages()) print("Message Receiving Completed") print("----------------------------") ``` -### `Microsoft.ServiceBus/namespaces/authorizationRules/read` & `Microsoft.ServiceBus/namespaces/authorizationRules/write` - -Si vous avez ces autorisations, vous pouvez élever vos privilèges en lisant ou en créant des clés d'accès partagé. Ces clés permettent un contrôle total sur l'espace de noms Service Bus, y compris la gestion des files d'attente, des sujets et l'envoi/réception de messages, contournant potentiellement les contrôles d'accès basés sur les rôles (RBAC). -```bash -az servicebus namespace authorization-rule update \ ---resource-group \ ---namespace-name \ ---name RootManageSharedAccessKey \ ---rights Manage Listen Send -``` ## Références - https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues diff --git a/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md b/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md index bddbd2a83..cf8402bd2 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md +++ b/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md @@ -54,18 +54,6 @@ sku, règle d'autorisation, {{#tabs }} {{#tab name="az cli" }} ```bash -# Queue Enumeration -az servicebus queue list --resource-group --namespace-name -az servicebus queue show --resource-group --namespace-name --name - -# Topic Enumeration -az servicebus topic list --resource-group --namespace-name -az servicebus topic show --resource-group --namespace-name --name - -# Susbscription Enumeration -az servicebus topic subscription list --resource-group --namespace-name --topic-name -az servicebus topic subscription show --resource-group --namespace-name --topic-name --name - # Namespace Enumeration az servicebus namespace list az servicebus namespace network-rule-set list --resource-group --namespace-name @@ -79,6 +67,23 @@ az servicebus namespace authorization-rule list --resource-group --namespace-name --queue-name az servicebus topic authorization-rule list --resource-group --namespace-name --topic-name az servicebus namespace authorization-rule keys list --resource-group --namespace-name --name + +# Get keys +az servicebus namespace authorization-rule keys list --resource-group --namespace-name [--authorization-rule-name RootManageSharedAccessKey] +az servicebus topic authorization-rule keys list --resource-group --namespace-name --topic-name --name +az servicebus queue authorization-rule keys list --resource-group --namespace-name --queue-name --name + +# Queue Enumeration +az servicebus queue list --resource-group --namespace-name +az servicebus queue show --resource-group --namespace-name --name + +# Topic Enumeration +az servicebus topic list --resource-group --namespace-name +az servicebus topic show --resource-group --namespace-name --name + +# Susbscription Enumeration +az servicebus topic subscription list --resource-group --namespace-name --topic-name +az servicebus topic subscription show --resource-group --namespace-name --topic-name --name ``` {{#endtab }}