Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/

This commit is contained in:
Translator
2025-01-06 23:57:13 +00:00
parent 4a12e92b0b
commit f0c4125828
4 changed files with 17 additions and 15 deletions

View File

@@ -34,7 +34,7 @@ Zum Beispiel kann ein Angreifer mit diesen **Berechtigungen über einen CloudFor
]
}
```
Und die Übernahme ist möglich, weil es ein **kurzes Zeitfenster vom Moment des Hochladens der Vorlage** in den Bucket bis zum Moment der **Bereitstellung der Vorlage** gibt. Ein Angreifer könnte einfach eine **lambda function** in seinem Konto erstellen, die **ausgelöst wird, wenn eine Bucket-Benachrichtigung gesendet wird**, und **übernimmt** den **Inhalt** dieses **Buckets**.
Und die Übernahme ist möglich, weil es ein **kleines Zeitfenster vom Moment des Hochladens der Vorlage** in den Bucket bis zum Moment der **Bereitstellung der Vorlage** gibt. Ein Angreifer könnte einfach eine **lambda function** in seinem Konto erstellen, die **ausgelöst wird, wenn eine Bucket-Benachrichtigung gesendet wird**, und **übernimmt** den **Inhalt** dieses **Buckets**.
![](<../../../images/image (174).png>)
@@ -57,7 +57,7 @@ Außerdem haben in realen Konten fast immer alle Entwickler `s3:*` und manchmal
Wenn Sie also die oben genannten Berechtigungen über diese Dateien haben, gibt es einen Angriffsvektor, der es Ihnen ermöglicht, RCE in der Pipeline mit den Berechtigungen von `terraform` zu erlangen - meistens `AdministratorAccess`, was Sie zum Administrator des Cloud-Kontos macht. Außerdem können Sie diesen Vektor verwenden, um einen Denial-of-Service-Angriff durchzuführen, indem Sie `terraform` legitime Ressourcen löschen lassen.
Befolgen Sie die Beschreibung im Abschnitt *Abusing Terraform State Files* der *Terraform Security*-Seite für direkt verwendbaren Exploit-Code:
Befolgen Sie die Beschreibung im Abschnitt *Missbrauch von Terraform-Zustandsdateien* der *Terraform-Sicherheits*-Seite für direkt verwendbaren Exploit-Code:
{{#ref}}
pentesting-ci-cd/terraform-security.md#abusing-terraform-state-files
@@ -65,7 +65,7 @@ pentesting-ci-cd/terraform-security.md#abusing-terraform-state-files
### `s3:PutBucketPolicy`
Ein Angreifer, der **aus demselben Konto** stammen muss, andernfalls wird der Fehler `Die angegebene Methode ist nicht erlaubt` ausgelöst, kann mit dieser Berechtigung sich selbst mehr Berechtigungen über den Bucket(s) gewähren, die es ihm ermöglichen, Buckets zu lesen, zu schreiben, zu ändern, zu löschen und offenzulegen.
Ein Angreifer, der **aus demselben Konto** stammen muss, andernfalls wird der Fehler `Die angegebene Methode ist nicht erlaubt` ausgelöst, kann mit dieser Berechtigung sich selbst mehr Berechtigungen über die Bucket(s) gewähren, die es ihm ermöglichen, Buckets zu lesen, zu schreiben, zu ändern, zu löschen und offenzulegen.
```bash
# Update Bucket policy
aws s3api put-bucket-policy --policy file:///root/policy.json --bucket <bucket-name>

View File

