diff --git a/src/pentesting-cloud/azure-security/az-services/az-static-web-apps.md b/src/pentesting-cloud/azure-security/az-services/az-static-web-apps.md index f2dbae747..aa0c8ea1b 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-static-web-apps.md +++ b/src/pentesting-cloud/azure-security/az-services/az-static-web-apps.md @@ -4,13 +4,18 @@ ## Informations de base sur les applications Web statiques -Azure Static Web Apps est un service cloud pour héberger **des applications web statiques avec CI/CD automatique à partir de dépôts comme GitHub**. Il offre une distribution de contenu mondiale, des backends sans serveur et HTTPS intégré, ce qui le rend sécurisé et évolutif. Cependant, les risques incluent des CORS mal configurés, une authentification insuffisante et une altération du contenu, ce qui peut exposer les applications à des attaques comme XSS et des fuites de données si elles ne sont pas correctement gérées. +Azure Static Web Apps est un service cloud pour héberger **des applications web statiques avec CI/CD automatique à partir de dépôts comme GitHub**. Il offre une distribution de contenu mondiale, des backends sans serveur et HTTPS intégré, ce qui le rend sécurisé et évolutif. Cependant, même si le service est appelé "statique", cela ne signifie pas qu'il est complètement sûr. Les risques incluent des CORS mal configurés, une authentification insuffisante et une altération du contenu, ce qui peut exposer les applications à des attaques comme XSS et des fuites de données si elles ne sont pas correctement gérées. + +### Authentification de déploiement > [!TIP] > Lorsqu'une application statique est créée, vous pouvez choisir la **politique d'autorisation de déploiement** entre **jeton de déploiement** et **workflow GitHub Actions**. +- **Jeton de déploiement** : Un jeton est généré et utilisé pour authentifier le processus de déploiement. Quiconque avec **ce jeton suffit pour déployer une nouvelle version de l'application**. Une **action Github est déployée automatiquement** dans le dépôt avec le jeton dans un secret pour déployer une nouvelle version de l'application chaque fois que le dépôt est mis à jour. +- **Workflow GitHub Actions** : Dans ce cas, une action Github très similaire est également déployée dans le dépôt et le **jeton est également stocké dans un secret**. Cependant, cette action Github a une différence, elle utilise l'action **`actions/github-script@v6`** pour obtenir l'IDToken du dépôt et l'utiliser pour déployer l'application. +- Même si dans les deux cas l'action **`Azure/static-web-apps-deploy@v1`** est utilisée avec un jeton dans le paramètre `azure_static_web_apps_api_token`, dans ce second cas, un jeton aléatoire avec un format valide comme `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345` suffit pour déployer l'application car l'autorisation est effectuée avec l'IDToken dans le paramètre `github_id_token`. -### Authentification des applications Web +### Authentification de base de l'application Web Il est possible de **configurer un mot de passe** pour accéder à l'application Web. La console web permet de le configurer pour protéger uniquement les environnements de staging ou à la fois les environnements de staging et de production. @@ -18,7 +23,6 @@ Voici à quoi ressemble une application web protégée par mot de passe au momen
- Il est possible de voir **si un mot de passe est utilisé** et quels environnements sont protégés avec : ```bash az rest --method GET \ @@ -26,7 +30,7 @@ az rest --method GET \ ``` Cependant, cela **ne montrera pas le mot de passe en texte clair**, juste quelque chose comme : `"password": "**********************"`. -### Routes +### Routes & Rôles Les routes définissent **comment les requêtes HTTP entrantes sont traitées** au sein d'une application web statique. Configurées dans le fichier **`staticwebapp.config.json`**, elles contrôlent la réécriture d'URL, les redirections, les restrictions d'accès et l'autorisation basée sur les rôles, garantissant un traitement approprié des ressources et la sécurité. @@ -58,6 +62,19 @@ Quelques exemples : } } ``` +Notez qu'il est possible de **protéger un chemin avec un rôle**, alors, les utilisateurs devront s'authentifier à l'application et se voir attribuer ce rôle pour accéder au chemin. Il est également possible de **créer des invitations** accordant des rôles spécifiques à des utilisateurs spécifiques se connectant via EntraID, Facebook, GitHub, Google, Twitter, ce qui peut être utile pour élever les privilèges au sein de l'application. + +> [!TIP] +> Notez qu'il est possible de configurer l'application de sorte que **les modifications du fichier `staticwebapp.config.json`** ne soient pas acceptées. Dans ce cas, il peut ne pas suffire de simplement modifier le fichier depuis Github, mais aussi de **changer le paramètre dans l'application**. + +L'URL de staging a ce format : `https://-..` comme : `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net` + +### Identités gérées + +Azure Static Web Apps peut être configuré pour utiliser **des identités gérées**, cependant, comme mentionné dans [cette FAQ](https://learn.microsoft.com/en-gb/azure/static-web-apps/faq#does-static-web-apps-support-managed-identity-), elles ne sont prises en charge que pour **extraire des secrets d'Azure Key Vault à des fins d'authentification, pas pour accéder à d'autres ressources Azure**. + +Pour plus d'informations, vous pouvez trouver un guide Azure sur l'utilisation d'un secret de coffre dans une application statique à https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets. + ## Énumération ```bash # List Static Webapps @@ -86,6 +103,9 @@ az rest --method GET \ ## Once you have the database connection name ("default" by default) you can get the connection string with the credentials az rest --method POST \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/staticSites//databaseConnections/default/show?api-version=2021-03-01" + +# Check connected backends +az staticwebapp backends show --name --resource-group ``` ## Exemples pour générer des applications Web @@ -95,10 +115,12 @@ Vous pouvez trouver un bel exemple pour générer une application web dans le li 2. Dans le portail Azure, créez une Static Web App en configurant l'accès GitHub et en sélectionnant le nouveau dépôt forké précédemment 3. Créez-le, attendez quelques minutes et vérifiez votre nouvelle page ! -## Post Exploitation +## Escalade de privilèges et post-exploitation + +Toutes les informations sur l'escalade de privilèges et la post-exploitation dans Azure Static Web Apps peuvent être trouvées dans le lien suivant : {{#ref}} -../az-privilege-escalation/az-static-web-apps-post-exploitation.md +../az-privilege-escalation/az-static-web-apps-privesc.md {{#endref}} ## Références