Translated ['src/pentesting-cloud/azure-security/az-services/az-static-w

This commit is contained in:
Translator
2025-01-09 08:16:54 +00:00
parent feb265ae8e
commit 04698eba25

View File

@@ -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
<figure><img src="../../../images/azure_static_password.png" alt=""><figcaption></figcaption></figure>
È 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://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain>` 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/<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>
```
## 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