@@ -94,7 +94,7 @@ az webapp deployment list-publishing-profiles --name <app-name> --resource-group
}
]
```
Beachten Sie, dass der **Benutzername immer derselbe ist** (außer bei FTP, wo der Name der App am Anfang hinzugefügt wird), aber das **Passwort für alle dasselbe ist**.
Beachten Sie, dass der **Benutzername immer derselbe ist** (außer bei FTP, das den Namen der App am Anfang hinzufügt), aber das **Passwort für alle dasselbe ist**.
Darüber hinaus ist die **SCM-URL `<app-name>.scm.azurewebsites.net`**.
@@ -131,7 +131,7 @@ Denken Sie daran, dass Sie, um auf die SCM-Plattform über das **Web zuzugreifen
> [!WARNING]
> Beachten Sie, dass jeder Benutzer seine eigenen Anmeldeinformationen konfigurieren kann, indem er den vorherigen Befehl aufruft, aber wenn der Benutzer nicht über ausreichende Berechtigungen verfügt, um auf das SCM oder FTP zuzugreifen, funktionieren die Anmeldeinformationen nicht.
- Wenn Sie sehen, dass diese Anmeldeinformationen **REDACTED** sind, liegt das daran, dass Sie **die Option für die grundlegende Authentifizierung des SCM aktivieren müssen**, und dafür benötigen Sie die zweite Berechtigung (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`):
- Wenn Sie sehen, dass diese Anmeldeinformationen **REDACTED** sind, liegt das daran, dass Sie **die Option für die grundlegende SCM-Authentifizierung aktivieren müssen** und dafür benötigen Sie die zweite Berechtigung (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`):
```bash
# Enable basic authentication for SCM
az rest --method PUT \
@@ -205,7 +205,7 @@ curl -X PUT \
```
### Microsoft.Web/sites/write, Microsoft.Web/sites/read, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action
Diese Berechtigungen ermöglichen es, eine **verwaltete Identität** dem App-Dienst zuzuweisen. Wenn ein App-Dienst zuvor kompromittiert wurde, kann der Angreifer neue verwaltete Identitäten dem App-Dienst zuweisen und **Berechtigungen** auf diese erhöhen.
Diese Berechtigungen ermöglichen es, **eine verwaltete Identität** dem App-Dienst zuzuweisen. Wenn ein App-Dienst zuvor kompromittiert wurde, kann der Angreifer neue verwaltete Identitäten dem App-Dienst zuweisen und **die Berechtigungen** auf diese erhöhen.
```bash
az webapp identity assign --name <app-name> --resource-group <res-group> --identities /subscriptions/<subcripttion-id>/resourceGroups/<res_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed-identity-name>
```
@@ -256,21 +256,21 @@ https://graph.microsoft.com/v1.0/me/drive/root/children
- Verwendung der Berechtigung **`Microsoft.Web/sites/config/list/action`**:
- `az webapp deployment list-publishing-credentials --name <app-name> --resource-group <res-group>`
- `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"`
- Wenn die App konfiguriert ist, um ein **local git repository** zu verwenden, ist es möglich, das **Repository zu klonen** und **Änderungen** daran vorzunehmen:
- Verwendung der Berechtigung **`Microsoft.Web/sites/sourcecontrols/read`**: Sie können die URL des git-Repos mit `az webapp deployment source show --name <app-name> --resource-group <res-group>` erhalten, aber es wird die gleiche sein wie die SCM-URL der App mit dem Pfad `/<app-name>.git` (z.B. `https://pythonwebapp-audeh9f5fzeyhhed.scm.canadacentral-01.azurewebsites.net:443/pythonwebapp.git`).
- Wenn die App so konfiguriert ist, dass sie ein **local git repository** verwendet, ist es möglich, das **Repository zu klonen** und **Änderungen** daran vorzunehmen:
- Verwendung der Berechtigung **`Microsoft.Web/sites/sourcecontrols/read`**: Sie können die URL des git-Repos mit `az webapp deployment source show --name <app-name> --resource-group <res-group>` erhalten, aber es wird die gleiche sein wie die SCM-URL der App mit dem Pfad `/<app-name>.git` (z. B. `https://pythonwebapp-audeh9f5fzeyhhed.scm.canadacentral-01.azurewebsites.net:443/pythonwebapp.git`).
- Um die SCM-Anmeldeinformationen zu erhalten, benötigen Sie die Berechtigung:
- **`Microsoft.Web/sites/publishxml/action`**: Führen Sie dann `az webapp deployment list-publishing-profiles --resource-group <res-group> -n <name>` aus.
- **`Microsoft.Web/sites/config/list/action`**: Führen Sie dann `az webapp deployment list-publishing-credentials --name <name> --resource-group <res-group>` aus.
> [!WARNING]
> Beachten Sie, dass es mit der Berechtigung `Microsoft.Web/sites/config/list/action` und den SCM-Anmeldeinformationen immer möglich ist, in eine Webanwendung zu deployen (auch wenn sie konfiguriert wurde, um einen Drittanbieter zu verwenden), wie in einem vorherigen Abschnitt erwähnt.
> Beachten Sie, dass es mit der Berechtigung `Microsoft.Web/sites/config/list/action` und den SCM-Anmeldeinformationen immer möglich ist, in eine Webanwendung zu deployen (auch wenn sie so konfiguriert wurde, dass sie einen Drittanbieter verwendet), wie in einem vorherigen Abschnitt erwähnt.
> [!WARNING]
> Beachten Sie, dass es mit den untenstehenden Berechtigungen auch **möglich ist, einen beliebigen Container auszuführen**, selbst wenn die Webanwendung anders konfiguriert wurde.
### `Microsoft.Web/sites/config/Write`, `Microsoft.Web/sites/config/Read`, `Microsoft.Web/sites/config/list/Action`, `Microsoft.Web/sites/Read`
Dies ist der Satz von Berechtigungen, der es ermöglicht, den **Container zu ändern**, der von einer Webanwendung verwendet wird. Ein Angreifer könnte dies ausnutzen, um eine Webanwendung einen bösartigen Container ausführen zu lassen.
Dies ist der Satz von Berechtigungen, der es ermöglicht, den **Container zu ändern**, der von einer Webanwendung verwendet wird. Ein Angreifer könnte dies ausnutzen, um eine Webanwendung dazu zu bringen, einen bösartigen Container auszuführen.
```bash
az webapp config container set \
--name <app-name> \

View File

@@ -11,7 +11,7 @@
### 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 erfordern.
- **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.
@@ -36,7 +36,7 @@ Beachten Sie, dass Funktionen auch die Möglichkeit bieten, den Code an einem en
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. Es ist jedoch auch möglich, diesen Zugriff einzuschränken.
- 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.
> [!CAUTION]
@@ -56,12 +56,12 @@ In einer **Windows**-Funktion, die NodeJS verwendet, befand sich der Code in **`
### **Verwaltete Identitäten & Metadaten**
Genau wie bei [**VMs**](vms/index.html) können Funktionen **verwaltete Identitäten** von 2 Typen haben: Systemzugewiesen und Benutzerzugewiesen.
Genau wie [**VMs**](vms/index.html) können Funktionen **verwaltete Identitäten** von 2 Typen haben: Systemzugewiesen und Benutzerzugewiesen.
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/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.
> 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.
>
> 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.
@@ -96,7 +96,7 @@ Beim Erstellen eines Endpunkts innerhalb einer Funktion mit einem **HTTP-Trigger
### 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 Services 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