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
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
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 :
.png)
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 :
# 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://
ĂnumĂ©ration
# 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
# 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 :
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
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.