Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/

This commit is contained in:
Translator
2025-01-05 22:57:41 +00:00
parent b7de7fcbda
commit 39b4264a34
5 changed files with 287 additions and 16 deletions

View File

@@ -0,0 +1,109 @@
# Az - Static Web Apps
{{#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.
> [!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**.
### Autenticación 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.
Así es como, en el momento de escribir, se ve una aplicación web protegida por contraseña:
<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 \
--url "/subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.Web/staticSites/<app-name>/config/basicAuth?api-version=2024-04-01"
```
Sin embargo, esto **no mostrará la contraseña en texto claro**, solo algo como: `"password": "**********************"`.
### Rutas
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.
Algunos ejemplos:
```json
{
"routes": [
{
"route": "/",
"rewrite": "/index.html"
},
{
"route": "/about",
"rewrite": "/about.html"
},
{
"route": "/api/*",
"allowedRoles": ["authenticated"]
},
{
"route": "/admin",
"redirect": "/login",
"statusCode": 302
}
],
"navigationFallback": {
"rewrite": "/index.html",
"exclude": ["/api/*", "/assets/*"]
}
}
```
## Enumeración
```bash
# 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 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"
```
## Ejemplos para generar aplicaciones web
Puedes encontrar un buen ejemplo para generar una aplicación web en el siguiente enlace: [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. Haz un fork del repositorio https://github.com/staticwebdev/react-basic/generate a tu cuenta de GitHub y nómbralo `my-first-static-web-app`
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
{{#ref}}
../az-privilege-escalation/az-static-web-apps-post-exploitation.md
{{#endref}}
## Referencias
- [https://learn.microsoft.com/en-in/azure/app-service/overview](https://learn.microsoft.com/en-in/azure/app-service/overview)
- [https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans](https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans)
{{#include ../../../banners/hacktricks-training.md}}