From 04698eba257c7272e380803f08c709c13d252abb Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 9 Jan 2025 08:16:54 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/azure-security/az-services/az-static-w --- .../az-services/az-static-web-apps.md | 42 ++++++++++++++----- 1 file changed, 32 insertions(+), 10 deletions(-) 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 e9ba42281..51763f44e 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 @@ ## Static Web Apps Basic Information -Azure Static Web Apps è un servizio cloud per l'hosting di **app web statiche con CI/CD automatico da repository come GitHub**. Offre distribuzione globale dei contenuti, backend serverless e HTTPS integrato, rendendolo sicuro e scalabile. Tuttavia, i rischi includono CORS mal configurati, autenticazione insufficiente e manomissione dei contenuti, che possono esporre le app ad attacchi come XSS e data leakage se non gestiti correttamente. +Azure Static Web Apps è un servizio cloud per l'hosting di **app web statiche con CI/CD automatico da repository come GitHub**. Offre distribuzione globale dei contenuti, backend serverless e HTTPS integrato, rendendolo sicuro e scalabile. Tuttavia, anche se il servizio è chiamato "statico", non significa che sia completamente sicuro. I rischi includono CORS mal configurati, autenticazione insufficiente e manomissione dei contenuti, che possono esporre le app ad attacchi come XSS e data leakage se non gestiti correttamente. + +### Deployment Authentication > [!TIP] -> Quando viene creata un'App Statica, puoi scegliere la **politica di autorizzazione al deployment** tra **Token di deployment** e **workflow di GitHub Actions**. +> Quando viene creata un'App Statica, puoi scegliere la **politica di autorizzazione per il deployment** tra **Token di deployment** e **workflow di GitHub Actions**. +- **Token di deployment**: Viene generato un token utilizzato per autenticare il processo di deployment. Chiunque con **questo token è sufficiente per distribuire una nuova versione dell'app**. Un **Github Action viene distribuito automaticamente** nel repo con il token in un segreto per distribuire una nuova versione dell'app ogni volta che il repo viene aggiornato. +- **Workflow di GitHub Actions**: In questo caso, viene distribuito un Github Action molto simile nel repo e il **token è anche memorizzato in un segreto**. Tuttavia, questo Github Action ha una differenza, utilizza l'azione **`actions/github-script@v6`** per ottenere l'IDToken del repository e usarlo per distribuire l'app. +- Anche se in entrambi i casi viene utilizzata l'azione **`Azure/static-web-apps-deploy@v1`** con un token nel parametro `azure_static_web_apps_api_token`, in questo secondo caso un token casuale con un formato valido come `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345` è sufficiente per distribuire l'app poiché l'autorizzazione avviene con l'IDToken nel parametro `github_id_token`. -### Web App Authentication +### Web App Basic Authentication È possibile **configurare una password** per accedere all'App Web. La console web consente di configurarla per proteggere solo gli ambienti di staging o sia gli ambienti di staging che quello di produzione. @@ -18,7 +23,6 @@ Questo è come appare un'app web protetta da password al momento della scrittura
- È possibile vedere **se viene utilizzata una password** e quali ambienti sono protetti con: ```bash az rest --method GET \ @@ -26,9 +30,9 @@ az rest --method GET \ ``` Tuttavia, questo **non mostrerà la password in chiaro**, solo qualcosa come: `"password": "**********************"`. -### Routes +### Routes & Roles -Le route definiscono **come vengono gestite le richieste HTTP in arrivo** all'interno di un'app web statica. Configurate nel file **`staticwebapp.config.json`**, controllano la riscrittura degli URL, le redirezioni, le restrizioni di accesso e l'autorizzazione basata sui ruoli, garantendo una corretta gestione delle risorse e sicurezza. +Le route definiscono **come vengono gestite le richieste HTTP in entrata** all'interno di un'app web statica. Configurate nel file **`staticwebapp.config.json`**, controllano la riscrittura degli URL, i reindirizzamenti, le restrizioni di accesso e l'autorizzazione basata sui ruoli, garantendo una corretta gestione delle risorse e sicurezza. Alcuni esempi: ```json @@ -58,7 +62,20 @@ Alcuni esempi: } } ``` -## Enumerazione +Nota come sia possibile **proteggere un percorso con un ruolo**, quindi, gli utenti dovranno autenticarsi nell'app e ricevere quel ruolo per accedere al percorso. È anche possibile **creare inviti** che concedono ruoli specifici a utenti specifici che accedono tramite EntraID, Facebook, GitHub, Google, Twitter, il che potrebbe essere utile per elevare i privilegi all'interno dell'app. + +> [!TIP] +> Nota che è possibile configurare l'App in modo che **le modifiche al file `staticwebapp.config.json`** non vengano accettate. In questo caso, potrebbe non essere sufficiente cambiare il file da Github, ma anche **cambiare l'impostazione nell'App**. + +L'URL di staging ha questo formato: `https://-..` come: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net` + +### Managed Identities + +Azure Static Web Apps può essere configurato per utilizzare **managed identities**, tuttavia, come menzionato in [questa FAQ](https://learn.microsoft.com/en-gb/azure/static-web-apps/faq#does-static-web-apps-support-managed-identity-), sono supportate solo per **estrarre segreti da Azure Key Vault per scopi di autenticazione, non per accedere ad altre risorse Azure**. + +Per ulteriori informazioni puoi trovare una guida di Azure su come utilizzare un segreto del vault in un'app statica su https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets. + +## Enumeration ```bash # List Static Webapps az staticwebapp list --output table @@ -86,19 +103,24 @@ 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 ``` ## Esempi per generare Web App -Puoi trovare un bel esempio per generare un'app web nel seguente link: [https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github](https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github) +Puoi trovare un bel esempio per generare un'app web al seguente link: [https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github](https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github) 1. Forka il repository https://github.com/staticwebdev/react-basic/generate nel tuo account GitHub e chiamalo `my-first-static-web-app` 2. Nel portale Azure crea una Static Web App configurando l'accesso a Github e selezionando il nuovo repository forkato in precedenza 3. Crealo, aspetta qualche minuto e controlla la tua nuova pagina! -## Post Exploitation +## Escalation dei privilegi e Post Exploitation + +Tutte le informazioni sull'escalation dei privilegi e sul post exploitation in Azure Static Web Apps possono essere trovate al seguente link: {{#ref}} -../az-privilege-escalation/az-static-web-apps-post-exploitation.md +../az-privilege-escalation/az-static-web-apps-privesc.md {{#endref}} ## Riferimenti