Az - Logic Apps

Reading time: 15 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Informations de base

Azure Logic Apps est un service basé sur le cloud fourni par Microsoft Azure qui permet aux développeurs de créer et d'exécuter des workflows intégrant divers services, sources de données et applications. Ces workflows sont conçus pour automatiser les processus métier, orchestrer des tùches et effectuer des intégrations de données à travers différentes plateformes.

Logic Apps fournit un concepteur visuel pour créer des workflows avec une large gamme de connecteurs préconçus, ce qui facilite la connexion et l'interaction avec divers services, tels qu'Office 365, Dynamics CRM, Salesforce, et bien d'autres. Vous pouvez également créer des connecteurs personnalisés pour vos besoins spécifiques.

Lors de la crĂ©ation d'une Logic App, vous devez soit crĂ©er, soit lier un compte de stockage externe qui stocke l'Ă©tat du workflow, l'historique des exĂ©cutions et les artefacts. Ce stockage peut ĂȘtre configurĂ© avec des paramĂštres de diagnostic pour le suivi et peut ĂȘtre sĂ©curisĂ© avec des restrictions d'accĂšs rĂ©seau ou intĂ©grĂ© dans un rĂ©seau virtuel pour contrĂŽler le trafic entrant et sortant.

Exemples

  • Automatisation des pipelines de donnĂ©es : Logic Apps peut automatiser les processus de transfert et de transformation des donnĂ©es en combinaison avec Azure Data Factory. Cela est utile pour crĂ©er des pipelines de donnĂ©es Ă©volutifs et fiables qui dĂ©placent et transforment des donnĂ©es entre divers magasins de donnĂ©es, comme Azure SQL Database et Azure Blob Storage, aidant ainsi dans les opĂ©rations d'analytique et d'intelligence d'affaires.
  • IntĂ©gration avec Azure Functions : Logic Apps peut fonctionner aux cĂŽtĂ©s d'Azure Functions pour dĂ©velopper des applications sophistiquĂ©es, dĂ©clenchĂ©es par des Ă©vĂ©nements qui s'adaptent selon les besoins et s'intĂšgrent parfaitement avec d'autres services Azure. Un exemple de cas d'utilisation est d'utiliser une Logic App pour dĂ©clencher une Azure Function en rĂ©ponse Ă  certains Ă©vĂ©nements, tels que des changements dans un compte de stockage Azure, permettant un traitement dynamique des donnĂ©es.

Visualiser une LogicAPP

Il est possible de visualiser une LogicApp avec des graphiques :

ou de vérifier le code dans la section "Vue du code de l'application Logic".

Protection SSRF

MĂȘme si vous trouvez la Logic App vulnĂ©rable au SSRF, vous ne pourrez pas accĂ©der aux identifiants depuis les mĂ©tadonnĂ©es car Logic Apps ne le permet pas.

Par exemple, quelque chose comme ceci ne renverra pas le token :

bash
# 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

Options d'hébergement

Il existe plusieurs options d'hébergement :

  • Consommation
  • Multi-tenant : fournit des ressources de calcul partagĂ©es, fonctionne dans le cloud public et suit un modĂšle de tarification Ă  la consommation. Cela est idĂ©al pour des charges de travail lĂ©gĂšres et rentables. Cela dĂ©ploie un "Single Workflow".
  • Standard
  • Workflow Service Plan : ressources de calcul dĂ©diĂ©es avec intĂ©gration VNET pour le rĂ©seau et des frais par instance de plan de service de workflow. Il est adaptĂ© aux charges de travail plus exigeantes nĂ©cessitant un plus grand contrĂŽle.
  • App Service Environment V3 ressources de calcul dĂ©diĂ©es avec isolation complĂšte et Ă©volutivitĂ©. Il s'intĂšgre Ă©galement avec VNET pour le rĂ©seau et utilise un modĂšle de tarification basĂ© sur les instances de service d'application au sein de l'environnement.
  • Hybride conçu pour le traitement local et le support multi-cloud. Il permet des ressources de calcul gĂ©rĂ©es par le client avec accĂšs au rĂ©seau local et utilise Kubernetes Event-Driven Autoscaling (KEDA). Il repose sur un environnement d'application conteneurisĂ©e connectĂ©.

