Az Static Web Apps
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
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, 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 possĂšde 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@v6pour 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@v1est utilisĂ©e avec un jeton dans le paramĂštreazure_static_web_apps_api_token, dans ce second cas, un jeton alĂ©atoire avec un format valide comme12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345suffit pour dĂ©ployer lâapplication car lâautorisation est effectuĂ©e avec lâIDToken dans le paramĂštregithub_id_token.
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.
Voici à quoi ressemble une application web protégée par mot de passe au moment de la rédaction :

Il est possible de voir si un mot de passe est utilisé et quels environnements sont protégés avec :
az rest --method GET \
--url "/subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.Web/staticSites/<app-name>/config/basicAuth?api-version=2024-04-01"
Cependant, cela ne montrera pas le mot de passe en texte clair, juste quelque chose comme : "password": "**********************".
Routes et 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Ă©.
Quelques exemples :
{
"routes": [
{
"route": "/",
"rewrite": "/index.html"
},
{
"route": "/about",
"rewrite": "/about.html"
},
{
"route": "/api/*",
"allowedRoles": ["authenticated"]
},
{
"route": "/admin",
"redirect": "/login",
"statusCode": 302
},
{
"route": "/google",
"redirect": "https://google.com",
"statusCode": 307
}
],
"navigationFallback": {
"rewrite": "/index.html",
"exclude": ["/api/*", "/assets/*"]
}
}
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 escalader 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.jsonne 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://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain> comme : https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net
Snippets
Il est possible de stocker des extraits HTML Ă lâintĂ©rieur dâune application web statique qui seront chargĂ©s dans lâapplication. Cela peut ĂȘtre utilisĂ© pour injecter du code malveillant dans lâapplication, comme un code JS pour voler des identifiants, un keylogger⊠Plus dâinfos dans la section sur lâescalade des privilĂšges.
Managed Identities
Azure Static Web Apps peut ĂȘtre configurĂ© pour utiliser des identitĂ©s gĂ©rĂ©es, cependant, comme mentionnĂ© dans cette FAQ, 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âinfos, 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.
Enumeration
# List Static Webapps
az staticwebapp list --output table
# Get Static Webapp details
az staticwebapp show --name <name> --resource-group <res-group> --output table
# Get appsettings
az staticwebapp appsettings list --name <name>
# Get env information
az staticwebapp environment list --name <name>
az staticwebapp environment functions --name <name>
# Get API key
az staticwebapp secrets list --name <name>
# Get invited users
az staticwebapp users list --name <name>
# Get current snippets
az rest --method GET \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/trainingdemo/snippets?api-version=2022-03-01"
# Get database connections
az rest --method GET \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/databaseConnections?api-version=2021-03-01"
## 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/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/databaseConnections/default/show?api-version=2021-03-01"
# Check connected backends
az staticwebapp backends show --name <name> --resource-group <res-group>
Exemples pour générer des applications Web
Vous pouvez trouver un bel exemple pour générer une application web dans le lien suivant : https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github
- Forkez le dépÎt https://github.com/staticwebdev/react-basic/generate vers votre compte GitHub et nommez-le
my-first-static-web-app - Dans le portail Azure, crĂ©ez une application Web statique en configurant lâaccĂšs GitHub et en sĂ©lectionnant le nouveau dĂ©pĂŽt forkĂ© prĂ©cĂ©demment
- Créez-le, attendez quelques minutes et vérifiez votre nouvelle page !
Escalade de privilĂšges et post-exploitation
Toutes les informations sur lâescalade de privilĂšges et la post-exploitation dans les applications Web statiques Azure peuvent ĂȘtre trouvĂ©es dans le lien suivant :
Références
- https://learn.microsoft.com/en-in/azure/app-service/overview
- https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

