mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-01 07:25:51 -08:00
Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes
This commit is contained in:
@@ -4,55 +4,65 @@
|
||||
|
||||
## Grundinformationen
|
||||
|
||||
Lernen Sie die Grundlagen von Azure und Entra ID auf der folgenden Seite:
|
||||
|
||||
{{#ref}}
|
||||
az-basic-information/
|
||||
{{#endref}}
|
||||
|
||||
## Azure Pentester/Red Team Methodik
|
||||
## Azure Pentester/Red Team Methodologie
|
||||
|
||||
Um eine AZURE-Umgebung zu auditieren, ist es sehr wichtig zu wissen: welche **Dienste verwendet werden**, was **exponiert** ist, wer **Zugriff** auf was hat und wie interne Azure-Dienste und **externe Dienste** verbunden sind.
|
||||
Um eine AZURE-Umgebung zu auditieren, ist es sehr wichtig zu wissen: welche **Dienste verwendet werden**, was **exponiert wird**, wer **Zugriff** auf was hat und wie interne Azure-Dienste und **externe Dienste** verbunden sind.
|
||||
|
||||
Aus der Sicht eines Red Teams ist der **erste Schritt, um eine Azure-Umgebung zu kompromittieren**, die Beschaffung von **Anmeldeinformationen** für Azure AD. Hier sind einige Ideen, wie man das erreichen kann:
|
||||
Aus der Sicht eines Red Teams ist der **erste Schritt, um eine Azure-Umgebung zu kompromittieren**, einen **Fuß in die Tür** zu bekommen.
|
||||
|
||||
- **Leaks** in github (oder ähnlichem) - OSINT
|
||||
- **Soziale** Ingenieurkunst
|
||||
- **Passwort**-Wiederverwendung (Passwort-Leaks)
|
||||
- Schwachstellen in Azure-gehosteten Anwendungen
|
||||
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) mit Zugriff auf den Metadaten-Endpunkt
|
||||
- **Lokales Datei Lesen**
|
||||
- `/home/USERNAME/.azure`
|
||||
- `C:\Users\USERNAME\.azure`
|
||||
- Die Datei **`accessTokens.json`** in `az cli` vor 2.30 - Jan2022 - speicherte **Zugriffstoken im Klartext**
|
||||
- Die Datei **`azureProfile.json`** enthält **Informationen** über den angemeldeten Benutzer.
|
||||
- **`az logout`** entfernt das Token.
|
||||
- Ältere Versionen von **`Az PowerShell`** speicherten **Zugriffstoken** im **Klartext** in **`TokenCache.dat`**. Es speichert auch **ServicePrincipalSecret** im **Klartext** in **`AzureRmContext.json`**. Das Cmdlet **`Save-AzContext`** kann verwendet werden, um **Token** zu **speichern**.\
|
||||
Verwenden Sie `Disconnect-AzAccount`, um sie zu entfernen.
|
||||
- 3rd Party **gehackt**
|
||||
- **Interner** Mitarbeiter
|
||||
- [**Häufiges Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (Anmeldeinformationen oder Oauth-App)
|
||||
- [Gerätekode-Authentifizierungsphishing](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
|
||||
- [Azure **Password Spraying**](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
|
||||
### Externe Enumeration & Erster Zugriff
|
||||
|
||||
Selbst wenn Sie **keinen Benutzer** innerhalb des Azure-Mandanten, den Sie angreifen, kompromittiert haben, können Sie **einige Informationen** daraus sammeln:
|
||||
Der erste Schritt ist natürlich, Informationen über den Mandanten, den Sie angreifen, zu enumerieren und zu versuchen, einen Fuß in die Tür zu bekommen.
|
||||
|
||||
Basierend auf dem Domainnamen ist es möglich zu wissen, **ob das Unternehmen Azure verwendet**, die **Mandanten-ID** zu erhalten, andere **gültige Domains** im selben Mandanten (falls vorhanden) zu erhalten und **relevante Informationen** wie ob SSO aktiviert ist, Mail-Konfigurationen, gültige Benutzer-E-Mails...
|
||||
|
||||
Überprüfen Sie die folgende Seite, um zu lernen, wie man die **externe Enumeration** durchführt:
|
||||
|
||||
{{#ref}}
|
||||
az-unauthenticated-enum-and-initial-entry/
|
||||
{{#endref}}
|
||||
|
||||
> [!NOTE]
|
||||
> Nachdem Sie Anmeldeinformationen erhalten haben, müssen Sie wissen, **wem diese Anmeldeinformationen gehören** und **auf was sie Zugriff haben**, daher müssen Sie eine grundlegende Enumeration durchführen:
|
||||
|
||||
## Grundlegende Enumeration
|
||||
Mit diesen Informationen sind die häufigsten Möglichkeiten, um einen Fuß in die Tür zu bekommen:
|
||||
- **OSINT**: Überprüfen Sie auf **Leaks** in Github oder einer anderen Open-Source-Plattform, die **Anmeldeinformationen** oder interessante Informationen enthalten könnte.
|
||||
- **Passwort**-Wiederverwendung, Leaks oder [Password Spraying](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
|
||||
- Anmeldeinformationen von einem Mitarbeiter kaufen
|
||||
- [**Häufiges Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (Anmeldeinformationen oder Oauth-App)
|
||||
- [Device Code Authentication Phishing](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
|
||||
- 3rd Party **gehackt**
|
||||
- Schwachstellen in Azure-gehosteten Anwendungen
|
||||
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) mit Zugriff auf den Metadaten-Endpunkt
|
||||
- **Subdomain-Übernahmen** wie in [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
|
||||
- Wenn ein Entwickler-Laptop kompromittiert ist ([WinPEAS und LinPEAS](https://github.com/peass-ng/PEASS-ng) können diese Informationen finden):
|
||||
- Innerhalb von **`<HOME>/.Azure`**
|
||||
- **`azureProfile.json`** enthält Informationen über angemeldete Benutzer aus der Vergangenheit
|
||||
- **`clouds.config` enthält** Informationen über Abonnements
|
||||
- **`service_principal_entries.json`** enthält Anwendungsanmeldeinformationen (Mandanten-ID, Clients und Geheimnis). Nur in Linux & macOS
|
||||
- **`msal_token_cache.json`** enthält Zugriffstoken und Aktualisierungstoken. Nur in Linux & macOS
|
||||
- **`service_principal_entries.bin`** und msal_token_cache.bin werden in Windows verwendet und sind mit DPAPI verschlüsselt
|
||||
- **`msal_http_cache.bin`** ist ein Cache von HTTP-Anfragen
|
||||
- Laden Sie es: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)`
|
||||
- **`AzureRmContext.json`** enthält Informationen über frühere Anmeldungen mit Az PowerShell (aber keine Anmeldeinformationen)
|
||||
- Innerhalb von **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** befinden sich mehrere `.bin`-Dateien mit **Zugriffstoken**, ID-Token und Kontoinformationen, die mit dem DPAPI des Benutzers verschlüsselt sind.
|
||||
- Es ist möglich, weitere **Zugriffstoken** in den `.tbres`-Dateien innerhalb von **`C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`** zu finden, die ein mit DPAPI verschlüsseltes Base64 mit Zugriffstoken enthalten.
|
||||
- In Linux und macOS können Sie **Zugriffstoken, Aktualisierungstoken und ID-Token** von Az PowerShell (falls verwendet) erhalten, indem Sie `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"` ausführen.
|
||||
- In Windows generiert dies nur ID-Token.
|
||||
- Es ist möglich zu sehen, ob Az PowerShell in Linux und macOS verwendet wurde, indem überprüft wird, ob `$HOME/.local/share/.IdentityService/` existiert (obwohl die enthaltenen Dateien leer und nutzlos sind).
|
||||
|
||||
> [!NOTE]
|
||||
> Denken Sie daran, dass der **lauteste** Teil der Enumeration das **Login** ist, nicht die Enumeration selbst.
|
||||
> Denken Sie daran, dass normalerweise der **lauteste** Teil der Enumeration das **Login** ist, nicht die Enumeration selbst.
|
||||
|
||||
### SSRF
|
||||
### Azure & Entra ID Tools
|
||||
|
||||
Wenn Sie ein SSRF auf einem Rechner innerhalb von Azure gefunden haben, überprüfen Sie diese Seite auf Tricks:
|
||||
Die folgenden Tools sind sehr nützlich, um sowohl Entra ID-Mandanten als auch Azure-Umgebungen langsam (um Erkennung zu vermeiden) oder automatisch (um Zeit zu sparen) zu enumerieren:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html
|
||||
az-enumeration-tools.md
|
||||
{{#endref}}
|
||||
|
||||
### Umgehung von Anmeldebedingungen
|
||||
@@ -61,16 +71,12 @@ https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-met
|
||||
|
||||
In Fällen, in denen Sie einige gültige Anmeldeinformationen haben, aber sich nicht anmelden können, sind dies einige gängige Schutzmaßnahmen, die vorhanden sein könnten:
|
||||
|
||||
- **IP-Whitelist** -- Sie müssen eine gültige IP kompromittieren
|
||||
- **IP-Whitelisting** -- Sie müssen eine gültige IP kompromittieren
|
||||
- **Geo-Beschränkungen** -- Finden Sie heraus, wo der Benutzer lebt oder wo sich die Büros des Unternehmens befinden, und erhalten Sie eine IP aus derselben Stadt (oder zumindest demselben Land)
|
||||
- **Browser** -- Möglicherweise ist nur ein Browser von bestimmten Betriebssystemen (Windows, Linux, Mac, Android, iOS) erlaubt. Finden Sie heraus, welches OS das Opfer/das Unternehmen verwendet.
|
||||
- Sie können auch versuchen, **Service Principal-Anmeldeinformationen** zu kompromittieren, da diese normalerweise weniger eingeschränkt sind und deren Anmeldung weniger überprüft wird.
|
||||
- **Browser** -- Möglicherweise ist nur ein Browser von bestimmten Betriebssystemen (Windows, Linux, Mac, Android, iOS) erlaubt. Finden Sie heraus, welches Betriebssystem das Opfer/das Unternehmen verwendet.
|
||||
- Sie können auch versuchen, **Anmeldeinformationen für den Dienstprinzipal** zu kompromittieren, da diese normalerweise weniger eingeschränkt sind und deren Anmeldung weniger überprüft wird.
|
||||
|
||||
Nachdem Sie dies umgangen haben, sollten Sie in der Lage sein, zu Ihrem ursprünglichen Setup zurückzukehren und weiterhin Zugriff zu haben.
|
||||
|
||||
### Subdomain-Übernahme
|
||||
|
||||
- [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
|
||||
Nachdem Sie dies umgangen haben, sollten Sie in der Lage sein, zu Ihrer ursprünglichen Konfiguration zurückzukehren und weiterhin Zugriff zu haben.
|
||||
|
||||
### Whoami
|
||||
|
||||
@@ -91,16 +97,7 @@ az account management-group list #Not allowed by default
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="AzureAD" }}
|
||||
```bash
|
||||
#Get the current session state
|
||||
Get-AzureADCurrentSessionInfo
|
||||
#Get details of the current tenant
|
||||
Get-AzureADTenantDetail
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Az PowerShell" }}
|
||||
{{#tab name="Az" }}
|
||||
```bash
|
||||
# Get the information about the current context (Account, Tenant, Subscription etc.)
|
||||
Get-AzContext
|
||||
@@ -110,21 +107,28 @@ Get-AzContext -ListAvailable
|
||||
Get-AzSubscription
|
||||
#Get Resource group
|
||||
Get-AzResourceGroup
|
||||
# Enumerate all resources visible to the current user
|
||||
Get-AzResource
|
||||
# Enumerate all Azure RBAC role assignments
|
||||
Get-AzRoleAssignment # For all users
|
||||
Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Mg" }}
|
||||
```bash
|
||||
#Get the current session
|
||||
Get-MgContext
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="AzureAD" }}
|
||||
```bash
|
||||
#Get the current session state
|
||||
Get-AzureADCurrentSessionInfo
|
||||
#Get details of the current tenant
|
||||
Get-AzureADTenantDetail
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
> [!CAUTION]
|
||||
> Eines der wichtigsten Befehle zur Auflistung von Azure ist **`Get-AzResource`** aus Az PowerShell, da er Ihnen **zeigt, über welche Ressourcen Ihr aktueller Benutzer Sichtbarkeit hat**.
|
||||
>
|
||||
> Sie können die gleichen Informationen in der **Webkonsole** erhalten, indem Sie zu [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) gehen oder nach "Alle Ressourcen" suchen.
|
||||
|
||||
### Entra ID Auflistung
|
||||
### Entra ID Aufzählung & Privilegieneskalation
|
||||
|
||||
Standardmäßig sollte jeder Benutzer **ausreichende Berechtigungen haben, um** Dinge wie Benutzer, Gruppen, Rollen, Dienstprinzipale... aufzulisten (siehe [Standard AzureAD-Berechtigungen](az-basic-information/index.html#default-user-permissions)).\
|
||||
Hier finden Sie einen Leitfaden:
|
||||
@@ -133,20 +137,49 @@ Hier finden Sie einen Leitfaden:
|
||||
az-services/az-azuread.md
|
||||
{{#endref}}
|
||||
|
||||
> [!NOTE]
|
||||
> Jetzt, da Sie **einige Informationen über Ihre Anmeldeinformationen haben** (und wenn Sie ein Rote-Team sind, hoffen wir, dass Sie **nicht entdeckt wurden**). Es ist an der Zeit herauszufinden, welche Dienste in der Umgebung verwendet werden.\
|
||||
> Im folgenden Abschnitt können Sie einige Möglichkeiten überprüfen, um **einige gängige Dienste aufzulisten.**
|
||||
Überprüfen Sie die **Post-Exploitation-Tools**, um Tools zur Eskalation von Berechtigungen in Entra ID wie **AzureHound** zu finden:
|
||||
|
||||
## App Service SCM
|
||||
{{#ref}}
|
||||
az-enumeration-tools.md#automated-post-exploitation-tools
|
||||
{{#endref}}
|
||||
|
||||
Kudu-Konsole, um sich im App Service 'Container' anzumelden.
|
||||
|
||||
## Webshell
|
||||
### Azure-Dienste auflisten
|
||||
|
||||
Verwenden Sie portal.azure.com und wählen Sie die Shell aus, oder verwenden Sie shell.azure.com für eine Bash- oder PowerShell. Der 'Disk' dieser Shell wird als Bilddatei in einem Speicherkonto gespeichert.
|
||||
Sobald Sie wissen, wer Sie sind, können Sie beginnen, die **Azure-Dienste, auf die Sie Zugriff haben**, aufzulisten.
|
||||
|
||||
## Azure DevOps
|
||||
Der Az PowerShell-Befehl **`Get-AzResource`** ermöglicht es Ihnen, **die Ressourcen zu erfahren, über die Ihr aktueller Benutzer Sichtbarkeit hat**.
|
||||
|
||||
Azure DevOps ist von Azure getrennt. Es hat Repositories, Pipelines (yaml oder Release), Boards, Wiki und mehr. Variablengruppen werden verwendet, um Variablenwerte und Geheimnisse zu speichern.
|
||||
Darüber hinaus können Sie die gleichen Informationen in der **Webkonsole** erhalten, indem Sie zu [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) gehen oder nach "Alle Ressourcen" suchen oder ausführen: `az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"`
|
||||
|
||||
Außerdem kann mit ausreichenden Berechtigungen die Rolle **`Get-AzRoleAssignment`** verwendet werden, um **alle Rollen** in der Abonnierung oder die Berechtigung über eine bestimmte Ressource aufzulisten, indem Sie sie wie folgt angeben: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**
|
||||
|
||||
Im folgenden Abschnitt finden Sie Informationen über die häufigsten Azure-Dienste und wie Sie diese auflisten können:
|
||||
|
||||
{{#ref}}
|
||||
az-services/
|
||||
{{#endref}}
|
||||
|
||||
### Privilegieneskalation, Post-Exploitation & Persistenz in Azure-Diensten
|
||||
|
||||
Sobald Sie wissen, wie die Azure-Umgebung strukturiert ist und welche Dienste verwendet werden, können Sie nach Möglichkeiten suchen, um **Berechtigungen zu eskalieren, lateral zu bewegen, andere Post-Exploitation-Angriffe durchzuführen und Persistenz aufrechtzuerhalten**.
|
||||
|
||||
Im folgenden Abschnitt finden Sie Informationen darüber, wie Sie Berechtigungen in den häufigsten Azure-Diensten eskalieren können:
|
||||
|
||||
{{#ref}}
|
||||
az-privilege-escalation/
|
||||
{{#endref}}
|
||||
|
||||
Im nächsten finden Sie Informationen darüber, wie Sie Post-Exploitation-Angriffe in den häufigsten Azure-Diensten durchführen können:
|
||||
|
||||
{{#ref}}
|
||||
az-post-exploitation/
|
||||
{{#endref}}
|
||||
|
||||
Im folgenden finden Sie Informationen darüber, wie Sie Persistenz in den häufigsten Azure-Diensten aufrechterhalten können:
|
||||
|
||||
{{#ref}}
|
||||
az-persistence/
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user