Caractéristiques clés

  • Stockage : Les Logic Apps nĂ©cessitent un compte de stockage Azure externe pour stocker l'Ă©tat du workflow, l'historique des exĂ©cutions
 et doivent ĂȘtre dans le mĂȘme groupe de ressources que la Logic App.
  • RĂ©seautage et sĂ©curitĂ© : Les Logic Apps peuvent ĂȘtre configurĂ©es avec un accĂšs public ou privĂ©. Par dĂ©faut, l'application est ouverte Ă  Internet mais peut ĂȘtre intĂ©grĂ©e Ă  un rĂ©seau virtuel Azure pour une connectivitĂ© isolĂ©e.
  • Application Insights : La gestion des performances des applications (APM) via Azure Monitor Application Insights peut ĂȘtre activĂ©e pour suivre les performances, dĂ©tecter les anomalies et fournir des analyses.
  • ContrĂŽle d'accĂšs : Les Logic Apps prennent en charge les identitĂ©s gĂ©rĂ©es par le systĂšme et les identitĂ©s gĂ©rĂ©es par l'utilisateur.

Workflows "Single"

Un workflow est une séquence structurée d'étapes ou de tùches automatisées qui exécutent un processus ou un objectif spécifique. Il définit comment différentes actions, conditions et décisions interagissent pour atteindre un résultat souhaité, rationalisant les opérations et réduisant l'effort manuel. Les workflows peuvent intégrer plusieurs systÚmes, déclencher des événements et des rÚgles, garantissant la cohérence et l'efficacité des processus.

Azure Logic Apps offre la fonctionnalitĂ© de crĂ©er un workflow unique sans avoir besoin d'une Logic App elle-mĂȘme.

Chaque workflow a différents déclencheurs. Ces déclencheurs sont les étapes que suit le workflow. Chaque déclencheur a ses paramÚtres qui peuvent varier en fonction du type de déclencheur :

  • Nom de connexion
  • Type d'authentification qui peut ĂȘtre, ClĂ© d'accĂšs, Microsoft Entra ID, authentification de principal de service intĂ©grĂ© et identitĂ© gĂ©rĂ©e par Logic Apps.

Les déclencheurs ont également divers paramÚtres :

  • Validation de schĂ©ma : Assure que les donnĂ©es entrantes suivent une structure prĂ©dĂ©finie.
  • ContrĂŽle de concurrence : Limite le nombre d'exĂ©cutions parallĂšles.
  • Conditions de dĂ©clenchement : conditions qui doivent ĂȘtre remplies avant que le dĂ©clencheur ne s'active.
  • RĂ©seautage : Configure la taille des morceaux pour le transfert de donnĂ©es et permet de supprimer les en-tĂȘtes de workflow dans les rĂ©ponses.
  • SĂ©curitĂ© : Active Secure Inputs/Outputs pour cacher les donnĂ©es sensibles dans les journaux et les sorties.

ParamĂštres et connexions API :

Un workflow a différents paramÚtres tels que :

  • Adresses IP entrantes autorisĂ©es : Ce paramĂštre vous permet de restreindre qui peut dĂ©clencher ou dĂ©marrer votre Logic App. Les options sont Toute IP, Seulement d'autres Logic Apps et Plages d'IP spĂ©cifiques.
  • Compte d'intĂ©gration : Ici, vous pouvez lier votre Logic App Ă  un compte d'intĂ©gration.
  • Haut dĂ©bit : Ce paramĂštre permet Ă  votre Logic App de gĂ©rer plus de demandes rapidement.
  • Conservation de l'historique des exĂ©cutions : pendant combien de temps l'historique des exĂ©cutions de votre Logic App est conservĂ©.

Vous pouvez voir les diffĂ©rentes connexions API que le workflow a. À l'intĂ©rieur de chacune de ces connexions, elles ont diffĂ©rentes propriĂ©tĂ©s et la possibilitĂ© de modifier la connexion API oĂč le type d'authentification peut ĂȘtre changĂ©.

Historique et versions : Il a l'option d'accéder à l'historique des différentes exécutions, il montre, ParamÚtres, Sortie, ParamÚtres et le Code.

