Files
hacktricks-cloud/src/pentesting-cloud/azure-security/az-services/az-logic-apps.md

20 KiB

Az - Logic Apps

{{#include ../../../banners/hacktricks-training.md}}

Basic Information

Azure Logic Apps एक क्लाउड-आधारित सेवा है जो Microsoft Azure द्वारा प्रदान की जाती है जो डेवलपर्स को विभिन्न सेवाओं, डेटा स्रोतों और अनुप्रयोगों को एकीकृत करने वाले वर्कफ़्लो बनाने और चलाने में सक्षम बनाती है। ये वर्कफ़्लो व्यापार प्रक्रियाओं को स्वचालित करने, कार्यों का समन्वय करने और विभिन्न प्लेटफार्मों के बीच डेटा एकीकरण करने के लिए डिज़ाइन किए गए हैं।

Logic Apps एक दृश्य डिज़ाइनर प्रदान करता है जिससे पूर्व-निर्मित कनेक्टर्स की विस्तृत श्रृंखला के साथ वर्कफ़्लो बनाना आसान हो जाता है, जिससे Office 365, Dynamics CRM, Salesforce और कई अन्य सेवाओं के साथ कनेक्ट और इंटरैक्ट करना संभव होता है। आप अपनी विशिष्ट आवश्यकताओं के लिए कस्टम कनेक्टर्स भी बना सकते हैं।

Examples

  • डेटा पाइपलाइनों को स्वचालित करना: Logic Apps डेटा ट्रांसफर और रूपांतरण प्रक्रियाओं को Azure Data Factory के साथ मिलाकर स्वचालित कर सकता है। यह विभिन्न डेटा स्टोर्स, जैसे Azure SQL Database और Azure Blob Storage के बीच डेटा को स्थानांतरित और रूपांतरित करने के लिए स्केलेबल और विश्वसनीय डेटा पाइपलाइनों को बनाने में सहायक है, जो विश्लेषण और व्यावसायिक बुद्धिमत्ता संचालन में मदद करता है।
  • Azure Functions के साथ एकीकृत करना: Logic Apps Azure Functions के साथ मिलकर जटिल, इवेंट-चालित अनुप्रयोगों को विकसित करने के लिए काम कर सकता है जो आवश्यकतानुसार स्केल करते हैं और अन्य Azure सेवाओं के साथ सहजता से एकीकृत होते हैं। एक उदाहरण उपयोग मामला यह है कि एक Logic App का उपयोग कुछ घटनाओं के जवाब में Azure Function को ट्रिगर करने के लिए किया जाता है, जैसे Azure Storage खाते में परिवर्तन, जो गतिशील डेटा प्रोसेसिंग की अनुमति देता है।

Visualize a LogicAPP

यह ग्राफिक्स के साथ एक LogicApp को देखने के लिए संभव है:

या "Logic app code view" अनुभाग में कोड की जांच करने के लिए।

SSRF Protection

भले ही आप Logic App को SSRF के लिए संवेदनशील पाएँ, आप मेटाडेटा से क्रेडेंशियल्स तक पहुँच नहीं पाएँगे क्योंकि Logic Apps इसकी अनुमति नहीं देता।

उदाहरण के लिए, ऐसा कुछ टोकन नहीं लौटाएगा:

# 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

Hosting options

There are several hosting options:

  • Consumption
  • Multi-tenant: साझा कंप्यूट संसाधनों को प्रदान करता है, सार्वजनिक क्लाउड में संचालित होता है, और प्रति ऑपरेशन मूल्य निर्धारण मॉडल का पालन करता है। यह हल्के और लागत-कुशल कार्यभार के लिए आदर्श है।
  • Standard
  • Workflow Service Plan: नेटवर्किंग के लिए VNET एकीकरण के साथ समर्पित कंप्यूट संसाधन और प्रति वर्कफ़्लो सेवा योजना उदाहरण के लिए शुल्क। यह अधिक मांग वाले कार्यभार के लिए उपयुक्त है जो अधिक नियंत्रण की आवश्यकता होती है।
  • App Service Environment V3 समर्पित कंप्यूट संसाधन पूर्ण अलगाव और स्केलेबिलिटी के साथ। यह नेटवर्किंग के लिए VNET के साथ भी एकीकृत होता है और वातावरण के भीतर App Service उदाहरणों के आधार पर मूल्य निर्धारण मॉडल का उपयोग करता है। यह उच्च अलगाव की आवश्यकता वाले उद्यम-स्तरीय अनुप्रयोगों के लिए आदर्श है।
  • Hybrid स्थानीय प्रसंस्करण और मल्टी-क्लाउड समर्थन के लिए डिज़ाइन किया गया। यह स्थानीय नेटवर्क एक्सेस के साथ ग्राहक-प्रबंधित कंप्यूट संसाधनों की अनुमति देता है और Kubernetes इवेंट-ड्रिवेन ऑटोस्केलिंग (KEDA) का उपयोग करता है।

Enumeration

{% tabs %} {% tab title="az cli" %} {% code overflow="wrap" %}

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

az rest \
--method GET \
--uri "https://examplelogicapp1994.scm.azurewebsites.net/api/functions/admin/download?includeCsproj=true&includeAppSettings=true" \
--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>

{% endcode %} {% endtab %}

{% tab title="Az PowerShell" %} {% code overflow="wrap" %}

Get-Command -Module Az.LogicApp

# List
Get-AzLogicApp -ResourceGroupName <ResourceGroupName>
# Get info
Get-AzLogicApp -ResourceGroupName <ResourceGroupName> -Name <LogicAppName>

# Get details of a specific Logic App workflow run action
Get-AzLogicAppRunAction -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>" -RunName "<RunName>"

# Get the run history for a specific Logic App
Get-AzLogicAppRunHistory -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>"

# Get details about triggers for a specific Logic App
Get-AzLogicAppTrigger -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>"

# Get the callback URL for a specific trigger in a Logic App
Get-AzLogicAppTriggerCallbackUrl -ResourceGroupName "<ResourceGroupName>" -LName "<LogicAppName>" -TriggerName "<TriggerName>"

# Get the history of a specific trigger in a Logic App
Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>" -TriggerName "<TriggerName>"

{% endcode %} {% endtab %} {% endtabs %}

Integration Accounts

Integration Accounts, Azure Logic Apps की एक विशेषता हैं। Integration Accounts का उपयोग उन्नत B2B क्षमताओं को सक्षम करके उद्यम-स्तरीय एकीकरण को सुविधाजनक बनाने के लिए किया जाता है, जैसे EDI, AS2, और XML स्कीमा प्रबंधन। Integration Accounts Azure में एक कंटेनर हैं जो Logic Apps के लिए उपयोग किए जाने वाले निम्नलिखित कलाकृतियों को संग्रहीत करते हैं:

  • Schemas: अपने एकीकरण खाते में संदेशों को मान्य और संसाधित करने के लिए XML स्कीमा प्रबंधित करें।
  • Maps: अपने एकीकरण कार्यप्रवाह के भीतर डेटा प्रारूपों को परिवर्तित करने के लिए XSLT-आधारित रूपांतरण कॉन्फ़िगर करें।
  • Assemblies: लॉजिक और डेटा प्रोसेसिंग को सरल बनाने के लिए एकीकरण खाता असेंबली प्रबंधित करें।
  • Certificates: संदेशों को एन्क्रिप्ट और साइन करने के लिए प्रमाणपत्रों को संभालें, सुरक्षित संचार सुनिश्चित करें।
  • Partners: B2B लेनदेन के लिए व्यापार भागीदार की जानकारी प्रबंधित करें, निर्बाध एकीकरण सक्षम करें।
  • Agreements: व्यापार भागीदारों के साथ डेटा का आदान-प्रदान करने के लिए नियम और सेटिंग्स कॉन्फ़िगर करें (जैसे, EDI, AS2)।
  • Batch Configurations: संदेशों को कुशलतापूर्वक समूहित और संसाधित करने के लिए बैच प्रोसेसिंग कॉन्फ़िगरेशन प्रबंधित करें।
  • RosettaNet PIP: B2B संचार को मानकीकरण के लिए RosettaNet Partner Interface Processes (PIPs) कॉन्फ़िगर करें।

Enumeration

{% tabs %} {% tab title="az cli" %} {% code overflow="wrap" %}

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


{% endcode %} {% endtab %}

{% tab title="Az PowerShell" %} {% code overflow="wrap" %}

Get-Command -Module Az.LogicApp

# Retrieve details of an integration account
Get-AzIntegrationAccount -ResourceGroupName <resource-group-name> -Name <integration-account-name>

# Retrieve the callback URL of an integration account
Get-AzIntegrationAccountCallbackUrl -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name>

# Retrieve details of a specific agreement in an integration account
Get-AzIntegrationAccountAgreement -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <agreement-name>

# Retrieve details of a specific assembly in an integration account
Get-AzIntegrationAccountAssembly -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <assembly-name>

# Retrieve details of a specific batch configuration in an integration account
Get-AzIntegrationAccountBatchConfiguration -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <batch-configuration-name>

# Retrieve details of a specific certificate in an integration account
Get-AzIntegrationAccountCertificate -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <certificate-name>

# Retrieve details of a specific map in an integration account
Get-AzIntegrationAccountMap -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <map-name>

# Retrieve details of a specific partner in an integration account
Get-AzIntegrationAccountPartner -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <partner-name>

# Retrieve details of a specific schema in an integration account
Get-AzIntegrationAccountSchema -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <schema-name>

{% endcode %} {% endtab %} {% endtabs %}

विशेषाधिकार वृद्धि

लॉजिक ऐप्स प्रिवेस्क के समान:

{% content-ref url="../az-privilege-escalation/az-logic-apps-privesc.md" %} az-logic-apps-privesc.md {% endcontent-ref %}

पोस्ट एक्सप्लोइटेशन

{% content-ref url="../az-post-exploitation/az-logic-apps-post-exploitation.md" %} az-logic-apps-post-exploitation.md {% endcontent-ref %}

{% hint style="success" %} AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें
{% endhint %}