mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-28 13:43:24 -08:00
Translated ['src/pentesting-cloud/azure-security/az-services/az-static-w
This commit is contained in:
@@ -1,16 +1,21 @@
|
||||
# Az - Static Web Apps
|
||||
# Az - Aplicaciones Web Estáticas
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Información Básica sobre Aplicaciones Web Estáticas
|
||||
|
||||
Azure Static Web Apps es un servicio en la nube para alojar **aplicaciones web estáticas con CI/CD automático desde repositorios como GitHub**. Ofrece entrega de contenido global, backends sin servidor y HTTPS integrado, lo que lo hace seguro y escalable. Sin embargo, los riesgos incluyen CORS mal configurado, autenticación insuficiente y manipulación de contenido, lo que puede exponer las aplicaciones a ataques como XSS y filtración de datos si no se gestionan adecuadamente.
|
||||
Azure Static Web Apps es un servicio en la nube para alojar **aplicaciones web estáticas con CI/CD automático desde repositorios como GitHub**. Ofrece entrega de contenido global, backends sin servidor y HTTPS integrado, lo que lo hace seguro y escalable. Sin embargo, aunque el servicio se llama "estático", no significa que sea completamente seguro. Los riesgos incluyen CORS mal configurado, autenticación insuficiente y manipulación de contenido, lo que puede exponer las aplicaciones a ataques como XSS y filtraciones de datos si no se gestionan adecuadamente.
|
||||
|
||||
### Autenticación de Despliegue
|
||||
|
||||
> [!TIP]
|
||||
> Cuando se crea una Aplicación Estática, puedes elegir la **política de autorización de despliegue** entre **Token de despliegue** y **flujo de trabajo de GitHub Actions**.
|
||||
> Cuando se crea una Aplicación Estática, puedes elegir la **política de autorización de despliegue** entre **Token de despliegue** y **Flujo de trabajo de GitHub Actions**.
|
||||
|
||||
- **Token de despliegue**: Se genera un token y se utiliza para autenticar el proceso de despliegue. Cualquiera con **este token es suficiente para desplegar una nueva versión de la aplicación**. Una **Acción de Github se despliega automáticamente** en el repositorio con el token en un secreto para desplegar una nueva versión de la aplicación cada vez que se actualiza el repositorio.
|
||||
- **Flujo de trabajo de GitHub Actions**: En este caso, también se despliega una Acción de Github muy similar en el repositorio y el **token también se almacena en un secreto**. Sin embargo, esta Acción de Github tiene una diferencia, utiliza la **acción `actions/github-script@v6`** para obtener el IDToken del repositorio y usarlo para desplegar la aplicación.
|
||||
- Incluso si en ambos casos se utiliza la acción **`Azure/static-web-apps-deploy@v1`** con un token en el parámetro `azure_static_web_apps_api_token`, en este segundo caso, un token aleatorio con un formato válido como `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345` es suficiente para desplegar la aplicación, ya que la autorización se realiza con el IDToken en el parámetro `github_id_token`.
|
||||
|
||||
### Autenticación de la Aplicación Web
|
||||
### Autenticación Básica de la Aplicación Web
|
||||
|
||||
Es posible **configurar una contraseña** para acceder a la Aplicación Web. La consola web permite configurarla para proteger solo los entornos de staging o tanto el de staging como el de producción.
|
||||
|
||||
@@ -18,7 +23,6 @@ Así es como, en el momento de escribir, se ve una aplicación web protegida por
|
||||
|
||||
<figure><img src="../../../images/azure_static_password.png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
||||
Es posible ver **si se está utilizando alguna contraseña** y qué entornos están protegidos con:
|
||||
```bash
|
||||
az rest --method GET \
|
||||
@@ -26,7 +30,7 @@ az rest --method GET \
|
||||
```
|
||||
Sin embargo, esto **no mostrará la contraseña en texto claro**, solo algo como: `"password": "**********************"`.
|
||||
|
||||
### Rutas
|
||||
### Rutas y Roles
|
||||
|
||||
Las rutas definen **cómo se manejan las solicitudes HTTP entrantes** dentro de una aplicación web estática. Configuradas en el **`staticwebapp.config.json`** archivo, controlan la reescritura de URL, redirecciones, restricciones de acceso y autorización basada en roles, asegurando un manejo adecuado de recursos y seguridad.
|
||||
|
||||
@@ -58,6 +62,19 @@ Algunos ejemplos:
|
||||
}
|
||||
}
|
||||
```
|
||||
Note cómo es posible **proteger una ruta con un rol**, entonces, los usuarios necesitarán autenticarse en la aplicación y se les otorgará ese rol para acceder a la ruta. También es posible **crear invitaciones** otorgando roles específicos a usuarios específicos que inicien sesión a través de EntraID, Facebook, GitHub, Google, Twitter, lo cual puede ser útil para escalar privilegios dentro de la aplicación.
|
||||
|
||||
> [!TIP]
|
||||
> Tenga en cuenta que es posible configurar la aplicación para que **los cambios en el archivo `staticwebapp.config.json`** no sean aceptados. En este caso, puede que no sea suficiente con solo cambiar el archivo desde Github, sino también **cambiar la configuración en la aplicación**.
|
||||
|
||||
La URL de staging tiene este formato: `https://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain>` como: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net`
|
||||
|
||||
### Identidades Administradas
|
||||
|
||||
Azure Static Web Apps se puede configurar para usar **identidades administradas**, sin embargo, como se menciona en [esta FAQ](https://learn.microsoft.com/en-gb/azure/static-web-apps/faq#does-static-web-apps-support-managed-identity-), solo son compatibles para **extraer secretos de Azure Key Vault con fines de autenticación, no para acceder a otros recursos de Azure**.
|
||||
|
||||
Para más información, puede encontrar una guía de Azure sobre cómo usar un secreto de vault en una aplicación estática en https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets.
|
||||
|
||||
## Enumeración
|
||||
```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/<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>
|
||||
```
|
||||
## Ejemplos para generar aplicaciones web
|
||||
|
||||
@@ -95,10 +115,12 @@ Puedes encontrar un buen ejemplo para generar una aplicación web en el siguient
|
||||
2. En el portal de Azure, crea una Aplicación Web Estática configurando el acceso a GitHub y seleccionando el nuevo repositorio previamente bifurcado
|
||||
3. Créalo, espera unos minutos y ¡verifica tu nueva página!
|
||||
|
||||
## Post Explotación
|
||||
## Escalación de privilegios y post explotación
|
||||
|
||||
Toda la información sobre escalación de privilegios y post explotación en Azure Static Web Apps se puede encontrar en el siguiente enlace:
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-static-web-apps-post-exploitation.md
|
||||
../az-privilege-escalation/az-static-web-apps-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## Referencias
|
||||
|
||||
Reference in New Issue
Block a user