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

This commit is contained in:
Translator
2025-02-15 03:25:18 +00:00
parent c4d5a718eb
commit 2e3b67b71a
2 changed files with 97 additions and 30 deletions

View File

@@ -10,9 +10,81 @@ Für weitere Informationen siehe:
../az-services/az-servicebus-enum.md
{{#endref}}
### Nachrichten senden. Aktion: `Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action` ODER `Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action`
### Microsoft.ServiceBus/namespaces/authorizationrules/listKeys/action ODER Microsoft.ServiceBus/namespaces/authorizationrules/regenerateKeys/action
Sie können die `PrimaryConnectionString` abrufen, die als Anmeldeinformation für den Service Bus-Namespace fungiert. Mit dieser Verbindungszeichenfolge können Sie sich vollständig als der Service Bus-Namespace authentifizieren, was es Ihnen ermöglicht, Nachrichten an jede Warteschlange oder jedes Thema zu senden und potenziell mit dem System auf eine Weise zu interagieren, die den Betrieb stören, gültige Benutzer impersonieren oder schädliche Daten in den Nachrichtenworkflow injizieren könnte.
Diese Berechtigungen ermöglichen es Ihnen, die Schlüssel für lokale Autorisierungsregeln innerhalb eines Service Bus-Namensraums abzurufen oder zu regenerieren. Mit diesen Schlüsseln ist es möglich, sich als der Service Bus-Namensraum zu authentifizieren, was es Ihnen ermöglicht, Nachrichten an jede Warteschlange oder jedes Thema zu senden, Nachrichten von jeder Warteschlange oder jedem Abonnement zu empfangen oder potenziell mit dem System auf eine Weise zu interagieren, die den Betrieb stören, gültige Benutzer impersonieren oder schädliche Daten in den Nachrichtenworkflow injizieren könnte.
Beachten Sie, dass die **`RootManageSharedAccessKey`-Regel standardmäßig die volle Kontrolle** über den Service Bus-Namensraum hat und von der `az`-CLI verwendet wird. Es können jedoch auch andere Regeln mit anderen Schlüsselwerten existieren.
```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
Mit dieser Berechtigung ist es möglich, **eine neue Autorisierungsregel** mit allen Berechtigungen und eigenen Schlüsseln zu erstellen:
```bash
az servicebus namespace authorization-rule create --authorization-rule-name "myRule" --namespace-name mynamespacespdemo --resource-group Resource_Group_1 --rights Manage Listen Send
```
>[!WARNING]
>Dieser Befehl gibt keine Schlüssel zurück, daher müssen Sie diese mit den vorherigen Befehlen (und Berechtigungen) abrufen, um die Berechtigungen zu eskalieren.
Darüber hinaus ist es mit diesem Befehl (und `Microsoft.ServiceBus/namespaces/authorizationRules/read`) möglich, wenn Sie diese Aktion über die Azure CLI ausführen, eine vorhandene Autorisierungsregel zu aktualisieren und ihr mehr Berechtigungen zu geben (falls sie einige fehlten) mit dem folgenden Befehl:
```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 ODER Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/regenerateKeys/action
Spezifische Themen und Warteschlangen innerhalb eines Service Bus-Namensraums können eigene Autorisierungsregeln haben, die verwendet werden können, um den Zugriff auf die Entität zu steuern. Durch das Vorhandensein dieser Berechtigungen können Sie **die Schlüssel für diese lokalen Autorisierungsregeln abrufen oder regenerieren**, wodurch Sie sich als die Entität authentifizieren und potenziell Nachrichten senden oder empfangen, Abonnements verwalten oder mit dem System auf eine Weise interagieren können, die den Betrieb stören, gültige Benutzer impersonieren oder schädliche Daten in den Messaging-Workflow injizieren könnte.
```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
Mit dieser Berechtigung ist es möglich, **eine neue Autorisierungsregel** mit allen Berechtigungen und eigenen Schlüsseln zu erstellen:
```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]
>Dieser Befehl gibt keine Schlüssel zurück, daher müssen Sie diese mit den vorherigen Befehlen (und Berechtigungen) abrufen, um die Berechtigungen zu erhöhen.
Darüber hinaus ist es mit diesem Befehl (und `Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/read`), wenn Sie diese Aktion über die Azure CLI ausführen, möglich, eine vorhandene Autorisierungsregel zu aktualisieren und ihr mehr Berechtigungen zu geben (falls sie einige fehlten) mit dem folgenden Befehl:
```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, wenn az cli verwendet wird)
Mit diesen Berechtigungen **kann ein Angreifer die "lokale Authentifizierung" wieder aktivieren** mit dem folgenden Befehl, und daher werden alle Schlüssel aus den freigegebenen Richtlinien funktionieren.
```bash
az servicebus namespace update --disable-local-auth false -n <namespace-name> --resource-group <res-group>
```
### Nachrichten mit Schlüsseln senden (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action ODER Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action)
Sie können die `PrimaryConnectionString` abrufen, die als Anmeldeinformation für den Service Bus-Namespace fungiert. Mit dieser Verbindungszeichenfolge können Sie sich vollständig als der Service Bus-Namespace authentifizieren, was es Ihnen ermöglicht, Nachrichten an jede Warteschlange oder jedes Thema zu senden und potenziell mit dem System auf eine Weise zu interagieren, die den Betrieb stören, gültige Benutzer impersonieren oder bösartige Daten in den Nachrichtenworkflow injizieren könnte.
```python
#You need to install the following libraries
#pip install azure-servicebus
@@ -81,9 +153,9 @@ print("Messages Sent")
print("----------------------------")
```
### Nachrichten empfangen. Aktion: `Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action` ODER `Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action`
### Empfangen mit Schlüsseln (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action ODER Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action)
Sie können den PrimaryConnectionString abrufen, der als Anmeldeinformation für den Service Bus-Namespace dient. Mit diesem Verbindungsstring können Sie Nachrichten aus jeder Warteschlange oder jedem Abonnement innerhalb des Namensraums empfangen, was den Zugriff auf potenziell sensible oder kritische Daten ermöglicht, Datenexfiltration ermöglicht oder die Nachrichtenverarbeitung und Anwendungsabläufe stört.
Sie können die PrimaryConnectionString abrufen, die als Anmeldeinformation für den Service Bus-Namespace dient. Mit dieser Verbindungszeichenfolge können Sie Nachrichten aus jeder Warteschlange oder jedem Abonnement innerhalb des Namensraums empfangen, was den Zugriff auf potenziell sensible oder kritische Daten ermöglicht, Datenexfiltration ermöglicht oder die Nachrichtenverarbeitung und Anwendungsabläufe stört.
```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`
Wenn Sie über diese Berechtigungen verfügen, können Sie die Berechtigungen erhöhen, indem Sie gemeinsame Zugriffsschlüssel lesen oder erstellen. Diese Schlüssel ermöglichen die vollständige Kontrolle über den Service Bus-Namespace, einschließlich der Verwaltung von Warteschlangen, Themen und dem Senden/Empfangen von Nachrichten, wodurch möglicherweise rollenbasierte Zugriffskontrollen (RBAC) umgangen werden.
```bash
az servicebus namespace authorization-rule update \
--resource-group <MyResourceGroup> \
--namespace-name <MyNamespace> \
--name RootManageSharedAccessKey \
--rights Manage Listen Send
```
## Referenzen
- https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues

View File

@@ -4,7 +4,7 @@
## Service Bus
Azure Service Bus ist ein cloudbasierter **Messaging-Dienst**, der entwickelt wurde, um eine zuverlässige **Kommunikation zwischen verschiedenen Teilen einer Anwendung oder separaten Anwendungen** zu ermöglichen. Er fungiert als sicherer Mittelsmann und stellt sicher, dass Nachrichten sicher zugestellt werden, selbst wenn Sender und Empfänger nicht gleichzeitig arbeiten. Durch die Entkopplung von Systemen ermöglicht es Anwendungen, unabhängig zu arbeiten, während sie weiterhin Daten oder Anweisungen austauschen. Es ist besonders nützlich für Szenarien, die Lastverteilung über mehrere Arbeiter, zuverlässige Nachrichtenübermittlung oder komplexe Koordination erfordern, wie z.B. die Verarbeitung von Aufgaben in der richtigen Reihenfolge oder die sichere Verwaltung von Zugriffsrechten.
Azure Service Bus ist ein cloudbasierter **Messaging-Dienst**, der entwickelt wurde, um eine zuverlässige **Kommunikation zwischen verschiedenen Teilen einer Anwendung oder separaten Anwendungen** zu ermöglichen. Er fungiert als sicherer Mittelsmann und stellt sicher, dass Nachrichten sicher zugestellt werden, selbst wenn Sender und Empfänger nicht gleichzeitig arbeiten. Durch die Entkopplung von Systemen ermöglicht er es Anwendungen, unabhängig zu arbeiten, während sie weiterhin Daten oder Anweisungen austauschen. Er ist besonders nützlich für Szenarien, die Lastverteilung über mehrere Arbeiter, zuverlässige Nachrichtenübermittlung oder komplexe Koordination erfordern, wie z.B. die Verarbeitung von Aufgaben in der richtigen Reihenfolge oder die sichere Verwaltung von Zugriffsrechten.
### Schlüsselkonzepte
@@ -26,12 +26,12 @@ Einige erweiterte Funktionen sind:
- **Automatische Weiterleitung**: Überträgt Nachrichten zwischen Warteschlangen oder Themen im selben Namespace.
- **Dead-Lettering**: Erfasst nicht zustellbare Nachrichten zur Überprüfung.
- **Geplante Lieferung**: Verzögert die Nachrichtenverarbeitung für zukünftige Aufgaben.
- **Nachrichtenaussetzung**: Verschiebt die Nachrichtenabholung, bis sie bereit ist.
- **Nachrichtenaussetzung**: Verschiebt den Abruf von Nachrichten, bis sie bereit sind.
- **Transaktionen**: Gruppiert Operationen in atomare Ausführung.
- **Filter & Aktionen**: Wendet Regeln an, um Nachrichten zu filtern oder zu annotieren.
- **Automatisches Löschen bei Inaktivität**: Löscht Warteschlangen nach Inaktivität (min: 5 Minuten).
- **Duplikaterkennung**: Entfernt doppelte Nachrichten während der erneuten Übertragung.
- **Batch-Löschung**: Löscht abgelaufene oder unnötige Nachrichten in großen Mengen.
- **Batch-Löschung**: Löscht im Bulk abgelaufene oder unnötige Nachrichten.
### Autorisierungsregel / SAS-Richtlinie
@@ -49,23 +49,11 @@ SAS-Richtlinien definieren die Zugriffsberechtigungen für Azure Service Bus-Ent
sku, autorisierungsregel,
### Aufzählung
### Enumeration
{{#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 }}