mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-31 15:05:44 -08:00
Translated ['.github/pull_request_template.md', 'src/README.md', 'src/pe
This commit is contained in:
@@ -4,14 +4,14 @@
|
||||
|
||||
## Grundinformationen
|
||||
|
||||
**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.
|
||||
**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.
|
||||
|
||||
> [!NOTE]
|
||||
> Beachten Sie, dass **Funktionen ein 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.
|
||||
> 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 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 erfordern.
|
||||
- **Flex Consumption Plan**: Bietet **dynamisches, ereignisgesteuertes Skalieren** mit einer nutzungsabhängigen Preisgestaltung, 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.
|
||||
- **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.
|
||||
@@ -30,7 +30,7 @@ Darüber hinaus wird durch das Ändern des Codes im Bucket (in den verschiedenen
|
||||
|
||||
Es ist auch möglich, die **Master- und Funktionsschlüssel** im Speicherkonto im Container **`azure-webjobs-secrets`** im Ordner **`<app-name>`** in den JSON-Dateien zu finden, die Sie dort finden können.
|
||||
|
||||
Beachten Sie, dass Funktionen auch die Möglichkeit bieten, den Code an einem entfernten Ort zu speichern, indem Sie einfach die URL dazu angeben.
|
||||
Beachten Sie, dass Funktionen auch erlauben, den Code an einem entfernten Ort zu speichern, indem einfach die URL angegeben wird.
|
||||
|
||||
### Networking
|
||||
|
||||
@@ -40,7 +40,7 @@ Bei Verwendung eines HTTP-Triggers:
|
||||
- Es ist auch möglich, **Zugriff zu gewähren oder einzuschränken** auf eine Function App von **einem internen Netzwerk (VPC)**.
|
||||
|
||||
> [!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.
|
||||
> 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, zu **internen Netzwerken zu pivotieren**.
|
||||
|
||||
### **Function App-Einstellungen & Umgebungsvariablen**
|
||||
|
||||
@@ -61,11 +61,11 @@ Genau wie [**VMs**](vms/), können Funktionen **verwaltete Identitäten** von 2
|
||||
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**.
|
||||
|
||||
> [!NOTE]
|
||||
> Genau wie bei [**VMs**](vms/) 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.
|
||||
> Genau wie bei [**VMs**](vms/) 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.
|
||||
> Wenn keine systemverwaltete 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 Token von der standardmäßigen verwalteten Identität vom Metadaten-Endpunkt 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.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm" %}
|
||||
|
||||
@@ -96,7 +96,7 @@ Beim Erstellen eines Endpunkts innerhalb einer Funktion mit einem **HTTP-Trigger
|
||||
|
||||
### Basis-Authentifizierung
|
||||
|
||||
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:
|
||||
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:
|
||||
|
||||
{{#ref}}
|
||||
az-app-service.md
|
||||
@@ -104,7 +104,7 @@ az-app-service.md
|
||||
|
||||
### Github-basierte Bereitstellungen
|
||||
|
||||
Wenn eine Funktion aus einem Github-Repo generiert wird, ermöglicht die Azure-Webkonsole das **automatische Erstellen eines Github-Workflows in einem bestimmten Repository**, sodass der Code der Funktion aktualisiert wird, wenn dieses Repository aktualisiert wird. Tatsächlich sieht die Github Action YAML für eine Python-Funktion so aus:
|
||||
Wenn eine Funktion aus einem Github-Repo generiert wird, ermöglicht die Azure-Webkonsole, **automatisch einen Github-Workflow in einem bestimmten Repository zu erstellen**, sodass der Code der Funktion aktualisiert wird, wenn dieses Repository aktualisiert wird. Tatsächlich sieht die Github Action YAML für eine Python-Funktion so aus:
|
||||
|
||||
<details>
|
||||
|
||||
@@ -199,9 +199,9 @@ Darüber hinaus wird eine **Managed Identity** erstellt, damit die Github Action
|
||||
|
||||
### Containerbasierte Bereitstellungen
|
||||
|
||||
Nicht alle Pläne erlauben die Bereitstellung von Containern, aber für die, die es tun, enthält die Konfiguration die URL des Containers. In der API wird die **`linuxFxVersion`**-Einstellung etwas wie folgt haben: `DOCKER|mcr.microsoft.com/...`, 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, enthält die Konfiguration die URL des Containers. 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 Speicherkonto** gespeichert, das mit der Funktion verbunden ist, da dies nicht erforderlich ist.
|
||||
Darüber hinaus wird **kein Quellcode im Speicher**-Konto gespeichert, das mit der Funktion verbunden ist, da dies nicht erforderlich ist.
|
||||
|
||||
## Enumeration
|
||||
```bash
|
||||
@@ -249,7 +249,7 @@ 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"
|
||||
```
|
||||
## Privilegienausweitung
|
||||
## Privilegienausnutzung
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-functions-app-privesc.md
|
||||
|
||||
Reference in New Issue
Block a user