From 286883acbd01fba4a8f9025a6a870fd7b1fcac61 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 6 Jan 2025 23:56:34 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/ --- src/SUMMARY.md | 2 ++ .../aws-privilege-escalation/aws-s3-privesc.md | 2 +- .../az-app-services-privesc.md | 18 +++++++++--------- .../az-services/az-function-apps.md | 10 +++++----- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index f14f299ff..442c03b1c 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -418,6 +418,7 @@ - [Az - Queue Storage](pentesting-cloud/azure-security/az-services/az-queue-enum.md) - [Az - Service Bus](pentesting-cloud/azure-security/az-services/az-servicebus-enum.md) - [Az - SQL](pentesting-cloud/azure-security/az-services/az-sql.md) + - [Az - Static Web Applications](pentesting-cloud/azure-security/az-services/az-static-web-apps.md) - [Az - Storage Accounts & Blobs](pentesting-cloud/azure-security/az-services/az-storage.md) - [Az - Table Storage](pentesting-cloud/azure-security/az-services/az-table-storage.md) - [Az - Virtual Machines & Network](pentesting-cloud/azure-security/az-services/vms/README.md) @@ -461,6 +462,7 @@ - [Az - Queue Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md) - [Az - Service Bus Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md) - [Az - Virtual Machines & Network Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md) + - [Az - Static Web App Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md) - [Az - Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md) - [Az - SQL Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md) - [Az - Persistence](pentesting-cloud/azure-security/az-persistence/README.md) diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md index 18ca87302..94a182640 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md @@ -53,7 +53,7 @@ Voici quelques exemples : ### `s3:PutObject`, `s3:GetObject` (optionnel) sur le fichier d'état terraform 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 toujours tous les développeurs ont `s3:*` et parfois même les utilisateurs professionnels ont `s3:Put*`. +De plus, dans les comptes du monde réel, presque tous les développeurs ont presque toujours `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 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. diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md index 8f77ae4e7..0ee7d7683 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md @@ -35,8 +35,8 @@ ssh root@127.0.0.1 -p 39895 - **Déboguer l'application** : 1. Installez l'extension Azure dans VScode. 2. Connectez-vous à l'extension avec le compte Azure. -3. Listez tous les services d'application dans la souscription. -4. Sélectionnez le service d'application que vous souhaitez déboguer, faites un clic droit et sélectionnez "Démarrer le débogage". +3. Listez tous les services App dans l'abonnement. +4. Sélectionnez le service App que vous souhaitez déboguer, faites un clic droit et sélectionnez "Démarrer le débogage". 5. Si l'application n'a pas le débogage activé, l'extension essaiera de l'activer mais votre compte doit avoir la permission `Microsoft.Web/sites/config/write` pour le faire. ### Obtention des identifiants SCM et activation de l'authentification de base @@ -94,7 +94,7 @@ az webapp deployment list-publishing-profiles --name --resource-group } ] ``` -Notez que le **nom d'utilisateur est toujours le même** (sauf dans FTP qui ajoute le nom de l'application au début) mais que le **mot de passe est le même** pour tous. +Notez que le **nom d'utilisateur est toujours le même** (sauf dans FTP qui ajoute le nom de l'application au début) mais le **mot de passe est le même** pour tous. De plus, l'**URL SCM est `.scm.azurewebsites.net`**. @@ -129,7 +129,7 @@ Ensuite, vous pouvez utiliser ces identifiants pour **accéder aux plateformes S N'oubliez pas que pour accéder à la plateforme SCM depuis le **web, vous devez accéder à `/BasicAuth`**. > [!WARNING] -> Notez que chaque utilisateur peut configurer ses propres identifiants en appelant la commande précédente, mais si l'utilisateur n'a pas suffisamment de permissions pour accéder au SCM ou au FTP, les identifiants ne fonctionneront pas. +> Notez que chaque utilisateur peut configurer ses propres identifiants en appelant la commande précédente, mais si l'utilisateur n'a pas suffisamment de permissions pour accéder au SCM ou FTP, les identifiants ne fonctionneront pas. - Si vous voyez que ces identifiants sont **REDACTED**, c'est parce que vous **devez activer l'option d'authentification de base SCM** et pour cela, vous avez besoin de la deuxième permission (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`): ```bash @@ -153,9 +153,9 @@ az rest --method PUT \ ``` ### Publier du code en utilisant des identifiants SCM -Il suffit d'avoir des identifiants SCM valides pour **publier du code** dans le service App. Cela peut être fait en utilisant la commande suivante. +Il suffit d'avoir des identifiants SCM valides pour **publier du code** sur le service App. Cela peut être fait en utilisant la commande suivante. -Pour cet exemple en python, vous pouvez télécharger le dépôt depuis https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart, apporter les **modifications** que vous souhaitez et ensuite **le compresser en exécutant : `zip -r app.zip .`**. +Pour cet exemple en python, vous pouvez télécharger le dépôt depuis https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart, apporter les **modifications** que vous souhaitez, puis **zippez-le en exécutant : `zip -r app.zip .`**. Ensuite, vous pouvez **publier le code** dans une application web avec la commande suivante : ```bash @@ -165,7 +165,7 @@ curl -X POST "/api/publish?type=zip" --data-binary "@./app.zip" -u '/vfs/data/jobs//rev5/job_log.txt" --resource "https://management.azure.com/" @@ -205,13 +205,13 @@ curl -X PUT \ ``` ### Microsoft.Web/sites/write, Microsoft.Web/sites/read, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action -Ces autorisations permettent de **attribuer une identité gérée** au service d'application, donc si un service d'application a été précédemment compromis, cela permettra à l'attaquant d'attribuer de nouvelles identités gérées au service d'application et **d'escalader les privilèges** vers celles-ci. +Ces autorisations permettent de **attribuer une identité gérée** au service d'application, donc si un service d'application a été précédemment compromis, cela permettra à l'attaquant d'attribuer de nouvelles identités gérées au service d'application et **d'escalader les privilèges** vers elles. ```bash az webapp identity assign --name --resource-group --identities /subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/ ``` ### Microsoft.Web/sites/config/list/action -Cette permission permet de lister les **connection strings** et les **appsettings** du service App, qui peuvent contenir des informations sensibles telles que des identifiants de base de données. +Cette permission permet de lister les **connection strings** et les **appsettings** du service App qui peuvent contenir des informations sensibles comme des identifiants de base de données. ```bash az webapp config connection-string list --name --resource-group az webapp config appsettings list --name --resource-group diff --git a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md index 8425a6886..6b233f9d0 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md +++ b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md @@ -14,7 +14,7 @@ - **Flex Consumption Plan** : Offre un **scalabilité dynamique et basée sur les événements** avec un tarif à l'utilisation, ajoutant ou supprimant des instances de fonction en fonction de la demande. Il prend en charge **le réseau virtuel** et **les instances pré-provisionnées** pour réduire les démarrages à froid, ce qui le rend adapté aux **charges de travail variables** qui ne nécessitent pas de support de conteneur. - **Traditional Consumption Plan** : L'option sans serveur par défaut, où vous **ne payez que pour les ressources de calcul lorsque les fonctions s'exécutent**. Il s'adapte automatiquement en fonction des événements entrants et inclut des **optimisations de démarrage à froid**, mais ne prend pas en charge les déploiements de conteneurs. Idéal pour les **charges de travail intermittentes** nécessitant une mise à l'échelle automatique. - **Premium Plan** : Conçu pour des **performances constantes**, avec des **travailleurs préchauffés** pour éliminer les démarrages à froid. Il offre **des temps d'exécution prolongés, un réseau virtuel**, et prend en charge **des images Linux personnalisées**, ce qui le rend parfait pour des **applications critiques** nécessitant des performances élevées et des fonctionnalités avancées. -- **Dedicated Plan** : Fonctionne sur des machines virtuelles dédiées avec une **facturation prévisible** et prend en charge la mise à l'échelle manuelle ou automatique. Il permet d'exécuter plusieurs applications sur le même plan, fournit **une isolation de calcul**, et assure un **accès réseau sécurisé** via des environnements de service d'application, ce qui le rend idéal pour des **applications de longue durée** nécessitant une allocation de ressources constante. +- **Dedicated Plan** : Fonctionne sur des machines virtuelles dédiées avec une **facturation prévisible** et prend en charge la mise à l'échelle manuelle ou automatique. Il permet d'exécuter plusieurs applications sur le même plan, fournit **une isolation de calcul**, et garantit un **accès réseau sécurisé** via des environnements de service d'application, ce qui le rend idéal pour des **applications de longue durée** nécessitant une allocation de ressources constante. - **Container Apps** : Permet de déployer des **applications de fonction conteneurisées** dans un environnement géré, aux côtés de microservices et d'APIs. Il prend en charge des bibliothèques personnalisées, la migration d'applications héritées, et le **traitement GPU**, éliminant la gestion des clusters Kubernetes. Idéal pour des **applications conteneurisées évolutives basées sur des événements**. ### **Buckets de stockage** @@ -61,7 +61,7 @@ Tout comme [**VMs**](vms/index.html), les fonctions peuvent avoir des **Identit L'identité **assignée au système** sera une identité gérée que **seule la fonction** qui l'a assignée pourra utiliser, tandis que les identités gérées **assignées à l'utilisateur** sont des identités gérées que **tout autre service Azure pourra utiliser**. > [!NOTE] -> Tout comme dans [**VMs**](vms/index.html), les fonctions peuvent avoir **1 identité gérée assignée au système** et **plusieurs identités assignées à l'utilisateur**, il est donc toujours important d'essayer de trouver toutes celles-ci si vous compromettez la fonction car vous pourriez être en mesure d'escalader les privilèges à plusieurs identités gérées à partir d'une seule fonction. +> Tout comme dans [**VMs**](vms/index.html), les fonctions peuvent avoir **1 identité gérée assignée au système** et **plusieurs identités assignées à l'utilisateur**, il est donc toujours important d'essayer de trouver toutes celles-ci si vous compromettez la fonction car vous pourriez être en mesure d'escalader les privilèges vers plusieurs identités gérées à partir d'une seule fonction. > > Si aucune identité gérée au système n'est utilisée mais qu'une ou plusieurs identités gérées par l'utilisateur sont attachées à une fonction, par défaut vous ne pourrez pas obtenir de jeton. @@ -74,7 +74,7 @@ Notez que vous devez trouver un moyen de **vérifier toutes les identités gér ## Clés d'accès > [!NOTE] -> Notez qu'il n'y a pas de permissions RBAC pour donner accès aux utilisateurs pour invoquer les fonctions. L'**invocation de fonction dépend du déclencheur** sélectionné lors de sa création et si un déclencheur HTTP a été sélectionné, il pourrait être nécessaire d'utiliser une **clé d'accès**. +> Notez qu'il n'y a pas de permissions RBAC pour donner accès aux utilisateurs pour invoquer les fonctions. L'**invocation de la fonction dépend du déclencheur** sélectionné lors de sa création et si un déclencheur HTTP a été sélectionné, il pourrait être nécessaire d'utiliser une **clé d'accès**. Lors de la création d'un point de terminaison à l'intérieur d'une fonction utilisant un **déclencheur HTTP**, il est possible d'indiquer le **niveau d'autorisation de clé d'accès** nécessaire pour déclencher la fonction. Trois options sont disponibles : @@ -104,7 +104,7 @@ az-app-services.md ### Déploiements basés sur Github -Lorsqu'une fonction est générée à partir d'un dépôt Github, la console web Azure permet de **créer automatiquement un workflow Github dans un dépôt spécifique** afin que chaque fois que ce dépôt est mis à jour, le code de la fonction soit mis à jour. En fait, le yaml de l'action Github pour une fonction Python ressemble à ceci : +Lorsqu'une fonction est générée à partir d'un dépôt Github, la console web Azure permet de **créer automatiquement un Workflow Github dans un dépôt spécifique** afin que chaque fois que ce dépôt est mis à jour, le code de la fonction soit mis à jour. En fait, le fichier yaml de l'action Github pour une fonction Python ressemble à ceci :
@@ -192,7 +192,7 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }} ```
-De plus, une **Managed Identity** est également créée afin que l'Action Github du dépôt puisse se connecter à Azure avec elle. Cela se fait en générant une crédential fédérée sur la **Managed Identity** permettant à l'**Issuer** `https://token.actions.githubusercontent.com` et à l'**Subject Identifier** `repo:/:ref:refs/heads/`. +De plus, une **Managed Identity** est également créée afin que l'action Github du dépôt puisse se connecter à Azure avec elle. Cela se fait en générant une crédential fédérée sur la **Managed Identity** permettant à l'**Issuer** `https://token.actions.githubusercontent.com` et à l'**Subject Identifier** `repo:/:ref:refs/heads/`. > [!CAUTION] > Par conséquent, quiconque compromettant ce dépôt pourra compromettre la fonction et les Managed Identities qui y sont attachées.