mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-07 13:20:48 -08:00
Translated ['src/pentesting-cloud/azure-security/az-persistence/az-cloud
This commit is contained in:
@@ -77,6 +77,8 @@ def ref(matchobj):
|
||||
logger.error(f'Error getting chapter title: {path.normpath(path.join(dir,href))}')
|
||||
sys.exit(1)
|
||||
|
||||
if href.endswith("/README.md"):
|
||||
href = href.replace("/README.md", "/index.html")
|
||||
|
||||
template = f"""<a class="content_ref" href="{href}"><span class="content_ref_label">{title}</span></a>"""
|
||||
|
||||
|
||||
@@ -398,8 +398,8 @@
|
||||
- [Az - Enumeration Tools](pentesting-cloud/azure-security/az-enumeration-tools.md)
|
||||
- [Az - Unauthenticated Enum & Initial Entry](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md)
|
||||
- [Az - OAuth Apps Phishing](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-oauth-apps-phishing.md)
|
||||
- [Az - Storage Unath](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md)
|
||||
- [Az - VMs Unath](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md)
|
||||
- [Az - Storage Unauth](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md)
|
||||
- [Az - VMs Unauth](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md)
|
||||
- [Az - Device Code Authentication Phishing](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
|
||||
- [Az - Password Spraying](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
|
||||
- [Az - Services](pentesting-cloud/azure-security/az-services/README.md)
|
||||
|
||||
@@ -19,8 +19,8 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).p
|
||||
|
||||
Azure Cloud Shell ofrece acceso a la línea de comandos para gestionar recursos de Azure con almacenamiento persistente y autenticación automática. Los atacantes pueden explotar esto colocando puertas traseras en el directorio personal persistente:
|
||||
|
||||
* **Almacenamiento Persistente**: El directorio personal de Azure Cloud Shell está montado en un recurso compartido de archivos de Azure y permanece intacto incluso después de que la sesión termina.
|
||||
* **Scripts de Inicio**: Archivos como .bashrc se ejecutan automáticamente al inicio de cada sesión, permitiendo la ejecución persistente cuando se inicia el cloud shell.
|
||||
* **Almacenamiento Persistente**: El directorio personal de Azure Cloud Shell está montado en un recurso compartido de archivos de Azure y permanece intacto incluso después de que finaliza la sesión.
|
||||
* **Scripts de Inicio**: Archivos como .bashrc se ejecutan automáticamente al inicio de cada sesión, lo que permite una ejecución persistente cuando se inicia el cloud shell.
|
||||
|
||||
Ejemplo de puerta trasera en .bashrc:
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ Para más información sobre las aplicaciones lógicas, consulta:
|
||||
{% endcontent-ref %}
|
||||
|
||||
### "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
|
||||
Con estos permisos, puedes modificar los flujos de trabajo de Logic App y gestionar sus identidades. Específicamente, puedes asignar o eliminar identidades administradas asignadas por el sistema y por el usuario a los flujos de trabajo, lo que permite que la Logic App se autentique y acceda a otros recursos de Azure sin credenciales explícitas.
|
||||
Con estos permisos, puedes modificar los flujos de trabajo de Logic App y gestionar sus identidades. Específicamente, puedes asignar o eliminar identidades gestionadas asignadas por el sistema y por el usuario a los flujos de trabajo, lo que permite que la Logic App se autentique y acceda a otros recursos de Azure sin credenciales explícitas.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
@@ -61,7 +61,7 @@ az webapp start/stop/restart \
|
||||
|
||||
### "Microsoft.Web/sites/config/list/action", "Microsoft.Web/sites/read" && "Microsoft.Web/sites/config/write"
|
||||
|
||||
Con este permiso, puedes configurar o modificar la configuración de las aplicaciones web, incluidas las Logic Apps alojadas en un App Service Plan. Esto permite cambios en la configuración de la aplicación, cadenas de conexión, configuraciones de autenticación y más.
|
||||
Con este permiso, puedes configurar o modificar ajustes para aplicaciones web, incluyendo Logic Apps alojadas en un App Service Plan. Esto permite cambios en la configuración de la aplicación, cadenas de conexión, configuraciones de autenticación y más.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
||||
@@ -44,26 +44,26 @@ Kudu es la plataforma que **gestiona tanto el SCM como una interfaz web y API**
|
||||
Tenga en cuenta que las versiones de Kudu utilizadas por App Services y por Function Apps son diferentes, siendo la versión de las Function Apps mucho más limitada.
|
||||
|
||||
Algunos puntos finales interesantes que puede encontrar en Kudu son:
|
||||
- `/BasicAuth`: Necesita acceder a esta ruta para **iniciar sesión en Kudu**.
|
||||
- `/DebugConsole`: Una consola que le permite ejecutar comandos en el entorno donde se está ejecutando Kudu.
|
||||
- `/BasicAuth`: Necesita acceder a esta ruta para **iniciar sesión dentro de Kudu**.
|
||||
- `/DebugConsole`: Una consola que permite ejecutar comandos en el entorno donde se está ejecutando Kudu.
|
||||
- Tenga en cuenta que este entorno **no tiene acceso** al servicio de metadatos para obtener tokens.
|
||||
- `/webssh/host`: Un cliente SSH basado en web que le permite conectarse dentro del contenedor donde se está ejecutando la aplicación.
|
||||
- `/webssh/host`: Un cliente SSH basado en web que permite conectarse dentro del contenedor donde se está ejecutando la aplicación.
|
||||
- Este entorno **tiene acceso al servicio de metadatos** para obtener tokens de las identidades gestionadas asignadas.
|
||||
- `/Env`: Obtenga información sobre el sistema, configuraciones de la aplicación, variables de entorno, cadenas de conexión y encabezados HTTP.
|
||||
- `/Env`: Obtiene información sobre el sistema, configuraciones de la aplicación, variables de entorno, cadenas de conexión y encabezados HTTP.
|
||||
- `/wwwroot/`: El directorio raíz de la aplicación web. Puede descargar todos los archivos desde aquí.
|
||||
|
||||
Además, Kudu solía ser de código abierto en [https://github.com/projectkudu/kudu](https://github.com/projectkudu/kudu) pero el proyecto fue descontinuado y comparando el comportamiento del Kudu actual en Azure con el antiguo, es posible ver que **varias cosas ya han cambiado**.
|
||||
|
||||
## Fuentes
|
||||
|
||||
Los App Services permiten cargar el código como un archivo zip por defecto, pero también permiten conectarse a un servicio de terceros y obtener el código desde allí.
|
||||
App Services permite cargar el código como un archivo zip por defecto, pero también permite conectarse a un servicio de terceros y obtener el código desde allí.
|
||||
|
||||
- Las fuentes de terceros actualmente soportadas son **Github** y **Bitbucket**.
|
||||
- Puede obtener los tokens de autenticación ejecutando `az rest --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"`
|
||||
- Azure por defecto configurará una **Github Action** para implementar el código en el App Service cada vez que se actualice el código.
|
||||
- Azure por defecto configurará una **Acción de Github** para implementar el código en el App Service cada vez que se actualice el código.
|
||||
- También es posible indicar un **repositorio git remoto** (con nombre de usuario y contraseña) para obtener el código desde allí.
|
||||
- Puede obtener las credenciales del repositorio remoto ejecutando `az webapp deployment source show --name <app-name> --resource-group <res-group>` o `az rest --method POST --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/config/metadata/list?api-version=2022-03-01" --resource "https://management.azure.com"`
|
||||
- También es posible usar un **Azure Repository**.
|
||||
- También es posible usar un **Repositorio de Azure**.
|
||||
- También es posible configurar un **repositorio git local**.
|
||||
- Puede obtener la URL del repositorio git con `az webapp deployment source show --name <app-name> --resource-group <res-group>` y será la URL SCM de la aplicación.
|
||||
- Para clonarlo necesitará las credenciales SCM que puede obtener con `az webapp deployment list-publishing-profiles --resource-group <res-group> -n <name>`
|
||||
@@ -89,7 +89,7 @@ Además, es posible dirigir un **porcentaje del tráfico** a un slot específico
|
||||
|
||||
Básicamente, **las aplicaciones de Azure Function son un subconjunto de Azure App Service** en la consola web y si va a la consola web y lista todos los servicios de aplicaciones o ejecuta `az webapp list` en az cli, podrá **ver las aplicaciones de Function también listadas allí**.
|
||||
|
||||
Por lo tanto, ambos servicios en realidad tienen mayormente las **mismas configuraciones, características y opciones en el az cli**, aunque pueden configurarlas de manera un poco diferente (como valores predeterminados de appsettings o el uso de una Cuenta de Almacenamiento en las aplicaciones de Function).
|
||||
Por lo tanto, ambos servicios en realidad tienen mayormente las **mismas configuraciones, características y opciones en el az cli**, aunque pueden configurarlas de manera un poco diferente (como los valores predeterminados de appsettings o el uso de una Cuenta de Almacenamiento en las aplicaciones de Function).
|
||||
|
||||
## Enumeración
|
||||
|
||||
|
||||
@@ -1,58 +1,58 @@
|
||||
# Az - Cloud Shell
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Azure Cloud Shell
|
||||
|
||||
**Azure Cloud Shell** es un terminal interactivo, autenticado y accesible a través del navegador, diseñado para gestionar recursos de Azure, ofreciendo la flexibilidad de trabajar con Bash o PowerShell. Se ejecuta en un host temporal por sesión que se desconecta después de 20 minutos de inactividad, mientras persiste archivos en la ubicación $HOME utilizando un recurso compartido de archivos de 5 GB. Cloud Shell se puede acceder a través de múltiples puntos, incluyendo el portal de Azure, shell.azure.com, la documentación de Azure CLI y PowerShell, la aplicación móvil de Azure y la extensión de cuenta de Azure para Visual Studio Code.
|
||||
**Azure Cloud Shell** es un terminal interactivo, autenticado y accesible desde el navegador, diseñado para gestionar recursos de Azure, ofreciendo la flexibilidad de trabajar con Bash o PowerShell. Se ejecuta en un host temporal por sesión que se desconecta después de 20 minutos de inactividad, mientras persiste archivos en la ubicación $HOME utilizando un recurso compartido de archivos de 5 GB. Cloud Shell se puede acceder a través de múltiples puntos, incluyendo el portal de Azure, shell.azure.com, la documentación de Azure CLI y PowerShell, la aplicación móvil de Azure y la extensión de Cuenta de Azure para Visual Studio Code.
|
||||
|
||||
No hay permisos asignados a este servicio, por lo tanto, no hay técnicas de escalada de privilegios. Además, no hay ningún tipo de enumeración.
|
||||
|
||||
### Key Features
|
||||
### Características Clave
|
||||
|
||||
**Environment**: Azure Cloud Shell proporciona un entorno seguro al ejecutarse en Azure Linux, la propia distribución de Linux de Microsoft diseñada para infraestructura en la nube. Todos los paquetes incluidos en el repositorio de Azure Linux son compilados internamente por Microsoft para protegerse contra ataques a la cadena de suministro.
|
||||
**Preinstalled Tools**: Cloud Shell incluye un conjunto completo de herramientas preinstaladas como Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git y editores de texto como vim, nano y emacs. Estas herramientas están listas para usar. Para listar los paquetes y módulos instalados, puedes usar "Get-Module -ListAvailable", "tdnf list" y "pip3 list".
|
||||
**$HOME persistence**: Al iniciar Azure Cloud Shell por primera vez, puedes usarlo con o sin una cuenta de almacenamiento adjunta. Elegir no adjuntar almacenamiento crea una sesión efímera donde los archivos se eliminan al finalizar la sesión. Para persistir archivos entre sesiones, monta una cuenta de almacenamiento, que se adjunta automáticamente como **$HOME\clouddrive**, con tu directorio **$HOME** guardado como un archivo **.img** en Azure File Share. Sin embargo, los archivos fuera de $HOME y los estados de la máquina no se persisten. Para almacenar de forma segura secretos como claves SSH, utiliza Azure Key Vault.
|
||||
**Azure drive (Azure:)**: PowerShell en Azure Cloud Shell incluye el Azure drive (Azure:), que permite una navegación fácil de los recursos de Azure como Compute, Network y Storage utilizando comandos similares a los del sistema de archivos. Cambia al Azure drive con cd Azure: y regresa a tu directorio personal con cd ~. Aún puedes usar cmdlets de Azure PowerShell para gestionar recursos desde cualquier unidad.
|
||||
**Custom Tool Installation**: Los usuarios que configuran Cloud Shell con una cuenta de almacenamiento pueden instalar herramientas adicionales que no requieren permisos de root. Esta característica permite una mayor personalización del entorno de Cloud Shell, permitiendo a los usuarios adaptar su configuración a sus necesidades específicas.
|
||||
**Entorno**: Azure Cloud Shell proporciona un entorno seguro al ejecutarse en Azure Linux, la propia distribución de Linux de Microsoft diseñada para infraestructura en la nube. Todos los paquetes incluidos en el repositorio de Azure Linux son compilados internamente por Microsoft para protegerse contra ataques a la cadena de suministro.
|
||||
**Herramientas Preinstaladas**: Cloud Shell incluye un conjunto completo de herramientas preinstaladas como Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git y editores de texto como vim, nano y emacs. Estas herramientas están listas para usar. Para listar los paquetes y módulos instalados, puedes usar "Get-Module -ListAvailable", "tdnf list" y "pip3 list".
|
||||
**Persistencia de $HOME**: Al iniciar Azure Cloud Shell por primera vez, puedes usarlo con o sin una cuenta de almacenamiento adjunta. Elegir no adjuntar almacenamiento crea una sesión efímera donde los archivos se eliminan al finalizar la sesión. Para persistir archivos entre sesiones, monta una cuenta de almacenamiento, que se adjunta automáticamente como **$HOME\clouddrive**, con tu directorio **$HOME** guardado como un archivo **.img** en Azure File Share. Sin embargo, los archivos fuera de $HOME y los estados de la máquina no se persisten. Para almacenar de forma segura secretos como claves SSH, utiliza Azure Key Vault.
|
||||
**Unidad de Azure (Azure:)**: PowerShell en Azure Cloud Shell incluye la unidad de Azure (Azure:), que permite una navegación fácil de los recursos de Azure como Compute, Network y Storage utilizando comandos similares a los del sistema de archivos. Cambia a la unidad de Azure con cd Azure: y regresa a tu directorio personal con cd ~. Aún puedes usar cmdlets de Azure PowerShell para gestionar recursos desde cualquier unidad.
|
||||
**Instalación de Herramientas Personalizadas**: Los usuarios que configuran Cloud Shell con una cuenta de almacenamiento pueden instalar herramientas adicionales que no requieren permisos de root. Esta característica permite una mayor personalización del entorno de Cloud Shell, permitiendo a los usuarios adaptar su configuración a sus necesidades específicas.
|
||||
|
||||
## References
|
||||
## Referencias
|
||||
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features)
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window)
|
||||
|
||||
|
||||
## Persistence
|
||||
## Persistencia
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-cloud-shell-persistence.md" %}
|
||||
[az-cloud-shell-persistence.md](../az-privilege-escalation/az-cloud-shell-persistence.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
@@ -203,7 +203,7 @@ print("Document inserted.")
|
||||
{% endcode %}
|
||||
|
||||
### MongoDB
|
||||
La API NoSQL de MongoDB es una API basada en documentos que utiliza BSON (Binary JSON) similar a JSON como su formato de datos. Proporciona un lenguaje de consulta con capacidades de agregación, lo que la hace adecuada para trabajar con datos estructurados, semi-estructurados y no estructurados. El endpoint del servicio generalmente sigue este formato:
|
||||
La API NoSQL de MongoDB es una API basada en documentos que utiliza BSON (Binary JSON) similar a JSON como su formato de datos. Proporciona un lenguaje de consulta con capacidades de agregación, lo que la hace adecuada para trabajar con datos estructurados, semi-estructurados y no estructurados. El punto final del servicio generalmente sigue este formato:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
@@ -351,8 +351,6 @@ print(f"Inserted document with ID: {result.inserted_id}")
|
||||
* Echar un vistazo a la post explotación "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" y definiciones de roles porque aquí podría haber una escalación de privilegios
|
||||
* Echar un vistazo a las restauraciones
|
||||
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
@@ -14,12 +14,12 @@
|
||||
- **Flex Consumption Plan**: Ofrece **escalado dinámico impulsado por eventos** con precios de pago por uso, añadiendo o eliminando instancias de función según la demanda. Soporta **redes virtuales** y **instancias pre-provisionadas** para reducir los inicios en frío, lo que lo hace adecuado para **cargas de trabajo variables** que no requieren soporte de contenedores.
|
||||
- **Traditional Consumption Plan**: La opción sin servidor predeterminada, donde **solo pagas por los recursos de computación cuando se ejecutan las funciones**. Escala automáticamente según los eventos entrantes e incluye **optimización de inicios en frío**, pero no admite implementaciones de contenedores. Ideal para **cargas de trabajo intermitentes** que requieren escalado automático.
|
||||
- **Premium Plan**: Diseñado para **rendimiento consistente**, con **trabajadores precalentados** para eliminar los inicios en frío. Ofrece **tiempos de ejecución extendidos, redes virtuales**, y soporta **imágenes de Linux personalizadas**, lo que lo hace perfecto para **aplicaciones críticas** que necesitan alto rendimiento y características avanzadas.
|
||||
- **Dedicated Plan**: Se ejecuta en máquinas virtuales dedicadas con **facturación predecible** y soporta escalado manual o automático. Permite ejecutar múltiples aplicaciones en el mismo plan, proporciona **aislamiento de computación**, y asegura **acceso seguro a la red** a través de App Service Environments, lo que lo hace ideal para **aplicaciones de larga duración** que necesitan asignación de recursos consistente.
|
||||
- **Dedicated Plan**: Se ejecuta en máquinas virtuales dedicadas con **facturación predecible** y admite escalado manual o automático. Permite ejecutar múltiples aplicaciones en el mismo plan, proporciona **aislamiento de computación**, y asegura **acceso seguro a la red** a través de App Service Environments, lo que lo hace ideal para **aplicaciones de larga duración** que necesitan asignación de recursos consistente.
|
||||
- **Container Apps**: Permite desplegar **aplicaciones de función en contenedores** en un entorno gestionado, junto con microservicios y APIs. Soporta bibliotecas personalizadas, migración de aplicaciones heredadas, y **procesamiento GPU**, eliminando la gestión del clúster de Kubernetes. Ideal para **aplicaciones escalables en contenedores impulsadas por eventos**.
|
||||
|
||||
### **Buckets de Almacenamiento**
|
||||
|
||||
Al crear una nueva Function App no contenedorizada (pero proporcionando el código para ejecutar), los **códigos y otros datos relacionados con la función se almacenarán en una cuenta de almacenamiento**. Por defecto, la consola web creará una nueva por función para almacenar el código.
|
||||
Al crear una nueva Function App no contenedorizada (pero dando el código para ejecutar), los **códigos y otros datos relacionados con la función se almacenarán en una cuenta de almacenamiento**. Por defecto, la consola web creará una nueva por función para almacenar el código.
|
||||
|
||||
Además, al modificar el código dentro del bucket (en los diferentes formatos en que podría estar almacenado), el **código de la aplicación se modificará al nuevo y se ejecutará** la próxima vez que se llame a la función.
|
||||
|
||||
@@ -30,7 +30,7 @@ Además, al modificar el código dentro del bucket (en los diferentes formatos e
|
||||
|
||||
También es posible encontrar las **claves maestra y de funciones** almacenadas en la cuenta de almacenamiento en el contenedor **`azure-webjobs-secrets`** dentro de la carpeta **`<app-name>`** en los archivos JSON que puedes encontrar dentro.
|
||||
|
||||
Ten en cuenta que Functions también permiten almacenar el código en una ubicación remota simplemente indicando la URL a la misma.
|
||||
Ten en cuenta que las Functions también permiten almacenar el código en una ubicación remota simplemente indicando la URL a la misma.
|
||||
|
||||
### Networking
|
||||
|
||||
@@ -74,7 +74,7 @@ Ten en cuenta que necesitas encontrar una manera de **verificar todas las Identi
|
||||
## Claves de Acceso
|
||||
|
||||
> [!NOTE]
|
||||
> Ten en cuenta que no hay permisos RBAC para dar acceso a los usuarios para invocar las funciones. La **invocación de la función depende del desencadenador** seleccionado cuando se creó y si se seleccionó un desencadenador HTTP, podría ser necesario usar una **clave de acceso**.
|
||||
> Ten en cuenta que no hay permisos RBAC para dar acceso a los usuarios para invocar las funciones. La **invocación de funciones depende del desencadenador** seleccionado cuando se creó y si se seleccionó un desencadenador HTTP, podría ser necesario usar una **clave de acceso**.
|
||||
|
||||
Al crear un endpoint dentro de una función usando un **desencadenador HTTP**, es posible indicar el **nivel de autorización de clave de acceso** necesario para activar la función. Hay tres opciones disponibles:
|
||||
|
||||
@@ -102,7 +102,7 @@ Al igual que en los App Services, las Functions también admiten autenticación
|
||||
az-app-services.md
|
||||
{{#endref}}
|
||||
|
||||
### Implementaciones Basadas en Github
|
||||
### Despliegues Basados en Github
|
||||
|
||||
Cuando se genera una función a partir de un repositorio de Github, la consola web de Azure permite **crear automáticamente un flujo de trabajo de Github en un repositorio específico**, de modo que cada vez que se actualice este repositorio, se actualice el código de la función. De hecho, el yaml de Github Action para una función de python se ve así:
|
||||
|
||||
@@ -197,7 +197,7 @@ Además, se crea una **Identidad Administrada** para que la Acción de Github de
|
||||
> [!CAUTION]
|
||||
> Por lo tanto, cualquier persona que comprometa ese repositorio podrá comprometer la función y las Identidades Administradas asociadas a ella.
|
||||
|
||||
### Implementaciones Basadas en Contenedores
|
||||
### Despliegues Basados en Contenedores
|
||||
|
||||
No todos los planes permiten desplegar contenedores, pero para aquellos que sí, la configuración contendrá la URL del contenedor. En la API, la configuración **`linuxFxVersion`** tendrá algo como: `DOCKER|mcr.microsoft.com/...`, mientras que en la consola web, la configuración mostrará los **ajustes de imagen**.
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ Logic Apps proporciona un diseñador visual para crear flujos de trabajo con una
|
||||
### Ejemplos
|
||||
|
||||
- **Automatización de Pipelines de Datos**: Logic Apps puede automatizar **procesos de transferencia y transformación de datos** en combinación con Azure Data Factory. Esto es útil para crear pipelines de datos escalables y confiables que mueven y transforman datos entre varios almacenes de datos, como Azure SQL Database y Azure Blob Storage, ayudando en operaciones de análisis e inteligencia empresarial.
|
||||
- **Integración con Azure Functions**: Logic Apps puede trabajar junto a Azure Functions para desarrollar **aplicaciones sofisticadas impulsadas por eventos que escalan según sea necesario** e integran sin problemas con otros servicios de Azure. Un caso de uso de ejemplo es utilizar un Logic App para activar una Azure Function en respuesta a ciertos eventos, como cambios en una cuenta de Azure Storage, permitiendo un procesamiento de datos dinámico.
|
||||
- **Integración con Azure Functions**: Logic Apps puede trabajar junto con Azure Functions para desarrollar **aplicaciones sofisticadas impulsadas por eventos que escalan según sea necesario** e integran sin problemas con otros servicios de Azure. Un caso de uso de ejemplo es utilizar un Logic App para activar una Azure Function en respuesta a ciertos eventos, como cambios en una cuenta de Azure Storage, permitiendo un procesamiento de datos dinámico.
|
||||
|
||||
### Visualizar un LogicAPP
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ Algunas características avanzadas son:
|
||||
|
||||
### Regla de Autorización / Política SAS
|
||||
|
||||
Las Políticas SAS definen los permisos de acceso para las entidades del espacio de nombres de Azure Service Bus (el más importante), colas y temas. Cada política tiene los siguientes componentes:
|
||||
Las Políticas SAS definen los permisos de acceso para las entidades del espacio de nombres de Azure Service Bus (la más importante), colas y temas. Cada política tiene los siguientes componentes:
|
||||
|
||||
- **Permisos**: Casillas de verificación para especificar niveles de acceso:
|
||||
- Administrar: Otorga control total sobre la entidad, incluyendo la configuración y gestión de permisos.
|
||||
|
||||
@@ -12,7 +12,7 @@ Azure Static Web Apps es un servicio en la nube para alojar **aplicaciones web e
|
||||
> 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.
|
||||
- **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 Básica de la Aplicación Web
|
||||
|
||||
@@ -84,7 +84,7 @@ Get-AzStorageTableStoredAccessPolicy -Table <Table> -Context (Get-AzStorageAccou
|
||||
|
||||
## Escalación de Privilegios
|
||||
|
||||
Igual que la privesc de almacenamiento:
|
||||
Igual que la escalación de privilegios de almacenamiento:
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-storage-privesc.md
|
||||
|
||||
Reference in New Issue
Block a user