Az - Logic Apps
Reading time: 15 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Informações Básicas
Azure Logic Apps é um serviço baseado em nuvem fornecido pela Microsoft Azure que permite aos desenvolvedores criar e executar fluxos de trabalho que integram vários serviços, fontes de dados e aplicações. Esses fluxos de trabalho são projetados para automatizar processos de negócios, orquestrar tarefas e realizar integrações de dados entre diferentes plataformas.
Logic Apps fornece um designer visual para criar fluxos de trabalho com uma ampla gama de conectores pré-construídos, o que facilita a conexão e interação com vários serviços, como Office 365, Dynamics CRM, Salesforce e muitos outros. Você também pode criar conectores personalizados para suas necessidades específicas.
Ao criar um Logic App, você deve criar ou vincular uma conta de armazenamento externa que armazena o estado do fluxo de trabalho, o histórico de execução e os artefatos. Esse armazenamento pode ser configurado com configurações de diagnóstico para monitoramento e pode ser protegido com restrições de acesso à rede ou integrado a uma rede virtual para controlar o tráfego de entrada e saída.
Exemplos
- Automatizando Pipelines de Dados: Logic Apps pode automatizar processos de transferência e transformação de dados em combinação com o Azure Data Factory. Isso é útil para criar pipelines de dados escaláveis e confiáveis que movem e transformam dados entre várias fontes de dados, como Azure SQL Database e Azure Blob Storage, auxiliando em operações de análise e inteligência de negócios.
- Integrando com Azure Functions: Logic Apps pode trabalhar ao lado do Azure Functions para desenvolver aplicações sofisticadas e orientadas a eventos que escalam conforme necessário e se integram perfeitamente com outros serviços do Azure. Um exemplo de caso de uso é usar um Logic App para acionar uma Azure Function em resposta a certos eventos, como mudanças em uma conta de armazenamento do Azure, permitindo o processamento dinâmico de dados.
Visualizar um LogicAPP
É possível visualizar um LogicApp com gráficos:
.png)
ou verificar o código na seção "Visualização do código do Logic app".
Proteção SSRF
Mesmo que você encontre o Logic App vulnerável a SSRF, você não conseguirá acessar as credenciais da metadata, pois Logic Apps não permite isso.
Por exemplo, algo como isso não retornará o token:
# The URL belongs to a Logic App vulenrable to SSRF
curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e974123adf0b98159966644/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_8_oqqsCXc0u2c7hNjtSZmT0uM4Xi3hktw6Uze0O34s' -d '{"url": "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"}' -H "Content-type: application/json" -v
Opções de hospedagem
Existem várias opções de hospedagem:
- Consumo
- Multi-tenant: fornece recursos de computação compartilhados, opera na nuvem pública e segue um modelo de preços pay-per-operation. Isso é ideal para cargas de trabalho leves e econômicas. Isso implanta um "Single Workflow".
- Padrão
- Workflow Service Plan: recursos de computação dedicados com integração VNET para rede e cobra por instância do plano de serviço de fluxo de trabalho. É adequado para cargas de trabalho mais exigentes que requerem maior controle.
- App Service Environment V3 recursos de computação dedicados com total isolamento e escalabilidade. Também se integra com VNET para rede e utiliza um modelo de preços baseado em instâncias de App Service dentro do ambiente.
- Híbrido projetado para processamento local e suporte multi-nuvem. Permite recursos de computação gerenciados pelo cliente com acesso à rede local e utiliza Kubernetes Event-Driven Autoscaling (KEDA). Baseia-se em um Container App Connected Environment.
Principais Recursos
- Armazenamento: Logic Apps requer uma conta de Armazenamento Azure externa para armazenar o estado do fluxo de trabalho, histórico de execução… e deve estar no mesmo grupo de recursos que o Logic App.
- Rede & Segurança: Logic Apps podem ser configurados com acesso público ou privado. Por padrão, o aplicativo está aberto para a internet, mas pode ser integrado a uma Rede Virtual Azure para conectividade isolada.
- Application Insights: Gerenciamento de Desempenho de Aplicações (APM) através do Azure Monitor Application Insights pode ser habilitado para rastrear desempenho, detectar anomalias e fornecer análises.
- Controle de Acesso: Logic apps suportam Identidades Gerenciadas pelo Sistema & Identidades Gerenciadas pelo Usuário.
Workflows "Únicos"
Um workflow é uma sequência estruturada de etapas ou tarefas automatizadas que executam um processo ou objetivo específico. Ele define como diferentes ações, condições e decisões interagem para alcançar um resultado desejado, otimizando operações e reduzindo o esforço manual. Workflows podem integrar múltiplos sistemas, acionar eventos e regras, garantindo consistência e eficiência nos processos.
Azure Logic apps oferece a funcionalidade de criar um único workflow sem a necessidade de um Logic App em si.
Cada workflow tem diferentes gatilhos. Esses gatilhos são os passos que o workflow segue. Cada gatilho tem seus parâmetros que podem variar dependendo do tipo do gatilho:
- Nome da conexão
- Tipo de Autenticação que pode ser, Chave de Acesso, Microsoft Entra ID, autenticação de principal de serviço integrado e Identidade Gerenciada do Logic Apps.
Os gatilhos também têm várias configurações:
- Validação de Esquema: Garante que os dados recebidos sigam uma estrutura predefinida.
- Controle de Concorrência: Limita o número de execuções paralelas.
- Condições de Gatilho: condições que devem ser atendidas antes que o gatilho seja acionado.
- Rede: Configura o tamanho do bloco para transferência de dados e permite suprimir cabeçalhos de workflow nas respostas.
- Segurança: Habilita Entradas/Saídas Seguras para ocultar dados sensíveis em logs e nas saídas.
Configurações & Conexões de API:
Um workflow tem diferentes configurações, como:
- Endereços IP de entrada permitidos: Esta configuração permite restringir quem pode acionar ou iniciar seu Logic App. As opções são Qualquer IP, Apenas outros Logic Apps e Faixas de IP específicas.
- Conta de integração: Aqui, você pode vincular seu Logic App a uma Conta de Integração.
- Alta capacidade: Esta configuração permite que seu Logic App lide com mais solicitações rapidamente.
- Retenção do histórico de execução: por quanto tempo o histórico das execuções do seu Logic App é mantido.
Você pode ver as diferentes conexões de API que o workflow possui. Dentro de cada uma dessas conexões, elas têm diferentes propriedades e a possibilidade de editar a conexão de API, onde o tipo de autenticação pode ser alterado.
Histórico & Versões: Tem a opção de acessar o histórico das diferentes execuções, mostrando Configurações, Saída, Parâmetros e o Código.
Também tem a opção de acessar diferentes versões do workflow, onde você pode verificar o código e alterar o workflow atual por uma versão anterior dele.
Autorização: Azure Logic Apps suportam políticas de autorização com Entra ID para proteger gatilhos baseados em solicitações, exigindo um token de acesso válido. Este token deve incluir reivindicações específicas:
- Emissor (iss) para verificar o provedor de identidade
- Público (aud) para garantir que o token é destinado ao Logic App
- Assunto (sub) para identificar o chamador
- ID do JWT (identificador do Token Web JSON)
- Reivindicação Personalizada
Quando uma solicitação é recebida, Logic Apps valida o token contra essas reivindicações e permite a execução apenas se corresponder à política configurada. Isso pode ser usado para permitir que outro inquilino acione o workflow ou negar o acionamento de outras fontes, por exemplo, permitindo o acionamento apenas se vier de https://login.microsoftonline.com/.
Chaves de Acesso: Quando você salva um gatilho baseado em solicitações pela primeira vez, Logic Apps cria automaticamente um endpoint exclusivo com uma assinatura SAS (criada a partir da Chave de Acesso) que concede permissão para chamar o workflow. Esta assinatura SAS está embutida na URL do gatilho. Esta chave pode ser regenerada e dará uma nova assinatura SAS, mas as chaves não podem ser listadas.
A URL para invocá-lo com a Chave de Acesso:
https://
Enumeração
# 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"
Contas de Integração
Contas de Integração são um recurso do Azure Logic Apps. As Contas de Integração são usadas para facilitar integrações em nível empresarial, permitindo capacidades avançadas de B2B, como EDI, AS2 e gerenciamento de esquemas XML. As Contas de Integração são um contêiner no Azure que armazena os seguintes artefatos usados para Logic Apps:
- Esquemas: Gerenciar esquemas XML para validar e processar mensagens em sua conta de integração.
- Mapas: Configurar transformações baseadas em XSLT para converter formatos de dados dentro de seus fluxos de trabalho de integração.
- Assemblies: Gerenciar assemblies da conta de integração para otimizar a lógica e o processamento de dados.
- Certificados: Lidar com certificados para criptografar e assinar mensagens, garantindo comunicação segura.
- Parceiros: Gerenciar informações de parceiros comerciais para transações B2B, permitindo integrações sem costura.
- Acordos: Configurar regras e configurações para troca de dados com parceiros comerciais (por exemplo, EDI, AS2).
- Configurações de Lote: Gerenciar configurações de processamento em lote para agrupar e processar mensagens de forma eficiente.
- RosettaNet PIP: Configurar Processos de Interface de Parceiro RosettaNet (PIPs) para padronizar a comunicação B2B.
Enumeração
# 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>
Escalação de Privilégios
Mesma coisa que a escalação de privilégios de aplicativos lógicos:
Pós Exploração
Az - Logic Apps Post Exploitation
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.