Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation

This commit is contained in:
Translator
2025-02-15 03:25:18 +00:00
parent 3a87be4418
commit c58f80b9f3
2 changed files with 101 additions and 34 deletions
@@ -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 <res-group> --namespace-name <namespace-name> --authorization-rule-name RootManageSharedAccessKey [--authorization-rule-name RootManageSharedAccessKey]
# Regenerate keys
az servicebus namespace authorization-rule keys renew --key [PrimaryKey|SecondaryKey] --resource-group <res-group> --namespace-name <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 <MyResourceGroup> \
--namespace-name <MyNamespace> \
--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 <res-group> --namespace-name <namespace-name> --topic-name <topic-name> --name <auth-rule-name>
# Regenerate keys (topics)
az servicebus topic authorization-rule keys renew --key [PrimaryKey|SecondaryKey] --resource-group <res-group> --namespace-name <namespace-name> --topic-name <topic-name> --name <auth-rule-name>
# List keys (queues)
az servicebus queue authorization-rule keys list --resource-group <res-group> --namespace-name <namespace-name> --queue-name <queue-name> --name <auth-rule-name>
# Regenerate keys (queues)
az servicebus queue authorization-rule keys renew --key [PrimaryKey|SecondaryKey] --resource-group <res-group> --namespace-name <namespace-name> --queue-name <queue-name> --name <auth-rule-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 <res-group> --namespace-name <namespace-name> --topic-name <topic-name> --name <auth-rule-name> --rights Manage Listen Send
# In a queue
az servicebus queue authorization-rule create --resource-group <res-group> --namespace-name <namespace-name> --queue-name <queue-name> --name <auth-rule-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 <res-group> --namespace-name <namespace-name> --topic-name <topic-name> --name <auth-rule-name> --rights Manage Listen Send
# In a queue
az servicebus queue authorization-rule update --resource-group <res-group> --namespace-name <namespace-name> --queue-name <queue-name> --name <auth-rule-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 <namespace-name> --resource-group <res-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 <MyResourceGroup> \
--namespace-name <MyNamespace> \
--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
@@ -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 dosta**: 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 <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>
# Namespace Enumeration
az servicebus namespace list
az servicebus namespace network-rule-set list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
@@ -79,6 +67,23 @@ az servicebus namespace authorization-rule list --resource-group <MyResourceGrou
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 }}