Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes

This commit is contained in:
Translator
2025-01-26 10:44:45 +00:00
parent 0aaa7ee0bb
commit 92167950e1
3 changed files with 64 additions and 60 deletions

View File

@@ -31,62 +31,7 @@ az-unauthenticated-enum-and-initial-entry/
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 normalerweise der **lauteste** Teil der Enumeration das **Login** ist, nicht die Enumeration selbst.
### Azure & Entra ID Tools
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}}
az-enumeration-tools.md
{{#endref}}
### Umgehung von Anmeldebedingungen
<figure><img src="../../images/image (268).png" alt=""><figcaption></figcaption></figure>
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-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 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 Ihrer ursprünglichen Konfiguration zurückzukehren und weiterhin Zugriff zu haben.
### Whoami
> [!CAUTION]
> Lernen Sie, **wie man** az cli, AzureAD und Az PowerShell im Abschnitt [**Az - Entra ID**](az-services/az-azuread.md) installiert.
Eine der ersten Dinge, die Sie wissen müssen, ist **wer Sie sind** (in welcher Umgebung Sie sich befinden):
{{#tabs }}
{{#tab name="az cli" }}
- Anmeldeinformationen von
```bash
az account list
az account tenant list # Current tenant info
@@ -130,7 +75,7 @@ Get-AzureADTenantDetail
### 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)).\
Standardmäßig sollte jeder Benutzer **genug 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:
{{#ref}}
@@ -148,13 +93,32 @@ az-enumeration-tools.md#automated-post-exploitation-tools
Sobald Sie wissen, wer Sie sind, können Sie beginnen, die **Azure-Dienste, auf die Sie Zugriff haben**, aufzulisten.
Sie sollten herausfinden, welche **Berechtigungen Sie** über die Ressourcen haben. Dazu:
1. **Finden Sie die Ressource, auf die Sie Zugriff haben**:
Der Az PowerShell-Befehl **`Get-AzResource`** ermöglicht es Ihnen, **die Ressourcen zu erfahren, über die Ihr aktueller Benutzer Sichtbarkeit hat**.
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`**
2. **Finden Sie die Berechtigungen, die Sie über die Ressourcen haben, auf die Sie Zugriff haben, und finden Sie die Ihnen zugewiesenen Rollen**:
Im folgenden Abschnitt finden Sie Informationen über die häufigsten Azure-Dienste und wie Sie diese auflisten können:
Beachten Sie, dass Sie die Berechtigung **`Microsoft.Authorization/roleAssignments/read`** benötigen, um diese Aktion auszuführen.
Darüber hinaus kann mit ausreichenden Berechtigungen die Rolle **`Get-AzRoleAssignment`** verwendet werden, um **alle Rollen** im Abonnement 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`**.
Es ist auch möglich, diese Informationen zu erhalten, indem Sie **`az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`** ausführen, wie in:
- **`az rest --method GET --uri "https://management.azure.com//subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`**
3. **Finden Sie die granularen Berechtigungen der Ihnen zugewiesenen Rollen**:
Um die granularen Berechtigungen zu erhalten, könnten Sie **`(Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions`** ausführen.
Oder rufen Sie die API direkt mit **`az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2020-08-01-preview" | jq ".properties"`** auf.
Im folgenden Abschnitt finden Sie **Informationen über die häufigsten Azure-Dienste und wie man sie auflistet**:
{{#ref}}
az-services/

View File

@@ -1 +0,0 @@
# Az - Privilegieneskalation

View File

@@ -0,0 +1,41 @@
# Az - Storage Unauth
{{#include ../../../banners/hacktricks-training.md}}
## Storage Unauth
Für weitere Informationen über Storage siehe:
{{#ref}}
../az-services/az-storage.md
{{#endref}}
### Offener Storage
Sie könnten offenen Storage mit einem Tool wie [**InvokeEnumerateAzureBlobs.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/Misc/Invoke-EnumerateAzureBlobs.ps1) entdecken, das die Datei **`Microburst/Misc/permutations.txt`** verwendet, um Permutationen (sehr einfach) zu generieren, um **offene Storage-Konten zu finden**.
```bash
Import-Module .\MicroBurst\MicroBurst.psm1
Invoke-EnumerateAzureBlobs -Base corp
[...]
https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
[...]
# Access https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
# Check: <Name>ssh_info.json</Name>
# Access then https://corpcommon.blob.core.windows.net/secrets/ssh_info.json
```
Sie können auch eine Methode von [**MicroBust**](https://github.com/NetSPI/MicroBurst) für ein solches Ziel verwenden. Diese Funktion sucht den Basisdomänennamen (und einige Permutationen) in mehreren **azure-Domänen** (einschließlich Speicherdomänen):
```bash
Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
Invoke-EnumerateAzureSubDomains -Base corp -Verbose
```
### SAS-URLs
Eine _**Shared Access Signature**_ (SAS) URL ist eine URL, die **Zugriff** auf einen bestimmten Teil eines Speicherkontos gewährt (kann ein vollständiger Container, eine Datei...) mit bestimmten Berechtigungen (lesen, schreiben...) über die Ressourcen. Wenn Sie eine geleakte finden, könnten Sie in der Lage sein, auf sensible Informationen zuzugreifen, sie sehen so aus (dies ist der Zugriff auf einen Container, wenn es nur den Zugriff auf eine Datei gewährt, enthält der Pfad der URL auch diese Datei):
`https://<storage_account_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D`
Verwenden Sie [**Storage Explorer**](https://azure.microsoft.com/en-us/features/storage-explorer/), um auf die Daten zuzugreifen
{{#include ../../../banners/hacktricks-training.md}}