mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-18 18:22:41 -08:00
Translated ['src/pentesting-cloud/azure-security/az-persistence/az-cloud
This commit is contained in:
@@ -77,6 +77,8 @@ def ref(matchobj):
|
||||
logger.error(f'Error getting chapter title: {path.normpath(path.join(dir,href))}')
|
||||
sys.exit(1)
|
||||
|
||||
if href.endswith("/README.md"):
|
||||
href = href.replace("/README.md", "/index.html")
|
||||
|
||||
template = f"""<a class="content_ref" href="{href}"><span class="content_ref_label">{title}</span></a>"""
|
||||
|
||||
|
||||
@@ -398,8 +398,8 @@
|
||||
- [Az - Enumeration Tools](pentesting-cloud/azure-security/az-enumeration-tools.md)
|
||||
- [Az - Unauthenticated Enum & Initial Entry](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md)
|
||||
- [Az - OAuth Apps Phishing](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-oauth-apps-phishing.md)
|
||||
- [Az - Storage Unath](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md)
|
||||
- [Az - VMs Unath](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md)
|
||||
- [Az - Storage Unauth](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md)
|
||||
- [Az - VMs Unauth](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md)
|
||||
- [Az - Device Code Authentication Phishing](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
|
||||
- [Az - Password Spraying](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
|
||||
- [Az - Services](pentesting-cloud/azure-security/az-services/README.md)
|
||||
|
||||
@@ -19,8 +19,8 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).p
|
||||
|
||||
Azure Cloud Shell कमांड-लाइन एक्सेस प्रदान करता है ताकि Azure संसाधनों का प्रबंधन किया जा सके, जिसमें स्थायी भंडारण और स्वचालित प्रमाणीकरण शामिल है। हमलावर इसका लाभ उठाकर स्थायी होम डायरेक्टरी में बैकडोर रख सकते हैं:
|
||||
|
||||
* **Persistent Storage**: Azure Cloud Shell का होम डायरेक्टरी एक Azure फ़ाइल शेयर पर माउंट किया गया है और सत्र समाप्त होने के बाद भी बरकरार रहता है।
|
||||
* **Startup Scripts**: फ़ाइलें जैसे .bashrc प्रत्येक सत्र की शुरुआत में स्वचालित रूप से निष्पादित होती हैं, जिससे क्लाउड शेल शुरू होने पर स्थायी निष्पादन की अनुमति मिलती है।
|
||||
* **स्थायी भंडारण**: Azure Cloud Shell की होम डायरेक्टरी एक Azure फ़ाइल शेयर पर माउंट की गई है और सत्र समाप्त होने के बाद भी बरकरार रहती है।
|
||||
* **स्टार्टअप स्क्रिप्ट**: फ़ाइलें जैसे .bashrc प्रत्येक सत्र की शुरुआत में स्वचालित रूप से निष्पादित होती हैं, जिससे क्लाउड शेल शुरू होने पर स्थायी निष्पादन की अनुमति मिलती है।
|
||||
|
||||
Example backdoor in .bashrc:
|
||||
|
||||
@@ -49,8 +49,8 @@ GCP हैकिंग सीखें और अभ्यास करें: <
|
||||
<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 सबमिट करें।
|
||||
* **हमारे** 💬 [**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 %}
|
||||
|
||||
@@ -166,16 +166,16 @@ az logic integration-account session create \
|
||||
इन अनुमतियों के साथ आप 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)
|
||||
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>Support HackTricks</summary>
|
||||
<summary>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.
|
||||
* [**सदस्यता योजनाएँ**](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 रिपोजिटरी में PR सबमिट करें।
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
@@ -9,8 +9,8 @@ GCP हैकिंग सीखें और अभ्यास करें: <
|
||||
<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 सबमिट करें।
|
||||
* **हमारे** 💬 [**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 %}
|
||||
@@ -50,7 +50,7 @@ az rest \
|
||||
--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 अपडेट और तैनात कर सकते हैं।
|
||||
इन अनुमतियों के साथ, आप ZIP फ़ाइल तैनाती का उपयोग करके Logic App वर्कफ़्लो तैनात कर सकते हैं। ये अनुमतियाँ ऐप विवरण पढ़ने, प्रकाशन क्रेडेंशियल्स तक पहुँचने, परिवर्तनों को लिखने और ऐप कॉन्फ़िगरेशन की सूची बनाने जैसी क्रियाओं को सक्षम बनाती हैं। प्रारंभ अनुमतियों के साथ, आप इच्छित सामग्री के साथ एक नया Logic App अपडेट और तैनात कर सकते हैं।
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
||||
@@ -9,22 +9,22 @@ Azure App Services डेवलपर्स को **वेब एप्लि
|
||||
प्रत्येक ऐप एक सैंडबॉक्स के अंदर चलता है लेकिन अलगाव App Service योजनाओं पर निर्भर करता है:
|
||||
|
||||
- फ्री और शेयर किए गए स्तरों में ऐप्स **शेयर किए गए VMs** पर चलते हैं
|
||||
- स्टैंडर्ड और प्रीमियम स्तरों में ऐप्स **विशिष्ट VMs पर चलते हैं जो केवल उसी App Service योजना में ऐप्स द्वारा साझा किए जाते हैं**।
|
||||
- स्टैंडर्ड और प्रीमियम स्तरों में ऐप्स **विशिष्ट VMs पर चलते हैं जो केवल उसी App Service योजना में ऐप्स द्वारा साझा किए जाते हैं।**
|
||||
- आइसोलेटेड स्तर **विशिष्ट VMs पर चलते हैं जो विशिष्ट वर्चुअल नेटवर्क पर होते हैं**, ऐप्स के अलगाव में सुधार करते हैं।
|
||||
|
||||
> [!WARNING]
|
||||
> ध्यान दें कि **कोई भी** उन अलगावों में से **अन्य सामान्य** **वेब कमजोरियों** (जैसे फ़ाइल अपलोड या इंजेक्शन) को **रोकता नहीं है**। और यदि एक **प्रबंधन पहचान** का उपयोग किया जाता है, तो यह **उन पर विशेषाधिकार बढ़ा सकता है**।
|
||||
|
||||
ऐप्स में कुछ दिलचस्प कॉन्फ़िगरेशन होते हैं:
|
||||
ऐप्स में कुछ दिलचस्प कॉन्फ़िगरेशन हैं:
|
||||
|
||||
- **हमेशा चालू**: सुनिश्चित करता है कि ऐप हमेशा चल रहा है। यदि सक्षम नहीं किया गया है, तो ऐप 20 मिनट की निष्क्रियता के बाद चलना बंद कर देगा और जब एक अनुरोध प्राप्त होगा तो फिर से शुरू होगा।
|
||||
- यदि आपके पास एक वेबजॉब है जिसे लगातार चलाने की आवश्यकता है तो यह आवश्यक है क्योंकि यदि ऐप रुक जाता है तो वेबजॉब भी रुक जाएगा।
|
||||
- **हमेशा चालू**: सुनिश्चित करता है कि ऐप हमेशा चल रहा है। यदि सक्षम नहीं किया गया है, तो ऐप 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
|
||||
|
||||
@@ -39,29 +39,29 @@ 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 का संस्करण बहुत अधिक सीमित है।
|
||||
ध्यान दें कि App Services और Function Apps द्वारा उपयोग किए जाने वाले Kudu संस्करण भिन्न हैं, Function ऐप्स का संस्करण बहुत अधिक सीमित है।
|
||||
|
||||
Kudu में आप कुछ दिलचस्प एंडपॉइंट पा सकते हैं:
|
||||
- `/BasicAuth`: आपको Kudu के अंदर **लॉगिन करने के लिए इस पथ तक पहुँचने** की आवश्यकता है।
|
||||
- `/DebugConsole`: एक कंसोल जो आपको Kudu चलाने वाले वातावरण में कमांड निष्पादित करने की अनुमति देता है।
|
||||
- ध्यान दें कि इस वातावरण में **मेटाडेटा सेवा तक पहुँच नहीं है** ताकि टोकन प्राप्त किए जा सकें।
|
||||
- `/webssh/host`: एक वेब-आधारित SSH क्लाइंट जो आपको उस कंटेनर के अंदर कनेक्ट करने की अनुमति देता है जहाँ ऐप चल रहा है।
|
||||
- इस वातावरण में **मेटाडेटा सेवा तक पहुँच है** ताकि असाइन किए गए प्रबंधित पहचान से टोकन प्राप्त किए जा सकें।
|
||||
- `/Env`: सिस्टम, ऐप सेटिंग्स, env वेरिएबल्स, कनेक्शन स्ट्रिंग्स और HTTP हेडर के बारे में जानकारी प्राप्त करें।
|
||||
- `/wwwroot/`: वेब ऐप का रूट डायरेक्टरी। आप यहाँ से सभी फ़ाइलें डाउनलोड कर सकते हैं।
|
||||
- `/webssh/host`: एक वेब-आधारित SSH क्लाइंट जो आपको उस कंटेनर के अंदर कनेक्ट करने की अनुमति देता है जहां ऐप चल रहा है।
|
||||
- इस वातावरण में **मेटाडेटा सेवा तक पहुँच है** ताकि असाइन किए गए प्रबंधित पहचानों से टोकन प्राप्त किए जा सकें।
|
||||
- `/Env`: सिस्टम, ऐप सेटिंग्स, env वेरिएबल, कनेक्शन स्ट्रिंग और HTTP हेडर के बारे में जानकारी प्राप्त करें।
|
||||
- `/wwwroot/`: वेब ऐप का रूट डायरेक्टरी। आप यहां से सभी फ़ाइलें डाउनलोड कर सकते हैं।
|
||||
|
||||
इसके अलावा, Kudu पहले [https://github.com/projectkudu/kudu](https://github.com/projectkudu/kudu) पर ओपनसोर्स था लेकिन प्रोजेक्ट को डिप्रिकेट कर दिया गया और Azure में वर्तमान Kudu के व्यवहार की तुलना पुराने के साथ करने पर यह देखा जा सकता है कि **कई चीजें पहले से ही बदल चुकी हैं**।
|
||||
इसके अलावा, Kudu पहले [https://github.com/projectkudu/kudu](https://github.com/projectkudu/kudu) पर ओपन-सोर्स था लेकिन प्रोजेक्ट को डिप्रिकेट कर दिया गया और Azure में वर्तमान Kudu के व्यवहार की तुलना करते समय यह देखना संभव है कि **कई चीजें पहले से ही बदल चुकी हैं**।
|
||||
|
||||
## Sources
|
||||
|
||||
App Services डिफ़ॉल्ट रूप से कोड को एक ज़िप फ़ाइल के रूप में अपलोड करने की अनुमति देते हैं, लेकिन यह एक तृतीय पक्ष सेवा से कनेक्ट करने और वहां से कोड प्राप्त करने की भी अनुमति देता है।
|
||||
App Services डिफ़ॉल्ट रूप से कोड को ज़िप फ़ाइल के रूप में अपलोड करने की अनुमति देते हैं, लेकिन यह एक तृतीय पक्ष सेवा से कनेक्ट करने और वहां से कोड प्राप्त करने की भी अनुमति देता है।
|
||||
|
||||
- वर्तमान में समर्थित तृतीय पक्ष स्रोत **Github** और **Bitbucket** हैं।
|
||||
- आप `az rest --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"` चलाकर प्रमाणीकरण टोकन प्राप्त कर सकते हैं।
|
||||
- Azure डिफ़ॉल्ट रूप से हर बार कोड अपडेट होने पर App Service पर कोड तैनात करने के लिए एक **Github Action** सेटअप करेगा।
|
||||
- यह वहाँ से कोड प्राप्त करने के लिए एक **दूरस्थ git रिपॉजिटरी** (उपयोगकर्ता नाम और पासवर्ड के साथ) को इंगित करना भी संभव है।
|
||||
- यह वहां से कोड प्राप्त करने के लिए एक **दूरस्थ git रिपॉजिटरी** (उपयोगकर्ता नाम और पासवर्ड के साथ) को इंगित करना भी संभव है।
|
||||
- आप `az webapp deployment source show --name <app-name> --resource-group <res-group>` या `az rest --method POST --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/config/metadata/list?api-version=2022-03-01" --resource "https://management.azure.com"` चलाकर दूरस्थ रिपॉजिटरी के लिए क्रेडेंशियल्स प्राप्त कर सकते हैं।
|
||||
- एक **Azure Repository** का उपयोग करना भी संभव है।
|
||||
- एक **स्थानीय git रिपॉजिटरी** को कॉन्फ़िगर करना भी संभव है।
|
||||
@@ -70,12 +70,12 @@ App Services डिफ़ॉल्ट रूप से कोड को एक
|
||||
|
||||
## Webjobs
|
||||
|
||||
Azure WebJobs **Azure App Service वातावरण में चलने वाले बैकग्राउंड कार्य** हैं। वे डेवलपर्स को अपने वेब एप्लिकेशनों के साथ स्क्रिप्ट या प्रोग्राम चलाने की अनुमति देते हैं, जिससे फ़ाइल प्रसंस्करण, डेटा हैंडलिंग, या अनुसूचित कार्यों जैसे असिंक्रोनस या समय-गहन संचालन को संभालना आसान हो जाता है।
|
||||
वेब जॉब के 2 प्रकार होते हैं:
|
||||
- **निरंतर**: यह अनिश्चितकाल तक एक लूप में चलता है और इसे तुरंत बनाया जाने पर ट्रिगर किया जाता है। यह उन कार्यों के लिए आदर्श है जिन्हें निरंतर प्रसंस्करण की आवश्यकता होती है। हालाँकि, यदि ऐप चलना बंद कर देता है क्योंकि हमेशा चालू अक्षम है और इसे पिछले 20 मिनट में कोई अनुरोध नहीं मिला है, तो वेब जॉब भी रुक जाएगा।
|
||||
- **ट्रिगर किया गया**: यह मांग पर या एक शेड्यूल के आधार पर चलता है। यह आवधिक कार्यों, जैसे बैच डेटा अपडेट या रखरखाव दिनचर्या के लिए सबसे उपयुक्त है।
|
||||
Azure WebJobs **Azure App Service वातावरण में चलने वाले बैकग्राउंड कार्य** हैं। वे डेवलपर्स को अपने वेब एप्लिकेशनों के साथ स्क्रिप्ट या प्रोग्राम चलाने की अनुमति देते हैं, जिससे फ़ाइल प्रसंस्करण, डेटा हैंडलिंग या अनुसूचित कार्यों जैसे असिंक्रोनस या समय-गहन संचालन को संभालना आसान हो जाता है।
|
||||
वेब जॉब के 2 प्रकार हैं:
|
||||
- **निरंतर**: यह अनंत काल तक एक लूप में चलता है और इसे तुरंत बनाया जाने पर ट्रिगर किया जाता है। यह उन कार्यों के लिए आदर्श है जिन्हें निरंतर प्रसंस्करण की आवश्यकता होती है। हालाँकि, यदि ऐप चलना बंद कर देता है क्योंकि हमेशा चालू अक्षम है और इसे पिछले 20 मिनट में कोई अनुरोध नहीं मिला है, तो वेब जॉब भी रुक जाएगा।
|
||||
- **ट्रिगर किया गया**: यह मांग पर या एक शेड्यूल के आधार पर चलता है। यह आवधिक कार्यों, जैसे बैच डेटा अपडेट या रखरखाव दिनचर्याओं के लिए सबसे उपयुक्त है।
|
||||
|
||||
Webjobs हमलावरों के दृष्टिकोण से बहुत दिलचस्प होते हैं क्योंकि उनका उपयोग **पर्यावरण में कोड निष्पादित करने** और **संलग्न प्रबंधित पहचान** के लिए विशेषाधिकार बढ़ाने के लिए किया जा सकता है।
|
||||
Webjobs हमलावरों के दृष्टिकोण से बहुत दिलचस्प हैं क्योंकि उनका उपयोग **पर्यावरण में कोड निष्पादित करने** और **संलग्न प्रबंधित पहचानों** के लिए विशेषाधिकार बढ़ाने के लिए किया जा सकता है।
|
||||
|
||||
इसके अलावा, Webjobs द्वारा उत्पन्न **लॉग** की जांच करना हमेशा दिलचस्प होता है क्योंकि वे **संवेदनशील जानकारी** रख सकते हैं।
|
||||
|
||||
@@ -83,13 +83,13 @@ Webjobs हमलावरों के दृष्टिकोण से ब
|
||||
|
||||
Azure App Service Slots का उपयोग **एक ही App Service पर एप्लिकेशन के विभिन्न संस्करणों को तैनात करने** के लिए किया जाता है। यह डेवलपर्स को उत्पादन वातावरण में तैनात करने से पहले एक अलग वातावरण में नई सुविधाओं या परिवर्तनों का परीक्षण करने की अनुमति देता है।
|
||||
|
||||
इसके अलावा, एक विशिष्ट स्लॉट के लिए **ट्रैफ़िक का प्रतिशत** रूट करना संभव है, जो A/B परीक्षण के लिए उपयोगी है, और **बैकडोर उद्देश्यों** के लिए।
|
||||
इसके अलावा, एक विशिष्ट स्लॉट के लिए **ट्रैफ़िक का एक प्रतिशत** रूट करना संभव है, जो A/B परीक्षण और **बैकडोर उद्देश्यों** के लिए उपयोगी है।
|
||||
|
||||
## Azure Function Apps
|
||||
|
||||
बुनियादी रूप से **Azure Function apps Azure App Service का एक उपसमुच्चय हैं** वेब कंसोल में और यदि आप वेब कंसोल पर जाते हैं और सभी ऐप सेवाओं की सूची बनाते हैं या az cli में `az webapp list` निष्पादित करते हैं, तो आप **वहाँ सूचीबद्ध फ़ंक्शन ऐप्स को भी देख पाएंगे**।
|
||||
बुनियादी रूप से **Azure Function ऐप्स Azure App Service का एक उपसमुच्चय हैं** वेब कंसोल में और यदि आप वेब कंसोल पर जाते हैं और सभी ऐप सेवाओं की सूची बनाते हैं या az cli में `az webapp list` निष्पादित करते हैं, तो आप **वहां सूचीबद्ध फ़ंक्शन ऐप्स को भी देख पाएंगे**।
|
||||
|
||||
इसलिए, दोनों सेवाओं में वास्तव में ज्यादातर **एक समान कॉन्फ़िगरेशन, सुविधाएँ और विकल्प होते हैं az cli में**, हालाँकि वे उन्हें थोड़ा अलग तरीके से कॉन्फ़िगर कर सकते हैं (जैसे appsettings के डिफ़ॉल्ट मान या फ़ंक्शन ऐप्स में स्टोरेज अकाउंट का उपयोग)।
|
||||
इसलिए, दोनों सेवाओं में वास्तव में ज्यादातर **एक समान कॉन्फ़िगरेशन, सुविधाएँ और विकल्प az cli में हैं**, हालाँकि वे उन्हें थोड़ा अलग तरीके से कॉन्फ़िगर कर सकते हैं (जैसे appsettings के डिफ़ॉल्ट मान या फ़ंक्शन ऐप्स में स्टोरेज खाते का उपयोग)।
|
||||
|
||||
## Enumeration
|
||||
|
||||
@@ -270,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
|
||||
@@ -303,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)
|
||||
|
||||
@@ -1,58 +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)
|
||||
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>Support HackTricks</summary>
|
||||
<summary>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.
|
||||
* [**सदस्यता योजनाओं**](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 %}
|
||||
|
||||
## 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 खाता एक्सटेंशन शामिल हैं।
|
||||
**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 वातावरण के आगे अनुकूलन की अनुमति देती है, जिससे उपयोगकर्ता अपनी सेटअप को अपनी विशिष्ट आवश्यकताओं के अनुसार अनुकूलित कर सकते हैं।
|
||||
**पर्यावरण**: Azure Cloud Shell एक सुरक्षित वातावरण प्रदान करता है जो Azure Linux पर चलता है, जो Microsoft का अपना Linux वितरण है जिसे क्लाउड अवसंरचना के लिए डिज़ाइन किया गया है। Azure Linux रिपॉजिटरी में शामिल सभी पैकेज Microsoft द्वारा आंतरिक रूप से संकलित किए जाते हैं ताकि आपूर्ति श्रृंखला हमलों से सुरक्षा की जा सके।
|
||||
**पूर्व-स्थापित उपकरण**: Cloud Shell में Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git, और vim, nano, और emacs जैसे टेक्स्ट संपादकों जैसे पूर्व-स्थापित उपकरणों का एक व्यापक सेट शामिल है। ये उपकरण उपयोग के लिए तैयार हैं। स्थापित पैकेज और मॉड्यूल की सूची के लिए आप "Get-Module -ListAvailable", "tdnf list" और "pip3 list" का उपयोग कर सकते हैं।
|
||||
**$HOME स्थिरता**: जब आप पहली बार Azure Cloud Shell शुरू करते हैं, तो आप इसे एक जुड़े स्टोरेज खाते के साथ या बिना उपयोग कर सकते हैं। स्टोरेज को न जोड़ने का विकल्प एक अस्थायी सत्र बनाता है जहां सत्र समाप्त होने पर फ़ाइलें हटा दी जाती हैं। सत्रों के बीच फ़ाइलों को बनाए रखने के लिए, एक स्टोरेज खाता माउंट करें, जो स्वचालित रूप से **$HOME\clouddrive** के रूप में जुड़ता है, आपके **$HOME** निर्देशिका को Azure फ़ाइल शेयर में **.img** फ़ाइल के रूप में सहेजा जाता है। हालाँकि, $HOME के बाहर फ़ाइलें और मशीन की स्थितियाँ बनाए नहीं रखी जाती हैं। SSH कुंजियों जैसे रहस्यों को सुरक्षित रूप से संग्रहीत करने के लिए, Azure Key Vault का उपयोग करें।
|
||||
**Azure ड्राइव (Azure:)**: Azure Cloud Shell में PowerShell Azure ड्राइव (Azure:) शामिल है, जो फ़ाइल सिस्टम-जैसे कमांड का उपयोग करके Compute, Network, और Storage जैसे Azure संसाधनों के आसान नेविगेशन की अनुमति देता है। Azure ड्राइव पर स्विच करने के लिए cd Azure: का उपयोग करें और अपने होम निर्देशिका पर लौटने के लिए cd ~ का उपयोग करें। आप किसी भी ड्राइव से संसाधनों का प्रबंधन करने के लिए Azure PowerShell cmdlets का उपयोग कर सकते हैं।
|
||||
**कस्टम टूल स्थापना**: उपयोगकर्ता जो 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)
|
||||
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>Support HackTricks</summary>
|
||||
<summary>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.
|
||||
* [**सदस्यता योजनाओं**](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 %}
|
||||
|
||||
@@ -19,9 +19,9 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).p
|
||||
|
||||
**Azure Cosmos DB** एक पूरी तरह से **प्रबंधित NoSQL, relational, और vector database** है जो एकल-अंक मिलीसेकंड प्रतिक्रिया समय, स्वचालित स्केलेबिलिटी, और उद्यम-ग्रेड सुरक्षा के साथ SLA-समर्थित उपलब्धता प्रदान करता है। यह टर्नकी मल्टी-क्षेत्र डेटा वितरण, लोकप्रिय भाषाओं के लिए ओपन-सोर्स APIs, SDKs, और एकीकृत वेक्टर समर्थन और निर्बाध Azure AI एकीकरण जैसी AI डेटाबेस सुविधाओं के माध्यम से तेज ऐप विकास को सक्षम बनाता है।
|
||||
|
||||
Azure Cosmos DB वास्तविक दुनिया के डेटा को दस्तावेज़ों, संबंधी, कुंजी-मूल्य, ग्राफ, और कॉलम-परिवार डेटा मॉडल का उपयोग करके मॉडल करने के लिए कई डेटाबेस APIs प्रदान करता है, ये APIs NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin और Table हैं।
|
||||
Azure Cosmos DB वास्तविक दुनिया के डेटा को दस्तावेज़ों, relational, key-value, graph, और column-family डेटा मॉडल का उपयोग करके मॉडल करने के लिए कई डेटाबेस 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" विभाजन कुंजी के रूप में हो सकता है।
|
||||
|
||||
#### एन्यूमरेशन
|
||||
|
||||
@@ -173,7 +173,7 @@ print(item)
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
एक और तरीका कनेक्शन स्थापित करने का है **DefaultAzureCredential()** का उपयोग करना। बस उस खाते के साथ लॉगिन करना है (az login) जिसके पास अनुमतियाँ हैं और इसे निष्पादित करना है। इस मामले में एक भूमिका असाइनमेंट किया जाना चाहिए, आवश्यक अनुमतियाँ देने के लिए (देखें के लिए mor)
|
||||
एक और तरीका कनेक्शन स्थापित करने का है **DefaultAzureCredential()** का उपयोग करना। बस उस खाते से लॉगिन करना है (az login) जिसके पास अनुमतियाँ हैं और इसे निष्पादित करना है। इस मामले में एक भूमिका असाइनमेंट किया जाना चाहिए, आवश्यक अनुमतियाँ देने के लिए (अधिक जानकारी के लिए देखें)
|
||||
|
||||
{% 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 में डेटा संग्रहण की मूल इकाई संग्रह है, जो दस्तावेज़ों को रखती है और कुशल क्वेरीिंग और लचीले स्कीमा डिज़ाइन के लिए डिज़ाइन की गई है। संग्रह लचीले ढंग से स्केलेबल होते हैं और वितरित सेटअप में कई नोड्स के बीच उच्च-थ्रूपुट संचालन का समर्थन कर सकते हैं।
|
||||
|
||||
#### गणना
|
||||
|
||||
@@ -359,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 सबमिट करें।**
|
||||
|
||||
|
||||
@@ -4,90 +4,90 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
**Azure Function Apps** एक **सर्वरलेस कंप्यूट सेवा** हैं जो आपको **फंक्शंस** नामक छोटे कोड के टुकड़े चलाने की अनुमति देती हैं, बिना अंतर्निहित बुनियादी ढांचे का प्रबंधन किए। इन्हें विभिन्न ट्रिगर्स के जवाब में कोड निष्पादित करने के लिए डिज़ाइन किया गया है, जैसे कि **HTTP अनुरोध, टाइमर, या अन्य Azure सेवाओं** से घटनाएँ जैसे Blob Storage या Event Hubs। Function Apps कई प्रोग्रामिंग भाषाओं का समर्थन करते हैं, जिसमें C#, Python, JavaScript, और Java शामिल हैं, जिससे ये **इवेंट-ड्रिवन एप्लिकेशन**, वर्कफ़्लो को स्वचालित करने, या सेवाओं को एकीकृत करने के लिए बहुपरकारी बनते हैं। ये लागत-कुशल हैं, क्योंकि आप आमतौर पर केवल उस कंप्यूट समय के लिए भुगतान करते हैं जब आपका कोड चलता है।
|
||||
**Azure Function Apps** एक **serverless compute service** हैं जो आपको छोटे कोड के टुकड़े, जिन्हें **functions** कहा जाता है, को बिना अंतर्निहित बुनियादी ढांचे का प्रबंधन किए चलाने की अनुमति देती हैं। इन्हें विभिन्न ट्रिगर्स के जवाब में कोड निष्पादित करने के लिए डिज़ाइन किया गया है, जैसे कि **HTTP अनुरोध, टाइमर, या अन्य Azure सेवाओं** से घटनाएँ जैसे Blob Storage या Event Hubs। Function Apps कई प्रोग्रामिंग भाषाओं का समर्थन करते हैं, जिसमें C#, Python, JavaScript, और Java शामिल हैं, जिससे ये **event-driven applications**, वर्कफ़्लो को स्वचालित करने, या सेवाओं को एकीकृत करने के लिए बहुपरकारी बनते हैं। ये लागत-कुशल हैं, क्योंकि आप आमतौर पर केवल उस समय के लिए भुगतान करते हैं जब आपका कोड चलता है।
|
||||
|
||||
> [!NOTE]
|
||||
> ध्यान दें कि **Functions App Services का एक उपसमुच्चय हैं**, इसलिए, यहां चर्चा की गई कई सुविधाएँ Azure Apps (`webapp` in cli) के रूप में बनाए गए अनुप्रयोगों द्वारा भी उपयोग की जाएंगी।
|
||||
|
||||
### Different Plans
|
||||
|
||||
- **Flex Consumption Plan**: **डायनामिक, इवेंट-ड्रिवन स्केलिंग** के साथ पे-एज़-यू-गो मूल्य निर्धारण प्रदान करता है, मांग के आधार पर फ़ंक्शन उदाहरणों को जोड़ने या हटाने की अनुमति देता है। यह **वर्चुअल नेटवर्किंग** और **पूर्व-प्रावधानित उदाहरणों** का समर्थन करता है ताकि ठंडी शुरुआत को कम किया जा सके, जिससे यह **परिवर्तनीय कार्यभार** के लिए उपयुक्त है जिसे कंटेनर समर्थन की आवश्यकता नहीं है।
|
||||
- **Traditional Consumption Plan**: डिफ़ॉल्ट सर्वरलेस विकल्प, जहां आप **केवल तब कंप्यूट संसाधनों के लिए भुगतान करते हैं जब फ़ंक्शन चलते हैं**। यह आने वाली घटनाओं के आधार पर स्वचालित रूप से स्केल करता है और इसमें **ठंडी शुरुआत के अनुकूलन** शामिल हैं, लेकिन यह कंटेनर तैनाती का समर्थन नहीं करता। **अंतराल कार्यभार** के लिए आदर्श जो स्वचालित स्केलिंग की आवश्यकता होती है।
|
||||
- **Premium Plan**: **संगत प्रदर्शन** के लिए डिज़ाइन किया गया, जिसमें ठंडी शुरुआत को समाप्त करने के लिए **पूर्व-गर्म श्रमिक** होते हैं। यह **विस्तारित निष्पादन समय, वर्चुअल नेटवर्किंग** प्रदान करता है, और **कस्टम लिनक्स छवियों** का समर्थन करता है, जिससे यह **मिशन-क्रिटिकल एप्लिकेशन** के लिए आदर्श है जिन्हें उच्च प्रदर्शन और उन्नत सुविधाओं की आवश्यकता होती है।
|
||||
- **Dedicated Plan**: समर्पित वर्चुअल मशीनों पर चलता है जिसमें **पूर्वानुमेय बिलिंग** होती है और मैनुअल या स्वचालित स्केलिंग का समर्थन करता है। यह एक ही योजना पर कई ऐप चलाने की अनुमति देता है, **कंप्यूट आइसोलेशन** प्रदान करता है, और **ऐप सेवा वातावरण** के माध्यम से **सुरक्षित नेटवर्क एक्सेस** सुनिश्चित करता है, जिससे यह **लंबे समय तक चलने वाले अनुप्रयोगों** के लिए आदर्श है जिन्हें लगातार संसाधन आवंटन की आवश्यकता होती है।
|
||||
- **Container Apps**: एक प्रबंधित वातावरण में **कंटेनराइज्ड फ़ंक्शन ऐप्स** को तैनात करने की अनुमति देता है, माइक्रोसर्विसेज और APIs के साथ। यह कस्टम पुस्तकालयों, विरासती ऐप माइग्रेशन, और **GPU प्रोसेसिंग** का समर्थन करता है, जिससे Kubernetes क्लस्टर प्रबंधन समाप्त हो जाता है। **इवेंट-ड्रिवन, स्केलेबल कंटेनराइज्ड एप्लिकेशन** के लिए आदर्श।
|
||||
- **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** के लिए आदर्श।
|
||||
|
||||
### **Storage Buckets**
|
||||
|
||||
जब एक नया फ़ंक्शन ऐप बनाया जाता है जो कंटेनराइज नहीं होता (लेकिन चलाने के लिए कोड देता है), तो **कोड और अन्य फ़ंक्शन से संबंधित डेटा एक स्टोरेज खाते में संग्रहीत किया जाएगा**। डिफ़ॉल्ट रूप से, वेब कंसोल प्रत्येक फ़ंक्शन के लिए कोड संग्रहीत करने के लिए एक नया बनाएगा।
|
||||
जब एक नया Function App बनाया जाता है जो कंटेनर नहीं है (लेकिन चलाने के लिए कोड देता है), तो **कोड और अन्य Function से संबंधित डेटा एक Storage account में संग्रहीत किया जाएगा**। डिफ़ॉल्ट रूप से, वेब कंसोल प्रत्येक फ़ंक्शन के लिए कोड संग्रहीत करने के लिए एक नया बनाएगा।
|
||||
|
||||
इसके अलावा, बकेट के अंदर कोड को संशोधित करने पर (जिस विभिन्न प्रारूपों में इसे संग्रहीत किया जा सकता है), **ऐप का कोड नए कोड में संशोधित किया जाएगा और अगली बार फ़ंक्शन को कॉल करने पर निष्पादित किया जाएगा**।
|
||||
इसके अलावा, बकेट के अंदर कोड को संशोधित करने पर (जिस विभिन्न प्रारूपों में इसे संग्रहीत किया जा सकता है), **ऐप का कोड नए कोड में संशोधित किया जाएगा और अगली बार जब Function को कॉल किया जाएगा तो इसे निष्पादित किया जाएगा**।
|
||||
|
||||
> [!CAUTION]
|
||||
> यह हमलावरों के दृष्टिकोण से बहुत दिलचस्प है क्योंकि **इस बकेट पर लिखने की पहुंच** एक हमलावर को **कोड से समझौता करने और फ़ंक्शन ऐप के अंदर प्रबंधित पहचान को बढ़ाने** की अनुमति देगी।
|
||||
> यह हमलावरों के दृष्टिकोण से बहुत दिलचस्प है क्योंकि **इस बकेट पर लिखने की पहुंच** एक हमलावर को **कोड से समझौता करने और Function App के अंदर प्रबंधित पहचान को बढ़ाने** की अनुमति देगी।
|
||||
>
|
||||
> इस पर अधिक जानकारी **प्रिविलेज एस्कलेशन सेक्शन** में है।
|
||||
> इस पर अधिक जानकारी **privilege escalation section** में है।
|
||||
|
||||
यह भी संभव है कि **मास्टर और फ़ंक्शंस कुंजी** स्टोरेज खाते में **`azure-webjobs-secrets`** कंटेनर में **`<app-name>`** फ़ोल्डर के अंदर JSON फ़ाइलों में संग्रहीत हों।
|
||||
यह भी संभव है कि **master और functions keys** को स्टोरेज अकाउंट में **`azure-webjobs-secrets`** कंटेनर में **`<app-name>`** फ़ोल्डर के अंदर JSON फ़ाइलों में संग्रहीत किया गया हो।
|
||||
|
||||
ध्यान दें कि फ़ंक्शंस को एक दूरस्थ स्थान पर कोड संग्रहीत करने की अनुमति भी है, बस इसके लिए URL निर्दिष्ट करके।
|
||||
ध्यान दें कि Functions को एक दूरस्थ स्थान पर कोड संग्रहीत करने की अनुमति भी है, बस इसके लिए URL निर्दिष्ट करके।
|
||||
|
||||
### Networking
|
||||
|
||||
HTTP ट्रिगर का उपयोग करते समय:
|
||||
|
||||
- यह संभव है कि **इंटरनेट से फ़ंक्शन तक पहुंच** प्रदान की जाए बिना किसी प्रमाणीकरण की आवश्यकता के या IAM आधारित पहुंच प्रदान की जाए। हालांकि, इस पहुंच को प्रतिबंधित करना भी संभव है।
|
||||
- यह भी संभव है कि **एक आंतरिक नेटवर्क (VPC)** से फ़ंक्शन ऐप को **पहुंच प्रदान करें या प्रतिबंधित करें**।
|
||||
- यह संभव है कि **इंटरनेट से एक फ़ंक्शन को सभी को पहुंच प्रदान करें** बिना किसी प्रमाणीकरण की आवश्यकता के या IAM आधारित पहुंच प्रदान करें। हालांकि, इस पहुंच को प्रतिबंधित करना भी संभव है।
|
||||
- यह भी संभव है कि **एक आंतरिक नेटवर्क (VPC)** से एक Function App को **पहुंच प्रदान करें या प्रतिबंधित करें**।
|
||||
|
||||
> [!CAUTION]
|
||||
> यह हमलावरों के दृष्टिकोण से बहुत दिलचस्प है क्योंकि यह संभव है कि **इंटरनेट पर उजागर एक कमजोर फ़ंक्शन से आंतरिक नेटवर्क पर पिवट किया जा सके**।
|
||||
> यह हमलावरों के दृष्टिकोण से बहुत दिलचस्प है क्योंकि यह संभव है कि **एक कमजोर Function से आंतरिक नेटवर्क पर पिवट करना**।
|
||||
|
||||
### **Function App Settings & Environment Variables**
|
||||
|
||||
यह ऐप के अंदर पर्यावरण चर कॉन्फ़िगर करना संभव है, जिसमें संवेदनशील जानकारी हो सकती है। इसके अलावा, डिफ़ॉल्ट रूप से env चर **`AzureWebJobsStorage`** और **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (अन्य के बीच) बनाए जाते हैं। ये विशेष रूप से दिलचस्प हैं क्योंकि वे **ऐप्लिकेशन के डेटा को नियंत्रित करने के लिए स्टोरेज खाते की कुंजी** को पूर्ण अनुमतियों के साथ शामिल करते हैं। इन सेटिंग्स की आवश्यकता भी स्टोरेज खाते से कोड निष्पादित करने के लिए होती है।
|
||||
यह एक ऐप के अंदर पर्यावरण चर को कॉन्फ़िगर करना संभव है, जिसमें संवेदनशील जानकारी हो सकती है। इसके अलावा, डिफ़ॉल्ट रूप से env चर **`AzureWebJobsStorage`** और **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (अन्य के बीच) बनाए जाते हैं। ये विशेष रूप से दिलचस्प हैं क्योंकि वे **ऐप्लिकेशन के डेटा को नियंत्रित करने के लिए स्टोरेज अकाउंट की कुंजी को पूर्ण अनुमतियों के साथ** शामिल करते हैं। इन सेटिंग्स की आवश्यकता भी होती है ताकि स्टोरेज अकाउंट से कोड निष्पादित किया जा सके।
|
||||
|
||||
ये env चर या कॉन्फ़िगरेशन पैरामीटर यह भी नियंत्रित करते हैं कि फ़ंक्शन कोड को कैसे निष्पादित करता है, उदाहरण के लिए यदि **`WEBSITE_RUN_FROM_PACKAGE`** मौजूद है, तो यह उस URL को इंगित करेगा जहां ऐप्लिकेशन का कोड स्थित है।
|
||||
ये env चर या कॉन्फ़िगरेशन पैरामीटर यह भी नियंत्रित करते हैं कि Function कोड को कैसे निष्पादित करता है, उदाहरण के लिए यदि **`WEBSITE_RUN_FROM_PACKAGE`** मौजूद है, तो यह उस URL को इंगित करेगा जहां ऐप्लिकेशन का कोड स्थित है।
|
||||
|
||||
### **Function Sandbox**
|
||||
|
||||
लिनक्स सैंडबॉक्स के अंदर स्रोत कोड **`/home/site/wwwroot`** में फ़ाइल **`function_app.py`** (यदि पायथन का उपयोग किया गया है) में स्थित है, कोड चलाने वाला उपयोगकर्ता **`app`** है (बिना sudo अनुमतियों के)।
|
||||
Linux सैंडबॉक्स के अंदर स्रोत कोड **`/home/site/wwwroot`** में **`function_app.py`** (यदि Python का उपयोग किया गया है) में स्थित है, कोड चलाने वाला उपयोगकर्ता **`app`** है (बिना sudo अनुमतियों के)।
|
||||
|
||||
एक **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`।
|
||||
एक **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`।
|
||||
|
||||
### **Managed Identities & Metadata**
|
||||
|
||||
जैसे कि [**VMs**](vms/index.html) में, फ़ंक्शंस के पास **Managed Identities** के 2 प्रकार हो सकते हैं: सिस्टम असाइन और यूजर असाइन।
|
||||
जैसे कि [**VMs**](vms/index.html) में, Functions के पास **Managed Identities** के 2 प्रकार हो सकते हैं: System assigned और User assigned।
|
||||
|
||||
**सिस्टम असाइन** वाला एक प्रबंधित पहचान होगी जिसे **केवल वही फ़ंक्शन** उपयोग कर सकेगा जिसे यह असाइन किया गया है, जबकि **यूजर असाइन** प्रबंधित पहचानें ऐसी प्रबंधित पहचान हैं जिन्हें **कोई अन्य Azure सेवा उपयोग कर सकेगी**।
|
||||
**system assigned** एक प्रबंधित पहचान होगी जिसे **केवल वही फ़ंक्शन** उपयोग कर सकेगा जिसे यह सौंपा गया है, जबकि **user assigned** प्रबंधित पहचानें हैं जिन्हें **कोई अन्य Azure सेवा उपयोग कर सकेगी**।
|
||||
|
||||
> [!NOTE]
|
||||
> जैसे कि [**VMs**](vms/index.html) में, फ़ंक्शंस के पास **1 सिस्टम असाइन** प्रबंधित पहचान और **कई यूजर असाइन** प्रबंधित पहचान हो सकती हैं, इसलिए यदि आप फ़ंक्शन से समझौता करते हैं तो सभी को खोजने का प्रयास करना हमेशा महत्वपूर्ण होता है क्योंकि आप केवल एक फ़ंक्शन से कई प्रबंधित पहचान को बढ़ा सकते हैं।
|
||||
> जैसे कि [**VMs**](vms/index.html) में, Functions के पास **1 system assigned** प्रबंधित पहचान और **कई user assigned** हो सकते हैं, इसलिए यदि आप फ़ंक्शन से समझौता करते हैं तो सभी को खोजने का प्रयास करना हमेशा महत्वपूर्ण होता है क्योंकि आप केवल एक Function से कई प्रबंधित पहचान को बढ़ा सकते हैं।
|
||||
>
|
||||
> यदि कोई सिस्टम प्रबंधित पहचान का उपयोग नहीं किया गया है लेकिन एक या अधिक यूजर प्रबंधित पहचानें फ़ंक्शन से जुड़ी हैं, तो डिफ़ॉल्ट रूप से आप कोई टोकन प्राप्त नहीं कर पाएंगे।
|
||||
> यदि कोई system managed identity का उपयोग नहीं किया जाता है लेकिन एक या अधिक user managed identities एक फ़ंक्शन से जुड़ी होती हैं, तो डिफ़ॉल्ट रूप से आप कोई टोकन प्राप्त नहीं कर पाएंगे।
|
||||
|
||||
आप [**PEASS स्क्रिप्ट्स**](https://github.com/peass-ng/PEASS-ng) का उपयोग करके मेटाडेटा एंडपॉइंट से डिफ़ॉल्ट प्रबंधित पहचान से टोकन प्राप्त कर सकते हैं। या आप उन्हें **हाथ से** प्राप्त कर सकते हैं जैसा कि समझाया गया है:
|
||||
आप [**PEASS scripts**](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 ट्रिगर चुना गया था, तो फ़ंक्शन को सक्रिय करने के लिए एक **एक्सेस कुंजी** का उपयोग करना आवश्यक हो सकता है।
|
||||
> ध्यान दें कि उपयोगकर्ताओं को फ़ंक्शंस को सक्रिय करने के लिए पहुंच देने के लिए कोई RBAC अनुमतियाँ नहीं हैं। **फ़ंक्शन सक्रियण उस ट्रिगर पर निर्भर करता है** जो इसे बनाया गया था और यदि एक HTTP ट्रिगर चुना गया था, तो इसे **एक्सेस की** का उपयोग करने की आवश्यकता हो सकती है।
|
||||
|
||||
एक फ़ंक्शन के अंदर एक एंडपॉइंट बनाते समय **HTTP ट्रिगर** का उपयोग करते हुए, यह संभव है कि फ़ंक्शन को सक्रिय करने के लिए आवश्यक **एक्सेस कुंजी प्राधिकरण स्तर** को निर्दिष्ट किया जाए। तीन विकल्प उपलब्ध हैं:
|
||||
एक फ़ंक्शन के अंदर एक एंडपॉइंट बनाते समय **HTTP ट्रिगर** का उपयोग करते समय, यह संभव है कि **फंक्शन को सक्रिय करने के लिए आवश्यक एक्सेस की प्राधिकरण स्तर** को निर्दिष्ट करें। तीन विकल्प उपलब्ध हैं:
|
||||
|
||||
- **ANONYMOUS**: **सभी** फ़ंक्शन को URL द्वारा एक्सेस कर सकते हैं।
|
||||
- **FUNCTION**: एंडपॉइंट केवल उन उपयोगकर्ताओं के लिए सुलभ है जो **फंक्शन, होस्ट या मास्टर कुंजी** का उपयोग कर रहे हैं।
|
||||
- **ADMIN**: एंडपॉइंट केवल उन उपयोगकर्ताओं के लिए सुलभ है जिनके पास **मास्टर कुंजी** है।
|
||||
- **ANONYMOUS**: **हर कोई** URL के माध्यम से फ़ंक्शन तक पहुंच सकता है।
|
||||
- **FUNCTION**: एंडपॉइंट केवल उन उपयोगकर्ताओं के लिए सुलभ है जो **फंक्शन, होस्ट या मास्टर की** का उपयोग कर रहे हैं।
|
||||
- **ADMIN**: एंडपॉइंट केवल उन उपयोगकर्ताओं के लिए सुलभ है जिनके पास **मास्टर की** है।
|
||||
|
||||
**कुंजी के प्रकार:**
|
||||
|
||||
- **Function Keys:** फ़ंक्शन कुंजी या तो डिफ़ॉल्ट या उपयोगकर्ता-परिभाषित हो सकती हैं और इन्हें विशेष रूप से **फ़ंक्शन ऐप के भीतर विशिष्ट फ़ंक्शन एंडपॉइंट्स** तक पहुंच प्रदान करने के लिए डिज़ाइन किया गया है जिससे एंडपॉइंट्स पर अधिक बारीक पहुंच मिलती है।
|
||||
- **Host Keys:** होस्ट कुंजी, जो डिफ़ॉल्ट या उपयोगकर्ता-परिभाषित भी हो सकती हैं, **FUNCTION एक्सेस स्तर** के साथ फ़ंक्शन ऐप के भीतर सभी फ़ंक्शन एंडपॉइंट्स तक पहुंच प्रदान करती हैं।
|
||||
- **Master Key:** मास्टर कुंजी (`_master`) एक प्रशासनिक कुंजी के रूप में कार्य करती है जो सभी फ़ंक्शन एंडपॉइंट्स (ADMIN एक्सेस स्तर सहित) तक पहुंच प्रदान करती है। यह **कुंजी रद्द नहीं की जा सकती।**
|
||||
- **System Keys:** सिस्टम कुंजी **विशिष्ट एक्सटेंशन द्वारा प्रबंधित** होती हैं और आंतरिक घटकों द्वारा उपयोग किए जाने वाले वेबहुक एंडपॉइंट्स तक पहुंच के लिए आवश्यक होती हैं। उदाहरणों में इवेंट ग्रिड ट्रिगर और ड्यूरेबल फ़ंक्शंस शामिल हैं, जो अपने संबंधित APIs के साथ सुरक्षित रूप से बातचीत करने के लिए सिस्टम कुंजी का उपयोग करते हैं।
|
||||
- **Function Keys:** फ़ंक्शन कुंजियाँ या तो डिफ़ॉल्ट या उपयोगकर्ता-परिभाषित हो सकती हैं और इन्हें विशेष रूप से **Function App के भीतर विशिष्ट फ़ंक्शन एंडपॉइंट्स** तक पहुंच प्रदान करने के लिए डिज़ाइन किया गया है जिससे एंडपॉइंट्स पर अधिक बारीक पहुंच मिलती है।
|
||||
- **Host Keys:** होस्ट कुंजियाँ, जो डिफ़ॉल्ट या उपयोगकर्ता-परिभाषित भी हो सकती हैं, **Function App के भीतर सभी फ़ंक्शन एंडपॉइंट्स तक FUNCTION एक्सेस स्तर** के साथ पहुंच प्रदान करती हैं।
|
||||
- **Master Key:** मास्टर की (`_master`) एक प्रशासनिक कुंजी के रूप में कार्य करती है जो सभी फ़ंक्शन एंडपॉइंट्स (ADMIN एक्सेस स्तर सहित) तक पहुंच प्रदान करती है। यह **कुंजी रद्द नहीं की जा सकती।**
|
||||
- **System Keys:** सिस्टम कुंजियाँ **विशिष्ट एक्सटेंशन द्वारा प्रबंधित** होती हैं और आंतरिक घटकों द्वारा उपयोग किए जाने वाले वेबहुक एंडपॉइंट्स तक पहुंच के लिए आवश्यक होती हैं। उदाहरणों में इवेंट ग्रिड ट्रिगर और ड्यूरेबल फ़ंक्शंस शामिल हैं, जो अपने संबंधित APIs के साथ सुरक्षित रूप से बातचीत करने के लिए सिस्टम कुंजियों का उपयोग करते हैं।
|
||||
|
||||
> [!TIP]
|
||||
> कुंजी का उपयोग करके फ़ंक्शन API एंडपॉइंट तक पहुंचने का उदाहरण:
|
||||
@@ -96,7 +96,7 @@ HTTP ट्रिगर का उपयोग करते समय:
|
||||
|
||||
### Basic Authentication
|
||||
|
||||
जैसे कि ऐप सेवाओं में, फ़ंक्शंस भी **SCM** और **FTP** से कनेक्ट करने के लिए बुनियादी प्रमाणीकरण का समर्थन करते हैं ताकि कोड को **Azure द्वारा प्रदान किए गए URL में उपयोगकर्ता नाम और पासवर्ड** का उपयोग करके तैनात किया जा सके। इसके बारे में अधिक जानकारी:
|
||||
जैसे कि App Services में, Functions भी **SCM** और **FTP** से कनेक्ट करने के लिए बुनियादी प्रमाणीकरण का समर्थन करते हैं ताकि कोड को **Azure द्वारा प्रदान किए गए URL में उपयोगकर्ता नाम और पासवर्ड** का उपयोग करके तैनात किया जा सके। इसके बारे में अधिक जानकारी:
|
||||
|
||||
{{#ref}}
|
||||
az-app-services.md
|
||||
@@ -104,7 +104,7 @@ az-app-services.md
|
||||
|
||||
### Github Based Deployments
|
||||
|
||||
जब एक फ़ंक्शन एक Github रिपॉजिटरी से उत्पन्न होता है, तो Azure वेब कंसोल **विशिष्ट रिपॉजिटरी में एक Github वर्कफ़्लो स्वचालित रूप से बनाने** की अनुमति देता है ताकि जब भी इस रिपॉजिटरी को अपडेट किया जाए, फ़ंक्शन का कोड अपडेट हो जाए। वास्तव में, एक पायथन फ़ंक्शन के लिए Github Action yaml इस तरह दिखता है:
|
||||
जब एक फ़ंक्शन एक Github रिपॉजिटरी से उत्पन्न होता है, तो Azure वेब कंसोल **एक विशिष्ट रिपॉजिटरी में स्वचालित रूप से एक Github वर्कफ़्लो बनाने** की अनुमति देता है ताकि जब भी इस रिपॉजिटरी को अपडेट किया जाए, फ़ंक्शन का कोड अपडेट हो जाए। वास्तव में, एक Python फ़ंक्शन के लिए Github Action yaml इस तरह दिखता है:
|
||||
|
||||
<details>
|
||||
|
||||
@@ -199,7 +199,7 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
|
||||
|
||||
### Container Based Deployments
|
||||
|
||||
सभी योजनाएँ कंटेनर को तैनात करने की अनुमति नहीं देती हैं, लेकिन जिनमें अनुमति है, उनके लिए कॉन्फ़िगरेशन में कंटेनर का URL होगा। API में **`linuxFxVersion`** सेटिंग कुछ इस तरह होगी: `DOCKER|mcr.microsoft.com/...`, जबकि वेब कंसोल में, कॉन्फ़िगरेशन **image settings** दिखाएगा।
|
||||
सभी योजनाएँ कंटेनर को तैनात करने की अनुमति नहीं देती हैं, लेकिन जिनके लिए अनुमति है, उनके लिए कॉन्फ़िगरेशन में कंटेनर का URL होगा। API में **`linuxFxVersion`** सेटिंग कुछ इस तरह होगी: `DOCKER|mcr.microsoft.com/...`, जबकि वेब कंसोल में, कॉन्फ़िगरेशन **image settings** दिखाएगा।
|
||||
|
||||
इसके अलावा, **कोई स्रोत कोड स्टोरेज** खाते में संग्रहीत नहीं किया जाएगा जो फ़ंक्शन से संबंधित है क्योंकि इसकी आवश्यकता नहीं है।
|
||||
|
||||
|
||||
@@ -30,18 +30,18 @@ Logic Apps एक दृश्य डिज़ाइनर प्रदान
|
||||
# The URL belongs to a Logic App vulenrable to SSRF
|
||||
curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e974123adf0b98159966644/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_8_oqqsCXc0u2c7hNjtSZmT0uM4Xi3hktw6Uze0O34s' -d '{"url": "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"}' -H "Content-type: application/json" -v
|
||||
```
|
||||
### होस्टिंग विकल्प
|
||||
### Hosting options
|
||||
|
||||
कई होस्टिंग विकल्प हैं:
|
||||
There are several hosting options:
|
||||
|
||||
* **उपभोग**
|
||||
- **मल्टी-टेनेंट**: साझा कंप्यूट संसाधन प्रदान करता है, सार्वजनिक क्लाउड में कार्य करता है, और प्रति ऑपरेशन मूल्य निर्धारण मॉडल का पालन करता है। यह हल्के और लागत-कुशल कार्यभार के लिए आदर्श है।
|
||||
* **मानक**
|
||||
- **वर्कफ़्लो सेवा योजना**: नेटवर्किंग के लिए VNET एकीकरण के साथ समर्पित कंप्यूट संसाधन और प्रति वर्कफ़्लो सेवा योजना उदाहरण के लिए शुल्क। यह अधिक मांग वाले कार्यभार के लिए उपयुक्त है जो अधिक नियंत्रण की आवश्यकता होती है।
|
||||
- **ऐप सेवा वातावरण V3** समर्पित कंप्यूट संसाधन पूर्ण अलगाव और स्केलेबिलिटी के साथ। यह नेटवर्किंग के लिए VNET के साथ भी एकीकृत होता है और वातावरण के भीतर ऐप सेवा उदाहरणों के आधार पर मूल्य निर्धारण मॉडल का उपयोग करता है। यह उच्च अलगाव की आवश्यकता वाले उद्यम-स्तरीय अनुप्रयोगों के लिए आदर्श है।
|
||||
- **हाइब्रिड** स्थानीय प्रसंस्करण और मल्टी-क्लाउड समर्थन के लिए डिज़ाइन किया गया। यह स्थानीय नेटवर्क पहुंच के साथ ग्राहक-प्रबंधित कंप्यूट संसाधनों की अनुमति देता है और Kubernetes इवेंट-ड्रिवेन ऑटोस्केलिंग (KEDA) का उपयोग करता है।
|
||||
* **Consumption**
|
||||
- **Multi-tenant**: साझा कंप्यूट संसाधनों को प्रदान करता है, सार्वजनिक क्लाउड में संचालित होता है, और प्रति ऑपरेशन मूल्य निर्धारण मॉडल का पालन करता है। यह हल्के और लागत-कुशल कार्यभार के लिए आदर्श है।
|
||||
* **Standard**
|
||||
- **Workflow Service Plan**: नेटवर्किंग के लिए VNET एकीकरण के साथ समर्पित कंप्यूट संसाधन और प्रति वर्कफ़्लो सेवा योजना उदाहरण के लिए शुल्क। यह अधिक मांग वाले कार्यभार के लिए उपयुक्त है जो अधिक नियंत्रण की आवश्यकता होती है।
|
||||
- **App Service Environment V3** समर्पित कंप्यूट संसाधन पूर्ण अलगाव और स्केलेबिलिटी के साथ। यह नेटवर्किंग के लिए VNET के साथ भी एकीकृत होता है और वातावरण के भीतर App Service उदाहरणों के आधार पर मूल्य निर्धारण मॉडल का उपयोग करता है। यह उच्च अलगाव की आवश्यकता वाले उद्यम-स्तरीय अनुप्रयोगों के लिए आदर्श है।
|
||||
- **Hybrid** स्थानीय प्रसंस्करण और मल्टी-क्लाउड समर्थन के लिए डिज़ाइन किया गया। यह स्थानीय नेटवर्क एक्सेस के साथ ग्राहक-प्रबंधित कंप्यूट संसाधनों की अनुमति देता है और Kubernetes इवेंट-ड्रिवेन ऑटोस्केलिंग (KEDA) का उपयोग करता है।
|
||||
|
||||
### गणना
|
||||
### Enumeration
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
@@ -148,11 +148,11 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
|
||||
|
||||
* Schemas: अपने एकीकरण खाते में संदेशों को मान्य और संसाधित करने के लिए XML स्कीमा प्रबंधित करें।
|
||||
* Maps: अपने एकीकरण कार्यप्रवाह के भीतर डेटा प्रारूपों को परिवर्तित करने के लिए XSLT-आधारित रूपांतरण कॉन्फ़िगर करें।
|
||||
* Assemblies: लॉजिक और डेटा प्रसंस्करण को सरल बनाने के लिए एकीकरण खाता असेंबली प्रबंधित करें।
|
||||
* Assemblies: लॉजिक और डेटा प्रोसेसिंग को सरल बनाने के लिए एकीकरण खाता असेंबली प्रबंधित करें।
|
||||
* Certificates: संदेशों को एन्क्रिप्ट और साइन करने के लिए प्रमाणपत्रों को संभालें, सुरक्षित संचार सुनिश्चित करें।
|
||||
* Partners: B2B लेनदेन के लिए व्यापार भागीदार की जानकारी प्रबंधित करें, निर्बाध एकीकरण सक्षम करें।
|
||||
* Agreements: व्यापार भागीदारों के साथ डेटा का आदान-प्रदान करने के लिए नियम और सेटिंग्स कॉन्फ़िगर करें (जैसे, EDI, AS2)।
|
||||
* Batch Configurations: संदेशों को कुशलतापूर्वक समूहित और संसाधित करने के लिए बैच प्रसंस्करण कॉन्फ़िगरेशन प्रबंधित करें।
|
||||
* Batch Configurations: संदेशों को कुशलतापूर्वक समूहित और संसाधित करने के लिए बैच प्रोसेसिंग कॉन्फ़िगरेशन प्रबंधित करें।
|
||||
* RosettaNet PIP: B2B संचार को मानकीकरण के लिए RosettaNet Partner Interface Processes (PIPs) कॉन्फ़िगर करें।
|
||||
|
||||
#### Enumeration
|
||||
@@ -283,7 +283,7 @@ GCP हैकिंग सीखें और अभ्यास करें: <
|
||||
|
||||
* [**सदस्यता योजनाएँ**](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 सबमिट करें।
|
||||
* हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
@@ -4,17 +4,17 @@
|
||||
|
||||
## Service Bus
|
||||
|
||||
Azure Service Bus एक क्लाउड-आधारित **मैसेजिंग सेवा** है जिसे विभिन्न भागों के बीच विश्वसनीय **संचार सक्षम करने के लिए डिज़ाइन किया गया है या अलग-अलग अनुप्रयोगों** के बीच। यह एक सुरक्षित मध्यस्थ के रूप में कार्य करता है, यह सुनिश्चित करता है कि संदेश सुरक्षित रूप से वितरित किए जाएं, भले ही प्रेषक और प्राप्तकर्ता एक साथ काम न कर रहे हों। सिस्टम को अलग करके, यह अनुप्रयोगों को स्वतंत्र रूप से काम करने की अनुमति देता है जबकि डेटा या निर्देशों का आदान-प्रदान करते हुए। यह विशेष रूप से उन परिदृश्यों के लिए उपयोगी है जो कई श्रमिकों के बीच लोड संतुलन, विश्वसनीय संदेश वितरण, या जटिल समन्वय की आवश्यकता होती है, जैसे कार्यों को क्रम में संसाधित करना या सुरक्षित रूप से पहुंच प्रबंधित करना।
|
||||
Azure Service Bus एक क्लाउड-आधारित **मैसेजिंग सेवा** है जिसे विभिन्न भागों के बीच विश्वसनीय **संचार सक्षम करने के लिए डिज़ाइन किया गया है या अलग-अलग अनुप्रयोगों** के बीच। यह एक सुरक्षित मध्यस्थ के रूप में कार्य करता है, यह सुनिश्चित करता है कि संदेश सुरक्षित रूप से वितरित किए जाएं, भले ही प्रेषक और प्राप्तकर्ता एक साथ काम न कर रहे हों। सिस्टम को अलग करके, यह अनुप्रयोगों को स्वतंत्र रूप से काम करने की अनुमति देता है जबकि डेटा या निर्देशों का आदान-प्रदान करते हुए। यह विशेष रूप से उन परिदृश्यों के लिए उपयोगी है जो कई श्रमिकों के बीच लोड संतुलन, विश्वसनीय संदेश वितरण, या जटिल समन्वय की आवश्यकता होती है, जैसे कि कार्यों को क्रम में संसाधित करना या सुरक्षित रूप से पहुंच प्रबंधित करना।
|
||||
|
||||
### Key Concepts
|
||||
|
||||
1. **Queues:** इसका उद्देश्य संदेशों को तब तक संग्रहीत करना है जब तक प्राप्तकर्ता तैयार न हो।
|
||||
- संदेश क्रमबद्ध, टाइमस्टैम्प किए गए और स्थायी रूप से संग्रहीत होते हैं।
|
||||
- पुल मोड (ऑन-डिमांड पुनर्प्राप्ति) में वितरित किया जाता है।
|
||||
- खींचने के मोड में वितरित किया जाता है (आवश्यकता पर पुनर्प्राप्ति)।
|
||||
- बिंदु-से-बिंदु संचार का समर्थन करता है।
|
||||
2. **Topics:** प्रसारण के लिए प्रकाशित-सब्सक्राइब मैसेजिंग।
|
||||
- कई स्वतंत्र सब्सक्रिप्शन संदेशों की प्रतियां प्राप्त करते हैं।
|
||||
- सब्सक्रिप्शन में वितरण को नियंत्रित करने या मेटाडेटा जोड़ने के लिए नियम/फिल्टर हो सकते हैं।
|
||||
2. **Topics:** प्रसारण के लिए प्रकाशन-सदस्यता मैसेजिंग।
|
||||
- कई स्वतंत्र सदस्यताएँ संदेशों की प्रतियाँ प्राप्त करती हैं।
|
||||
- सदस्यताओं में वितरण को नियंत्रित करने या मेटाडेटा जोड़ने के लिए नियम/फिल्टर हो सकते हैं।
|
||||
- कई-से-कई संचार का समर्थन करता है।
|
||||
3. **Namespaces:** सभी मैसेजिंग घटकों, कतारों और विषयों के लिए एक कंटेनर, यह आपके अपने शक्तिशाली Azure क्लस्टर का एक टुकड़ा है, जो समर्पित क्षमता प्रदान करता है और वैकल्पिक रूप से तीन उपलब्धता क्षेत्रों में फैला हो सकता है।
|
||||
|
||||
@@ -27,11 +27,11 @@ Azure Service Bus एक क्लाउड-आधारित **मैसेज
|
||||
- **Dead-Lettering**: समीक्षा के लिए अप्राप्य संदेशों को कैप्चर करता है।
|
||||
- **Scheduled Delivery**: भविष्य के कार्यों के लिए संदेश प्रसंस्करण में देरी करता है।
|
||||
- **Message Deferral**: तैयार होने तक संदेश पुनर्प्राप्ति को स्थगित करता है।
|
||||
- **Transactions**: परमाणु निष्पादन में संचालन को समूहित करता है।
|
||||
- **Transactions**: संचालन को परमाणु निष्पादन में समूहित करता है।
|
||||
- **Filters & Actions**: संदेशों को फ़िल्टर या एनोटेट करने के लिए नियम लागू करता है।
|
||||
- **Auto-Delete on Idle**: निष्क्रियता के बाद कतारों को हटा देता है (न्यूनतम: 5 मिनट)।
|
||||
- **Duplicate Detection**: पुनः भेजने के दौरान डुप्लिकेट संदेशों को हटा देता है।
|
||||
- **Batch Deletion**: समाप्त या अनावश्यक संदेशों को बल्क में हटाता है।
|
||||
- **Batch Deletion**: समाप्त या अनावश्यक संदेशों को थोक में हटाता है।
|
||||
|
||||
### Authorization-Rule / SAS Policy
|
||||
|
||||
|
||||
@@ -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,7 +71,7 @@ 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।
|
||||
|
||||
|
||||
@@ -76,11 +76,11 @@ Get-AzStorageTableStoredAccessPolicy -Table <Table> -Context (Get-AzStorageAccou
|
||||
{{#endtabs}}
|
||||
|
||||
> [!NOTE]
|
||||
> डिफ़ॉल्ट रूप से `az` cli एक खाता कुंजी का उपयोग करेगा एक कुंजी पर हस्ताक्षर करने और क्रिया करने के लिए। Entra ID प्रमुख विशेषाधिकारों का उपयोग करने के लिए `--auth-mode login` पैरामीटर का उपयोग करें।
|
||||
> डिफ़ॉल्ट रूप से `az` cli एक खाता कुंजी का उपयोग करके एक कुंजी पर हस्ताक्षर करेगा और क्रिया करेगा। Entra ID प्रमुख विशेषाधिकारों का उपयोग करने के लिए `--auth-mode login` पैरामीटर का उपयोग करें।
|
||||
|
||||
> [!TIP]
|
||||
> उपयोग करें पैरामीटर `--account-key` यह इंगित करने के लिए कि किस खाता कुंजी का उपयोग करना है\
|
||||
> उपयोग करें पैरामीटर `--sas-token` SAS टोकन के साथ SAS टोकन के माध्यम से पहुँचने के लिए
|
||||
> उपयोग करने के लिए खाता कुंजी को इंगित करने के लिए पैरामीटर `--account-key` का उपयोग करें\
|
||||
> SAS टोकन के माध्यम से पहुंचने के लिए SAS टोकन के साथ पैरामीटर `--sas-token` का उपयोग करें
|
||||
|
||||
## Privilege Escalation
|
||||
|
||||
|
||||
Reference in New Issue
Block a user