mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-17 23:25:37 -08:00
Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation
This commit is contained in:
@@ -8,7 +8,7 @@ Azure App Services ermöglicht Entwicklern, **Webanwendungen, mobile App-Backend
|
||||
|
||||
Jede App läuft in einer Sandbox, aber die Isolation hängt von den App Service-Plänen ab:
|
||||
|
||||
- Apps in den kostenlosen und gemeinsamen Stufen laufen auf **gemeinsamen VMs**
|
||||
- Apps in den kostenlosen und gemeinsamen Stufen laufen auf **geteilten VMs**
|
||||
- Apps in den Standard- und Premium-Stufen laufen auf **dedizierten VMs, die nur von Apps** im selben App Service-Plan geteilt werden.
|
||||
- Die isolierten Stufen laufen auf **dedizierten VMs in dedizierten virtuellen Netzwerken**, was die Isolation der Apps verbessert.
|
||||
|
||||
@@ -17,9 +17,9 @@ Jede App läuft in einer Sandbox, aber die Isolation hängt von den App Service-
|
||||
|
||||
Apps haben einige interessante Konfigurationen:
|
||||
|
||||
- **Always On**: Stellt sicher, dass die App immer läuft. Wenn nicht aktiviert, wird die App nach 20 Minuten Inaktivität gestoppt und startet wieder, wenn eine Anfrage eingeht.
|
||||
- **Always On**: Stellt sicher, dass die App immer läuft. Wenn dies nicht aktiviert ist, wird die App nach 20 Minuten Inaktivität gestoppt und startet erneut, wenn eine Anfrage eingeht.
|
||||
- Dies ist entscheidend, wenn Sie einen Webjob haben, der kontinuierlich laufen muss, da der Webjob stoppt, wenn die App stoppt.
|
||||
- **SSH**: Wenn aktiviert, kann ein Benutzer mit ausreichenden Berechtigungen über SSH eine Verbindung zur App herstellen.
|
||||
- **SSH**: Wenn aktiviert, kann sich ein Benutzer mit ausreichenden Berechtigungen über SSH mit der App verbinden.
|
||||
- **Debugging**: Wenn aktiviert, kann ein Benutzer mit ausreichenden Berechtigungen die App debuggen. Dies wird jedoch automatisch alle 48 Stunden deaktiviert.
|
||||
- **Web App + Datenbank**: Die Webkonsole ermöglicht es, eine App mit einer Datenbank zu erstellen. In diesem Fall ist es möglich, die zu verwendende Datenbank auszuwählen (SQLAzure, PostgreSQL, MySQL, MongoDB), und es ermöglicht auch die Erstellung eines Azure Cache für Redis.
|
||||
- Die URL, die die Anmeldeinformationen für die Datenbank und Redis enthält, wird in den **appsettings** gespeichert.
|
||||
@@ -28,14 +28,14 @@ Apps haben einige interessante Konfigurationen:
|
||||
|
||||
## Basisauthentifizierung
|
||||
|
||||
Beim Erstellen einer Webanwendung (und einer Azure-Funktion normalerweise) ist es möglich anzugeben, ob **Basisauthentifizierung aktiviert werden soll** (standardmäßig deaktiviert). Dies aktiviert im Wesentlichen **SCM (Source Control Manager) und FTP (File Transfer Protocol)** für die Anwendung, sodass die Anwendung mit diesen Technologien bereitgestellt werden kann.
|
||||
Beim Erstellen einer Webanwendung (und einer Azure-Funktion normalerweise) ist es möglich anzugeben, ob **die Basisauthentifizierung aktiviert werden soll** (standardmäßig deaktiviert). Dies aktiviert im Wesentlichen **SCM (Source Control Manager) und FTP (File Transfer Protocol)** für die Anwendung, sodass die Anwendung mit diesen Technologien bereitgestellt werden kann.
|
||||
|
||||
Um auf die SCM- und FTP-Server zuzugreifen, sind ein **Benutzername und ein Passwort** erforderlich. Daher stellt Azure einige **APIs zur Verfügung, um die URLs** zu diesen Plattformen und die Anmeldeinformationen zu erhalten.
|
||||
|
||||
Der **FTP-Server hat keine besondere Magie**, mit der gültigen URL, dem Benutzernamen und dem Passwort ist es möglich, eine Verbindung herzustellen und Lese- und Schreibberechtigungen über die App-Umgebung zu erhalten.
|
||||
Der **FTP-Server hat keine besondere Magie**, mit der gültigen URL, dem Benutzernamen und dem Passwort ist es möglich, sich zu verbinden und Lese- und Schreibberechtigungen über die App-Umgebung zu erhalten.
|
||||
|
||||
Die SCM
|
||||
Es ist möglich, sich über einen Webbrowser unter `https://<SMC-URL>/BasicAuth` mit der SCM zu verbinden und alle Dateien und Bereitstellungen dort zu überprüfen.
|
||||
Das SCM
|
||||
Es ist möglich, sich über einen Webbrowser unter `https://<SMC-URL>/BasicAuth` mit dem SCM zu verbinden und alle Dateien und Bereitstellungen dort zu überprüfen.
|
||||
|
||||
### Kudu
|
||||
|
||||
@@ -61,7 +61,7 @@ App Services erlauben standardmäßig das Hochladen des Codes als Zip-Datei, erm
|
||||
- Die derzeit unterstützten Drittanbieterquellen sind **Github** und **Bitbucket**.
|
||||
- Sie können die Authentifizierungstokens erhalten, indem Sie `az rest --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"` ausführen.
|
||||
- Azure wird standardmäßig eine **Github Action** einrichten, um den Code jedes Mal in den App Service bereitzustellen, wenn der Code aktualisiert wird.
|
||||
- Es ist auch möglich, ein **remote git repository** (mit Benutzername und Passwort) anzugeben, um den Code von dort abzurufen.
|
||||
- Es ist auch möglich, ein **remote git repository** (mit Benutzername und Passwort) anzugeben, um den Code von dort zu erhalten.
|
||||
- Sie können die Anmeldeinformationen für das Remote-Repo erhalten, indem Sie `az webapp deployment source show --name <app-name> --resource-group <res-group>` oder `az rest --method POST --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/config/metadata/list?api-version=2022-03-01" --resource "https://management.azure.com"` ausführen.
|
||||
- Es ist auch möglich, ein **Azure Repository** zu verwenden.
|
||||
- Es ist auch möglich, ein **lokales git repository** zu konfigurieren.
|
||||
@@ -77,7 +77,7 @@ Es gibt 2 Arten von Webjobs:
|
||||
|
||||
Webjobs sind aus der Perspektive eines Angreifers sehr interessant, da sie verwendet werden könnten, um **Code** in der Umgebung auszuführen und **Berechtigungen** auf die angehängten verwalteten Identitäten zu **eskalieren**.
|
||||
|
||||
Darüber hinaus ist es immer interessant, die von den Webjobs generierten **Protokolle** zu überprüfen, da sie **sensible Informationen** enthalten könnten.
|
||||
Darüber hinaus ist es immer interessant, die **Protokolle** zu überprüfen, die von den Webjobs generiert werden, da sie **sensible Informationen** enthalten könnten.
|
||||
|
||||
## Slots
|
||||
|
||||
@@ -89,7 +89,7 @@ Darüber hinaus ist es möglich, einen **Prozentsatz des Traffics** an einen bes
|
||||
|
||||
Im Grunde sind **Azure Function Apps eine Untergruppe von Azure App Service** in der Webkonsole, und wenn Sie zur Webkonsole gehen und alle App-Dienste auflisten oder `az webapp list` im az cli ausführen, werden Sie auch **die Function Apps dort aufgelistet sehen**.
|
||||
|
||||
Daher haben beide Dienste tatsächlich größtenteils die **gleichen Konfigurationen, Funktionen und Optionen im az cli**, obwohl sie diese möglicherweise etwas anders konfigurieren (wie Standardwerte von appsettings oder die Verwendung eines Speicherkontos in den Function Apps).
|
||||
Daher haben beide Dienste tatsächlich größtenteils die **gleichen Konfigurationen, Funktionen und Optionen im az cli**, obwohl sie sie möglicherweise etwas anders konfigurieren (wie Standardwerte von appsettings oder die Verwendung eines Speicherkontos in den Function Apps).
|
||||
|
||||
## Enumeration
|
||||
|
||||
@@ -156,6 +156,9 @@ az webapp config storage-account list --name <name> --resource-group <res-group>
|
||||
# Get configured container (if any) in the webapp, it could contain credentials
|
||||
az webapp config container show --name <name> --resource-group <res-group>
|
||||
|
||||
# Get git URL to access the code
|
||||
az webapp deployment source config-local-git --resource-group <res-group> -n <name>
|
||||
|
||||
# Get Webjobs
|
||||
az webapp webjob continuous list --resource-group <res-group> --name <app-name>
|
||||
az webapp webjob triggered list --resource-group <res-group> --name <app-name>
|
||||
@@ -217,24 +220,7 @@ done
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
#### Anmeldeinformationen erhalten & Zugriff auf den Webanwendungscode erhalten
|
||||
```bash
|
||||
# Get connection strings that could contain credentials (with DBs for example)
|
||||
az webapp config connection-string list --name <name> --resource-group <res-group>
|
||||
## Check how to use the DBs connection strings in the SQL page
|
||||
|
||||
# Get credentials to access the code and DB credentials if configured.
|
||||
az webapp deployment list-publishing-profiles --resource-group <res-group> -n <name>
|
||||
|
||||
|
||||
# Get git URL to access the code
|
||||
az webapp deployment source config-local-git --resource-group <res-group> -n <name>
|
||||
|
||||
# Access/Modify the code via git
|
||||
git clone 'https://<username>:<password>@name.scm.azurewebsites.net/repo-name.git'
|
||||
## In my case the username was: $nameofthewebapp and the password some random chars
|
||||
## If you change the code and do a push, the app is automatically redeployed
|
||||
```
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-app-services-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
Reference in New Issue
Block a user