Il a Ă©galement l'option d'accĂ©der Ă  diffĂ©rentes versions du workflow, oĂč vous pouvez vĂ©rifier le code et changer le workflow actuel avec une version antĂ©rieure de celui-ci.

Autorisation : Les Azure Logic Apps prennent en charge les politiques d'autorisation avec Entra ID pour sĂ©curiser les dĂ©clencheurs basĂ©s sur des requĂȘtes en exigeant un jeton d'accĂšs valide. Ce jeton doit inclure des revendications spĂ©cifiques :

  • Émetteur (iss) pour vĂ©rifier le fournisseur d'identitĂ©
  • Public (aud) pour s'assurer que le jeton est destinĂ© Ă  la Logic App
  • Sujet (sub) pour identifier l'appelant
  • ID JWT (identifiant de jeton Web JSON)
  • Revendication personnalisĂ©e

Lorsqu'une requĂȘte est reçue, les Logic Apps valident le jeton par rapport Ă  ces revendications et permettent l'exĂ©cution uniquement s'il correspond Ă  la politique configurĂ©e. Cela peut ĂȘtre utilisĂ© pour permettre Ă  un autre locataire de dĂ©clencher le workflow ou de refuser le dĂ©clenchement d'autres sources, par exemple en n'autorisant le dĂ©clenchement que s'il provient de https://login.microsoftonline.com/.

ClĂ©s d'accĂšs : Lorsque vous enregistrez un dĂ©clencheur basĂ© sur une requĂȘte pour la premiĂšre fois, les Logic Apps crĂ©ent automatiquement un point de terminaison unique avec une signature SAS (créée Ă  partir de la clĂ© d'accĂšs) qui accorde la permission d'appeler le workflow. Cette signature SAS est intĂ©grĂ©e dans l'URL du dĂ©clencheur. Cette clĂ© peut ĂȘtre rĂ©gĂ©nĂ©rĂ©e et elle donnera une nouvelle signature SAS, mais les clĂ©s ne peuvent pas ĂȘtre listĂ©es.

L'URL pour l'invoquer avec la clé d'accÚs :

https://.logic.azure.com:443/workflows//triggers//paths/invoke?api-version=&sp=%2Ftriggers%2F%2Frun&sv=&sig=

ÉnumĂ©ration

bash
# 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"


Comptes d'intégration

Comptes d'intégration, sont une fonctionnalité d'Azure Logic Apps. Les Comptes d'intégration sont utilisés pour faciliter les intégrations au niveau de l'entreprise en permettant des capacités B2B avancées, telles que la gestion EDI, AS2 et des schémas XML. Les Comptes d'intégration sont un conteneur dans Azure qui stocke les artefacts suivants utilisés pour les Logic Apps :

  • SchĂ©mas : GĂ©rer les schĂ©mas XML pour valider et traiter les messages dans votre compte d'intĂ©gration.
  • Cartes : Configurer des transformations basĂ©es sur XSLT pour convertir les formats de donnĂ©es au sein de vos flux de travail d'intĂ©gration.
  • Assemblages : GĂ©rer les assemblages du compte d'intĂ©gration pour rationaliser la logique et le traitement des donnĂ©es.
  • Certificats : GĂ©rer les certificats pour chiffrer et signer les messages, garantissant une communication sĂ©curisĂ©e.
  • Partenaires : GĂ©rer les informations sur les partenaires commerciaux pour les transactions B2B, permettant des intĂ©grations sans faille.
  • Accords : Configurer des rĂšgles et des paramĂštres pour Ă©changer des donnĂ©es avec des partenaires commerciaux (par exemple, EDI, AS2).
  • Configurations de lot : GĂ©rer les configurations de traitement par lot pour regrouper et traiter les messages efficacement.
  • RosettaNet PIP : Configurer les processus d'interface partenaire RosettaNet (PIPs) pour standardiser la communication B2B.

ÉnumĂ©ration

bash
# 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>


Escalade de privilĂšges

Identique Ă  la privesc des applications logiques :

Az - Logic Apps Privesc

Post-exploitation

Az - Logic Apps Post Exploitation

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks