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 33c7a39c2..5883da5f3 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,9 +10,81 @@ Aby uzyskać więcej informacji, sprawdź: ../az-services/az-servicebus-enum.md {{#endref}} -### Wysyłanie wiadomości. Akcja: `Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action` LUB `Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action` +### Microsoft.ServiceBus/namespaces/authorizationrules/listKeys/action OR Microsoft.ServiceBus/namespaces/authorizationrules/regenerateKeys/action -Możesz uzyskać `PrimaryConnectionString`, który działa jako poświadczenie dla przestrzeni nazw Service Bus. Z tym ciągiem połączenia możesz w pełni uwierzytelnić się jako przestrzeń nazw Service Bus, co umożliwia wysyłanie wiadomości do dowolnej kolejki lub tematu oraz potencjalne interakcje z systemem w sposób, który może zakłócić operacje, podszywać się pod ważnych użytkowników lub wstrzykiwać złośliwe dane do przepływu wiadomości. +Te uprawnienia pozwalają na uzyskanie lub regenerację kluczy dla lokalnych reguł autoryzacji w obrębie przestrzeni nazw Service Bus. Używając tych kluczy, możliwe jest uwierzytelnienie się jako przestrzeń nazw Service Bus, co umożliwia wysyłanie wiadomości do dowolnej kolejki lub tematu, odbieranie wiadomości z dowolnej kolejki lub subskrypcji, lub potencjalnie interakcję z systemem w sposób, który może zakłócić operacje, podszywać się pod ważnych użytkowników lub wstrzykiwać złośliwe dane do przepływu wiadomości. + +Należy zauważyć, że domyślnie reguła **`RootManageSharedAccessKey` ma pełną kontrolę** nad przestrzenią nazw Service Bus i jest używana przez `az` cli, jednak mogą istnieć inne reguły z innymi wartościami kluczy. +```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 + +Dzięki temu uprawnieniu można **utworzyć nową regułę autoryzacji** ze wszystkimi uprawnieniami i własnymi kluczami za pomocą: +```bash +az servicebus namespace authorization-rule create --authorization-rule-name "myRule" --namespace-name mynamespacespdemo --resource-group Resource_Group_1 --rights Manage Listen Send +``` +>[!WARNING] +>To polecenie nie zwraca kluczy, więc musisz je uzyskać za pomocą poprzednich poleceń (i uprawnień), aby podnieść uprawnienia. + +Ponadto, za pomocą tego polecenia (i `Microsoft.ServiceBus/namespaces/authorizationRules/read`), jeśli wykonasz tę akcję za pomocą Azure CLI, możliwe jest zaktualizowanie istniejącej reguły autoryzacji i nadanie jej większych uprawnień (w przypadku, gdy ich brakowało) za pomocą następującego polecenia: +```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 OR Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/regenerateKeys/action + +Specyficzne tematy i kolejki w obrębie przestrzeni nazw Service Bus mogą mieć własne zasady autoryzacji, które mogą być używane do kontrolowania dostępu do jednostki. Posiadając te uprawnienia, możesz **pobierać lub regenerować klucze dla tych lokalnych zasad autoryzacji**, co umożliwia uwierzytelnienie się jako jednostka i potencjalnie wysyłanie lub odbieranie wiadomości, zarządzanie subskrypcjami lub interakcję z systemem w sposób, który może zakłócać operacje, podszywać się pod ważnych użytkowników lub wstrzykiwać złośliwe dane do przepływu wiadomości. +```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 + +Dzięki temu uprawnieniu można **utworzyć nową regułę autoryzacji** ze wszystkimi uprawnieniami i własnymi kluczami z: +```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] +>To polecenie nie zwraca kluczy, więc musisz je uzyskać za pomocą poprzednich poleceń (i uprawnień), aby podnieść uprawnienia. + +Ponadto, za pomocą tego polecenia (i `Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/read`) jeśli wykonasz tę akcję przez Azure CLI, możliwe jest zaktualizowanie istniejącej reguły autoryzacji i nadanie jej większych uprawnień (w przypadku, gdy ich brakowało) za pomocą następującego polecenia: +```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 if az cli is used) + +Z tymi uprawnieniami **atakujący może ponownie włączyć "lokalne uwierzytelnianie"** za pomocą następującego polecenia, a zatem wszystkie klucze z polityk współdzielonych będą działać. +```bash +az servicebus namespace update --disable-local-auth false -n --resource-group +``` +### Wysyłanie wiadomości z kluczami (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OR Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action) + +Możesz uzyskać `PrimaryConnectionString`, który działa jako poświadczenie dla przestrzeni nazw Service Bus. Dzięki temu ciągowi połączeń możesz w pełni uwierzytelnić się jako przestrzeń nazw Service Bus, co umożliwia wysyłanie wiadomości do dowolnej kolejki lub tematu oraz potencjalne interakcje z systemem w sposób, który może zakłócić operacje, podszywać się pod ważnych użytkowników lub wstrzykiwać złośliwe dane do przepływu wiadomości. ```python #You need to install the following libraries #pip install azure-servicebus @@ -81,9 +153,9 @@ print("Messages Sent") print("----------------------------") ``` -### Odbierz wiadomości. Akcja: `Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action` LUB `Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action` +### Odbierz za pomocą kluczy (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OR Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action) -Możesz uzyskać PrimaryConnectionString, który służy jako poświadczenie dla przestrzeni nazw Service Bus. Używając tego ciągu połączenia, możesz odbierać wiadomości z dowolnej kolejki lub subskrypcji w obrębie przestrzeni nazw, co umożliwia dostęp do potencjalnie wrażliwych lub krytycznych danych, umożliwiając eksfiltrację danych lub zakłócanie przetwarzania wiadomości i przepływów pracy aplikacji. +Możesz pobrać PrimaryConnectionString, który służy jako poświadczenie dla przestrzeni nazw Service Bus. Używając tego ciągu połączenia, możesz odbierać wiadomości z dowolnej kolejki lub subskrypcji w obrębie przestrzeni nazw, co umożliwia dostęp do potencjalnie wrażliwych lub krytycznych danych, umożliwiając eksfiltrację danych lub zakłócanie przetwarzania wiadomości i przepływów pracy aplikacji. ```python #You need to install the following libraries #pip install azure-servicebus @@ -127,17 +199,7 @@ asyncio.run(receive_and_process_messages()) print("Message Receiving Completed") print("----------------------------") ``` -### `Microsoft.ServiceBus/namespaces/authorizationRules/read` & `Microsoft.ServiceBus/namespaces/authorizationRules/write` - -Jeśli masz te uprawnienia, możesz podnieść uprawnienia, odczytując lub tworząc klucze dostępu współdzielonego. Te klucze umożliwiają pełną kontrolę nad przestrzenią nazw Service Bus, w tym zarządzanie kolejkami, tematami oraz wysyłaniem/odbieraniem wiadomości, potencjalnie omijając kontrolę dostępu opartą na rolach (RBAC). -```bash -az servicebus namespace authorization-rule update \ ---resource-group \ ---namespace-name \ ---name RootManageSharedAccessKey \ ---rights Manage Listen Send -``` -## Odniesienia +## References - 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 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 2c34c2124..3a899320b 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 @@ -10,9 +10,9 @@ Azure Service Bus to oparta na chmurze **usługa komunikacyjna**, zaprojektowana 1. **Kolejki:** jej celem jest przechowywanie wiadomości, aż odbiorca będzie gotowy. - Wiadomości są uporządkowane, opatrzone znacznikami czasu i trwale przechowywane. -- Dostarczane w trybie pull (na żądanie). +- Dostarczane w trybie pull (pobieranie na żądanie). - Wspiera komunikację punkt-punkt. -2. **Tematy:** Publikowanie-subskrypcja wiadomości do nadawania. +2. **Tematy:** Komunikacja publish-subscribe do nadawania. - Wiele niezależnych subskrypcji otrzymuje kopie wiadomości. - Subskrypcje mogą mieć zasady/filtry do kontrolowania dostarczania lub dodawania metadanych. - Wspiera komunikację wiele-do-wielu. @@ -22,14 +22,14 @@ Azure Service Bus to oparta na chmurze **usługa komunikacyjna**, zaprojektowana Niektóre zaawansowane funkcje to: -- **Sesje wiadomości**: Zapewnia przetwarzanie FIFO i wspiera wzorce żądanie-odpowiedź. -- **Automatyczne przekazywanie**: Przenosi wiadomości między kolejkami lub tematami w tej samej przestrzeni nazw. -- **Martwe litery**: Zbiera niedostarczalne wiadomości do przeglądu. -- **Zaplanuje dostarczanie**: Opóźnia przetwarzanie wiadomości na przyszłe zadania. +- **Sesje wiadomości**: Zapewnia przetwarzanie FIFO i wspiera wzorce request-response. +- **Auto-przekazywanie**: Przenosi wiadomości między kolejkami lub tematami w tej samej przestrzeni nazw. +- **Dead-Lettering**: Zbiera wiadomości, które nie mogą być dostarczone do przeglądu. +- **Zaplanuj dostawę**: Opóźnia przetwarzanie wiadomości na przyszłe zadania. - **Odwlekanie wiadomości**: Opóźnia pobieranie wiadomości do momentu, gdy będzie to możliwe. - **Transakcje**: Grupuje operacje w atomowe wykonanie. - **Filtry i działania**: Stosuje zasady do filtrowania lub adnotacji wiadomości. -- **Automatyczne usuwanie w stanie bezczynności**: Usuwa kolejki po braku aktywności (min: 5 minut). +- **Auto-usuwanie w bezczynności**: Usuwa kolejki po braku aktywności (min: 5 minut). - **Wykrywanie duplikatów**: Usuwa duplikaty wiadomości podczas ponownych wysyłek. - **Usuwanie wsadowe**: Hurtowo usuwa wygasłe lub niepotrzebne wiadomości. @@ -54,18 +54,6 @@ sku, zasada autoryzacji, {{#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 }}