diff --git a/src/SUMMARY.md b/src/SUMMARY.md
index f14f299ff..442c03b1c 100644
--- a/src/SUMMARY.md
+++ b/src/SUMMARY.md
@@ -418,6 +418,7 @@
- [Az - Queue Storage](pentesting-cloud/azure-security/az-services/az-queue-enum.md)
- [Az - Service Bus](pentesting-cloud/azure-security/az-services/az-servicebus-enum.md)
- [Az - SQL](pentesting-cloud/azure-security/az-services/az-sql.md)
+ - [Az - Static Web Applications](pentesting-cloud/azure-security/az-services/az-static-web-apps.md)
- [Az - Storage Accounts & Blobs](pentesting-cloud/azure-security/az-services/az-storage.md)
- [Az - Table Storage](pentesting-cloud/azure-security/az-services/az-table-storage.md)
- [Az - Virtual Machines & Network](pentesting-cloud/azure-security/az-services/vms/README.md)
@@ -461,6 +462,7 @@
- [Az - Queue Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md)
- [Az - Service Bus Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md)
- [Az - Virtual Machines & Network Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md)
+ - [Az - Static Web App Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md)
- [Az - Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md)
- [Az - SQL Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md)
- [Az - Persistence](pentesting-cloud/azure-security/az-persistence/README.md)
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md
index e86972a68..2df6b4875 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md
@@ -6,9 +6,9 @@
### `s3:PutBucketNotification`, `s3:PutObject`, `s3:GetObject`
-एक हमलावर जिसके पास दिलचस्प बकेट्स पर ये अनुमतियाँ हैं, संसाधनों को हाईजैक करने और विशेषाधिकार बढ़ाने में सक्षम हो सकता है।
+एक हमलावर जिनके पास इन दिलचस्प बकेट्स पर ये अनुमतियाँ हैं, वे संसाधनों को हाईजैक करने और विशेषाधिकार बढ़ाने में सक्षम हो सकते हैं।
-उदाहरण के लिए, एक हमलावर जिसके पास **"cf-templates-nohnwfax6a6i-us-east-1"** नामक क्लाउडफॉर्मेशन बकेट पर ये अनुमतियाँ हैं, वह डिप्लॉयमेंट को हाईजैक करने में सक्षम होगा। एक्सेस निम्नलिखित नीति के साथ दिया जा सकता है:
+उदाहरण के लिए, एक हमलावर जिनके पास "cf-templates-nohnwfax6a6i-us-east-1" नामक **क्लाउडफॉर्मेशन बकेट** पर ये **अनुमतियाँ** हैं, वे डिप्लॉयमेंट को हाईजैक करने में सक्षम होंगे। एक्सेस निम्नलिखित नीति के साथ दिया जा सकता है:
```json
{
"Version": "2012-10-17",
@@ -34,7 +34,7 @@
]
}
```
-और हाइजैक संभव है क्योंकि **टेम्पलेट अपलोड होने के क्षण से** लेकर **टेम्पलेट डिप्लॉय होने के क्षण तक एक छोटा समय विंडो** होता है। एक हमलावर बस अपने खाते में एक **lambda function** बना सकता है जो **तब ट्रिगर होगा जब एक बकेट नोटिफिकेशन भेजा जाएगा**, और **हाइजैक** कर लेगा उस **बकेट** की **सामग्री**।
+और हाइजैक संभव है क्योंकि **टेम्पलेट अपलोड होने के क्षण से** लेकर **टेम्पलेट डिप्लॉय होने के क्षण तक एक छोटा समय विंडो** होता है। एक हमलावर बस अपने खाते में एक **lambda function** बना सकता है जो **तब ट्रिगर होगा जब एक बकेट नोटिफिकेशन भेजा जाएगा**, और **हाइजैक** कर लेगा उस **बकेट** का **सामग्री**।
.png>)
@@ -43,7 +43,7 @@ Pacu मॉड्यूल [`cfn__resouce_injection`](https://github.com/RhinoSe
### `s3:PutObject`, `s3:GetObject`
-ये **S3 में ऑब्जेक्ट प्राप्त करने और अपलोड करने** के लिए अनुमतियाँ हैं। AWS के अंदर (और बाहर) कई सेवाएँ S3 स्टोरेज का उपयोग **कॉन्फ़िग फ़ाइलों** को स्टोर करने के लिए करती हैं।\
+ये **S3 में ऑब्जेक्ट्स को प्राप्त करने और अपलोड करने** के लिए अनुमतियाँ हैं। AWS के अंदर (और बाहर) कई सेवाएँ S3 स्टोरेज का उपयोग **कॉन्फ़िग फ़ाइलों** को स्टोर करने के लिए करती हैं।\
एक हमलावर जिसके पास **पढ़ने की पहुँच** है, वह उन पर **संवेदनशील जानकारी** पा सकता है।\
एक हमलावर जिसके पास **लिखने की पहुँच** है, वह **डेटा को संशोधित कर सकता है ताकि किसी सेवा का दुरुपयोग किया जा सके और विशेषाधिकार बढ़ाने की कोशिश की जा सके**।\
ये कुछ उदाहरण हैं:
@@ -52,12 +52,12 @@ Pacu मॉड्यूल [`cfn__resouce_injection`](https://github.com/RhinoSe
### `s3:PutObject`, `s3:GetObject` (वैकल्पिक) टेराफॉर्म स्टेट फ़ाइल पर
-यह बहुत सामान्य है कि [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) स्टेट फ़ाइलें क्लाउड प्रदाताओं के ब्लॉब स्टोरेज में सहेजी जा रही हैं, जैसे कि AWS S3। स्टेट फ़ाइल के लिए फ़ाइल उपसर्ग `.tfstate` है, और बकेट नाम अक्सर यह भी बताते हैं कि वे टेराफॉर्म स्टेट फ़ाइलें हैं। आमतौर पर, हर AWS खाता में ऐसी एक बकेट होती है जो खाते की स्थिति को दिखाने वाली स्टेट फ़ाइलों को स्टोर करती है।\
+यह बहुत सामान्य है कि [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) स्टेट फ़ाइलें क्लाउड प्रदाताओं के ब्लॉब स्टोरेज में सहेजी जा रही हैं, जैसे कि AWS S3। स्टेट फ़ाइल के लिए फ़ाइल उपसर्ग `.tfstate` है, और बकेट नाम अक्सर यह भी बताते हैं कि वे टेराफॉर्म स्टेट फ़ाइलें हैं। आमतौर पर, हर AWS खाता में ऐसी एक बकेट होती है जो खाता की स्थिति को दिखाने वाली स्टेट फ़ाइलों को स्टोर करती है।\
साथ ही आमतौर पर, वास्तविक दुनिया के खातों में लगभग हमेशा सभी डेवलपर्स के पास `s3:*` होता है और कभी-कभी यहां तक कि व्यवसाय उपयोगकर्ताओं के पास भी `s3:Put*` होता है।
-तो, यदि आपके पास इन फ़ाइलों पर सूचीबद्ध अनुमतियाँ हैं, तो एक हमले का वेक्टर है जो आपको `terraform` के विशेषाधिकारों के साथ पाइपलाइन में RCE प्राप्त करने की अनुमति देता है - अधिकांश समय `AdministratorAccess`, जिससे आप क्लाउड खाते के व्यवस्थापक बन जाते हैं। इसके अलावा, आप उस वेक्टर का उपयोग करके `terraform` को वैध संसाधनों को हटाने के लिए सेवा से इनकार के हमले को करने के लिए कर सकते हैं।
+तो, यदि आपके पास इन फ़ाइलों पर सूचीबद्ध अनुमतियाँ हैं, तो एक हमले का वेक्टर है जो आपको `terraform` के विशेषाधिकारों के साथ पाइपलाइन में RCE प्राप्त करने की अनुमति देता है - अधिकांश समय `AdministratorAccess`, जिससे आप क्लाउड खाते के व्यवस्थापक बन जाते हैं। इसके अलावा, आप उस वेक्टर का उपयोग सेवा से इनकार के हमले के लिए कर सकते हैं जिससे `terraform` वैध संसाधनों को हटा दे।
-प्रत्यक्ष उपयोग योग्य शोषण कोड के लिए *Terraform Security* पृष्ठ के *Abusing Terraform State Files* अनुभाग में विवरण का पालन करें:
+*Terraform Security* पृष्ठ के *Abusing Terraform State Files* अनुभाग में सीधे उपयोग करने योग्य शोषण कोड के लिए विवरण का पालन करें:
{{#ref}}
pentesting-ci-cd/terraform-security.md#abusing-terraform-state-files
@@ -65,7 +65,7 @@ pentesting-ci-cd/terraform-security.md#abusing-terraform-state-files
### `s3:PutBucketPolicy`
-एक हमलावर, जिसे **उसी खाते से होना चाहिए**, यदि नहीं तो त्रुटि `The specified method is not allowed will trigger` होगी, इस अनुमति के साथ बकेट(s) पर अधिक अनुमतियाँ देने में सक्षम होगा जिससे वह पढ़, लिख, संशोधित, हटाने और बकेट को उजागर करने की अनुमति प्राप्त कर सकेगा।
+एक हमलावर, जिसे **उसी खाते से होना चाहिए**, यदि नहीं तो त्रुटि `The specified method is not allowed will trigger` होगी, इस अनुमति के साथ बकेट(s) पर अधिक अनुमतियाँ देने में सक्षम होगा जिससे वह पढ़, लिख, संशोधित, हटाने और बकेट को उजागर कर सके।
```bash
# Update Bucket policy
aws s3api put-bucket-policy --policy file:///root/policy.json --bucket
@@ -124,7 +124,7 @@ aws s3api put-bucket-policy --policy file:///root/policy.json --bucket
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md
index 10eda055f..659b62cc2 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md
@@ -12,7 +12,7 @@ Azure App सेवाओं के बारे में अधिक जा
### Microsoft.Web/sites/publish/Action, Microsoft.Web/sites/basicPublishingCredentialsPolicies/read, Microsoft.Web/sites/config/read, Microsoft.Web/sites/read
-ये अनुमतियाँ एक **SSH शेल** प्राप्त करने की अनुमति देती हैं। ये एप्लिकेशन को **डीबग** करने की भी अनुमति देती हैं।
+ये अनुमतियाँ एक वेब ऐप के अंदर **SSH शेल** प्राप्त करने की अनुमति देती हैं। ये एप्लिकेशन को **डिबग** करने की भी अनुमति देती हैं।
- **एकल कमांड में SSH**:
```bash
@@ -94,7 +94,7 @@ az webapp deployment list-publishing-profiles --name --resource-group
}
]
```
-ध्यान दें कि **उपयोगकर्ता नाम हमेशा एक जैसा होता है** (सिवाय FTP के, जो ऐप का नाम शुरुआत में जोड़ता है) लेकिन **पासवर्ड सभी के लिए एक जैसा होता है**।
+ध्यान दें कि **उपयोगकर्ता नाम हमेशा समान होता है** (सिवाय FTP के, जो ऐप का नाम शुरुआत में जोड़ता है) लेकिन **पासवर्ड सभी के लिए समान होता है**।
इसके अलावा, **SCM URL है `.scm.azurewebsites.net`**।
@@ -118,7 +118,7 @@ az webapp deployment list-publishing-credentials --name --resource-gr
```
ध्यान दें कि **क्रेडेंशियल्स वही हैं** जो पिछले कमांड में थे।
-- एक और विकल्प होगा **अपने खुद के क्रेड्स सेट करना** और उनका उपयोग करना:
+- एक और विकल्प होगा कि **आप अपने खुद के क्रेड्स सेट करें** और उनका उपयोग करें:
```bash
az webapp deployment user set \
--user-name hacktricks \
@@ -129,7 +129,7 @@ az webapp deployment user set \
याद रखें कि **वेब से SCM प्लेटफार्म तक पहुँचने के लिए आपको `/BasicAuth`** पर पहुँचने की आवश्यकता है।
> [!WARNING]
-> ध्यान दें कि हर उपयोगकर्ता पिछले कमांड को कॉल करके अपने स्वयं के क्रेडेंशियल्स कॉन्फ़िगर कर सकता है, लेकिन यदि उपयोगकर्ता के पास SCM या FTP तक पहुँचने के लिए पर्याप्त अनुमतियाँ नहीं हैं, तो क्रेडेंशियल्स काम नहीं करेंगे।
+> ध्यान दें कि हर उपयोगकर्ता अपने स्वयं के क्रेडेंशियल्स को पिछले कमांड को कॉल करके कॉन्फ़िगर कर सकता है, लेकिन यदि उपयोगकर्ता के पास SCM या FTP तक पहुँचने के लिए पर्याप्त अनुमतियाँ नहीं हैं, तो क्रेडेंशियल्स काम नहीं करेंगे।
- यदि आप देखते हैं कि वे क्रेडेंशियल्स **REDACTED** हैं, तो इसका मतलब है कि आपको **SCM बेसिक ऑथेंटिकेशन विकल्प को सक्षम करने की आवश्यकता है** और इसके लिए आपको दूसरी अनुमति (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`) की आवश्यकता है:
```bash
@@ -157,7 +157,7 @@ az rest --method PUT \
इस पायथन उदाहरण के लिए, आप https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart से रेपो डाउनलोड कर सकते हैं, कोई भी **परिवर्तन** कर सकते हैं और फिर **ज़िप कर सकते हैं: `zip -r app.zip .`**।
-फिर आप निम्नलिखित कमांड का उपयोग करके एक वेब ऐप में **कोड प्रकाशित कर सकते हैं**:
+फिर आप निम्नलिखित कमांड के साथ एक वेब ऐप में **कोड प्रकाशित कर सकते हैं**:
```bash
curl -X POST "/api/publish?type=zip" --data-binary "@./app.zip" -u ':' -H "Content-Type: application/octet-stream"
```
@@ -165,7 +165,7 @@ curl -X POST "/api/publish?type=zip" --data-binary "@./app.zip" -u '/vfs/data/jobs//rev5/job_log.txt" --resource "https://management.azure.com/"
@@ -211,7 +211,7 @@ az webapp identity assign --name --resource-group --ident
```
### Microsoft.Web/sites/config/list/action
-यह अनुमति **connection strings** और App सेवा के **appsettings** को सूचीबद्ध करने की अनुमति देती है, जिसमें संवेदनशील जानकारी जैसे डेटाबेस क्रेडेंशियल्स हो सकते हैं।
+यह अनुमति **कनेक्शन स्ट्रिंग्स** और ऐप सेवा के **ऐपसेटिंग्स** को सूचीबद्ध करने की अनुमति देती है, जिसमें संवेदनशील जानकारी जैसे डेटाबेस क्रेडेंशियल्स हो सकते हैं।
```bash
az webapp config connection-string list --name --resource-group
az webapp config appsettings list --name --resource-group
@@ -248,7 +248,7 @@ curl -H "Authorization: Bearer " \
-H "Accept: application/json" \
https://graph.microsoft.com/v1.0/me/drive/root/children
```
-### App कोड को स्रोत से अपडेट करें
+### Update App Code from the source
- यदि कॉन्फ़िगर किया गया स्रोत एक तृतीय-पक्ष प्रदाता है जैसे Github, BitBucket या Azure Repository, तो आप **कोड अपडेट** कर सकते हैं App सेवा का स्रोत कोड को समझौता करके।
- यदि ऐप को **रिमोट गिट रिपॉजिटरी** (यूजरनेम और पासवर्ड के साथ) का उपयोग करके कॉन्फ़िगर किया गया है, तो **URL और बेसिक ऑथ क्रेडेंशियल्स** प्राप्त करना संभव है ताकि क्लोन और परिवर्तन पुश किए जा सकें:
@@ -256,14 +256,14 @@ https://graph.microsoft.com/v1.0/me/drive/root/children
- अनुमति का उपयोग करते हुए **`Microsoft.Web/sites/config/list/action`**:
- `az webapp deployment list-publishing-credentials --name --resource-group `
- `az rest --method POST --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//config/metadata/list?api-version=2022-03-01" --resource "https://management.azure.com"`
-- यदि ऐप को **लोकल गिट रिपॉजिटरी** का उपयोग करने के लिए कॉन्फ़िगर किया गया है, तो इसे **रिपॉजिटरी क्लोन करना** और **परिवर्तन पुश करना** संभव है:
-- अनुमति का उपयोग करते हुए **`Microsoft.Web/sites/sourcecontrols/read`**: आप गिट रिपॉजिटरी का URL प्राप्त कर सकते हैं `az webapp deployment source show --name --resource-group `, लेकिन यह ऐप के SCM URL के समान होगा जिसमें पथ `/.git` होगा (जैसे `https://pythonwebapp-audeh9f5fzeyhhed.scm.canadacentral-01.azurewebsites.net:443/pythonwebapp.git`)।
+- यदि ऐप को **लोकल गिट रिपॉजिटरी** का उपयोग करने के लिए कॉन्फ़िगर किया गया है, तो **रिपॉजिटरी क्लोन करना** और **परिवर्तन पुश करना** संभव है:
+- अनुमति का उपयोग करते हुए **`Microsoft.Web/sites/sourcecontrols/read`**: आप गिट रिपॉजिटरी का URL प्राप्त कर सकते हैं `az webapp deployment source show --name --resource-group `, लेकिन यह ऐप के SCM URL के समान होगा जिसमें पथ `/.git` है (जैसे `https://pythonwebapp-audeh9f5fzeyhhed.scm.canadacentral-01.azurewebsites.net:443/pythonwebapp.git`)।
- SCM क्रेडेंशियल प्राप्त करने के लिए आपको अनुमति की आवश्यकता है:
- **`Microsoft.Web/sites/publishxml/action`**: फिर चलाएँ `az webapp deployment list-publishing-profiles --resource-group -n `।
- **`Microsoft.Web/sites/config/list/action`**: फिर चलाएँ `az webapp deployment list-publishing-credentials --name --resource-group `
> [!WARNING]
-> ध्यान दें कि अनुमति `Microsoft.Web/sites/config/list/action` और SCM क्रेडेंशियल्स होने पर हमेशा एक वेब ऐप में तैनात करना संभव है (यहां तक कि यदि इसे तृतीय-पक्ष प्रदाता का उपयोग करने के लिए कॉन्फ़िगर किया गया था) जैसा कि पिछले अनुभाग में उल्लेख किया गया है।
+> ध्यान दें कि अनुमति `Microsoft.Web/sites/config/list/action` और SCM क्रेडेंशियल्स होने पर हमेशा एक वेब ऐप में तैनात करना संभव है (भले ही इसे तृतीय-पक्ष प्रदाता का उपयोग करने के लिए कॉन्फ़िगर किया गया हो) जैसा कि पिछले अनुभाग में उल्लेख किया गया है।
> [!WARNING]
> ध्यान दें कि नीचे दी गई अनुमतियों के साथ यह भी **एक मनमाना कंटेनर निष्पादित करना संभव है** भले ही वेब ऐप को अलग तरीके से कॉन्फ़िगर किया गया हो।
diff --git a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md
index 4c70aeb55..029941a1a 100644
--- a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md
+++ b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md
@@ -4,15 +4,15 @@
## 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** एक **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**: **dynamic, event-driven scaling** के साथ pay-as-you-go मूल्य निर्धारण प्रदान करता है, मांग के आधार पर फ़ंक्शन उदाहरणों को जोड़ने या हटाने की अनुमति देता है। यह **virtual networking** और **pre-provisioned instances** का समर्थन करता है ताकि ठंडी शुरुआत को कम किया जा सके, जिससे यह **variable workloads** के लिए उपयुक्त है जिन्हें कंटेनर समर्थन की आवश्यकता नहीं है।
-- **Traditional Consumption Plan**: डिफ़ॉल्ट serverless विकल्प, जहां आप **केवल तब कंप्यूट संसाधनों के लिए भुगतान करते हैं जब फ़ंक्शन चलते हैं**। यह आने वाली घटनाओं के आधार पर स्वचालित रूप से स्केल करता है और इसमें **cold start optimizations** शामिल हैं, लेकिन यह कंटेनर तैनाती का समर्थन नहीं करता है। **intermittent workloads** के लिए आदर्श जो स्वचालित स्केलिंग की आवश्यकता होती है।
+- **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** के लिए आदर्श।
@@ -21,7 +21,7 @@
जब एक नया Function App बनाया जाता है जो कंटेनर नहीं है (लेकिन चलाने के लिए कोड देता है), तो **कोड और अन्य Function से संबंधित डेटा एक Storage account में संग्रहीत किया जाएगा**। डिफ़ॉल्ट रूप से, वेब कंसोल प्रत्येक फ़ंक्शन के लिए कोड संग्रहीत करने के लिए एक नया बनाएगा।
-इसके अलावा, बकेट के अंदर कोड को संशोधित करने पर (जिस विभिन्न प्रारूपों में इसे संग्रहीत किया जा सकता है), **ऐप का कोड नए कोड में संशोधित किया जाएगा और अगली बार जब फ़ंक्शन को कॉल किया जाएगा तो इसे निष्पादित किया जाएगा**।
+इसके अलावा, बकेट के अंदर कोड को संशोधित करने पर (जिस विभिन्न प्रारूपों में इसे संग्रहीत किया जा सकता है), **ऐप का कोड नए कोड में संशोधित किया जाएगा और अगली बार जब Function को कॉल किया जाएगा तो इसे निष्पादित किया जाएगा**।
> [!CAUTION]
> यह हमलावरों के दृष्टिकोण से बहुत दिलचस्प है क्योंकि **इस बकेट पर लिखने की पहुंच** एक हमलावर को **कोड से समझौता करने और Function App के अंदर प्रबंधित पहचान को बढ़ाने** की अनुमति देगी।
@@ -44,9 +44,9 @@ HTTP ट्रिगर का उपयोग करते समय:
### **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**
@@ -61,7 +61,7 @@ Linux सैंडबॉक्स के अंदर स्रोत कोड
**system assigned** एक प्रबंधित पहचान होगी जिसे **केवल वही फ़ंक्शन** उपयोग कर सकेगा जिसे यह सौंपा गया है, जबकि **user assigned** प्रबंधित पहचानें हैं जिन्हें **कोई अन्य Azure सेवा उपयोग कर सकेगी**।
> [!NOTE]
-> जैसे कि [**VMs**](vms/index.html) में, Functions के पास **1 system assigned** प्रबंधित पहचान और **कई user assigned** हो सकते हैं, इसलिए यदि आप फ़ंक्शन से समझौता करते हैं तो सभी को खोजने का प्रयास करना हमेशा महत्वपूर्ण होता है क्योंकि आप केवल एक फ़ंक्शन से कई प्रबंधित पहचान को बढ़ा सकते हैं।
+> जैसे कि [**VMs**](vms/index.html) में, Functions के पास **1 system assigned** प्रबंधित पहचान और **कई user assigned** हो सकते हैं, इसलिए यदि आप फ़ंक्शन से समझौता करते हैं तो सभी को खोजने का प्रयास करना हमेशा महत्वपूर्ण होता है क्योंकि आप केवल एक Function से कई प्रबंधित पहचान को बढ़ा सकते हैं।
>
> यदि कोई system managed identity का उपयोग नहीं किया गया है लेकिन एक या अधिक user managed identities एक फ़ंक्शन से जुड़ी हुई हैं, तो डिफ़ॉल्ट रूप से आप कोई टोकन प्राप्त नहीं कर पाएंगे।
@@ -69,28 +69,28 @@ Linux सैंडबॉक्स के अंदर स्रोत कोड
{% embed url="https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm" %}
-ध्यान दें कि आपको यह पता लगाने की आवश्यकता है कि **एक फ़ंक्शन के पास जुड़ी सभी Managed Identities की जांच कैसे करें** क्योंकि यदि आप इसे निर्दिष्ट नहीं करते हैं, तो मेटाडेटा एंडपॉइंट **केवल डिफ़ॉल्ट एक का उपयोग करेगा** (अधिक जानकारी के लिए पिछले लिंक की जांच करें)।
+ध्यान दें कि आपको यह पता लगाने की आवश्यकता है कि **एक फ़ंक्शन के पास संलग्न सभी Managed Identities की जांच कैसे करें** क्योंकि यदि आप इसे निर्दिष्ट नहीं करते हैं, तो मेटाडेटा एंडपॉइंट **केवल डिफ़ॉल्ट एक का उपयोग करेगा** (अधिक जानकारी के लिए पिछले लिंक की जांच करें)।
## Access Keys
> [!NOTE]
-> ध्यान दें कि उपयोगकर्ताओं को फ़ंक्शन को सक्रिय करने के लिए पहुंच देने के लिए RBAC अनुमतियाँ नहीं हैं। **फ़ंक्शन सक्रियण उस ट्रिगर पर निर्भर करता है** जो इसे बनाया गया था और यदि एक HTTP ट्रिगर चुना गया था, तो इसे **access key** का उपयोग करने की आवश्यकता हो सकती है।
+> ध्यान दें कि उपयोगकर्ताओं को फ़ंक्शंस को सक्रिय करने के लिए पहुंच देने के लिए RBAC अनुमतियाँ नहीं हैं। **फ़ंक्शन सक्रियण उस ट्रिगर पर निर्भर करता है** जो इसे बनाया गया था और यदि एक HTTP ट्रिगर चुना गया था, तो इसे **access key** का उपयोग करने की आवश्यकता हो सकती है।
-एक फ़ंक्शन के अंदर एक एंडपॉइंट बनाते समय **HTTP ट्रिगर** का उपयोग करते समय यह संभव है कि **access key authorization level** को निर्दिष्ट करें जो फ़ंक्शन को सक्रिय करने के लिए आवश्यक है। तीन विकल्प उपलब्ध हैं:
+एक फ़ंक्शन के अंदर एक एंडपॉइंट बनाते समय **HTTP ट्रिगर** का उपयोग करते समय यह संभव है कि **access key authorization level** को इंगित करें जो फ़ंक्शन को सक्रिय करने के लिए आवश्यक है। तीन विकल्प उपलब्ध हैं:
-- **ANONYMOUS**: **सभी** फ़ंक्शन को URL द्वारा एक्सेस कर सकते हैं।
+- **ANONYMOUS**: **हर कोई** URL के माध्यम से फ़ंक्शन तक पहुंच सकता है।
- **FUNCTION**: एंडपॉइंट केवल उन उपयोगकर्ताओं के लिए सुलभ है जो **function, host या master key** का उपयोग कर रहे हैं।
- **ADMIN**: एंडपॉइंट केवल उन उपयोगकर्ताओं के लिए सुलभ है जिनके पास **master key** है।
**Type of keys:**
-- **Function Keys:** फ़ंक्शन कुंजी या तो डिफ़ॉल्ट या उपयोगकर्ता-परिभाषित हो सकती हैं और इन्हें विशेष रूप से **Function App के भीतर विशिष्ट फ़ंक्शन एंडपॉइंट्स** तक पहुंच प्रदान करने के लिए डिज़ाइन किया गया है जिससे एंडपॉइंट्स पर अधिक बारीक पहुंच मिलती है।
-- **Host Keys:** होस्ट कुंजी, जो डिफ़ॉल्ट या उपयोगकर्ता-परिभाषित भी हो सकती हैं, **Function App के भीतर सभी फ़ंक्शन एंडपॉइंट्स तक पहुंच प्रदान करती हैं FUNCTION access level** के साथ।
+- **Function Keys:** Function keys या तो डिफ़ॉल्ट या उपयोगकर्ता-परिभाषित हो सकते हैं और इन्हें विशेष रूप से **Function App के भीतर विशिष्ट फ़ंक्शन एंडपॉइंट्स** तक पहुंच प्रदान करने के लिए डिज़ाइन किया गया है जिससे एंडपॉइंट्स पर अधिक बारीक पहुंच मिलती है।
+- **Host Keys:** Host keys, जो डिफ़ॉल्ट या उपयोगकर्ता-परिभाषित भी हो सकते हैं, **Function App के भीतर सभी फ़ंक्शन एंडपॉइंट्स तक FUNCTION access level** के साथ पहुंच प्रदान करते हैं।
- **Master Key:** मास्टर कुंजी (`_master`) एक प्रशासनिक कुंजी के रूप में कार्य करती है जो सभी फ़ंक्शन एंडपॉइंट्स (ADMIN access level शामिल) तक पहुंच प्रदान करती है। यह **कुंजी रद्द नहीं की जा सकती।**
-- **System Keys:** सिस्टम कुंजी **विशिष्ट एक्सटेंशन द्वारा प्रबंधित** होती हैं और आंतरिक घटकों द्वारा उपयोग किए जाने वाले वेबहुक एंडपॉइंट्स तक पहुंच के लिए आवश्यक होती हैं। उदाहरणों में Event Grid ट्रिगर और Durable Functions शामिल हैं, जो अपने संबंधित APIs के साथ सुरक्षित रूप से बातचीत करने के लिए सिस्टम कुंजी का उपयोग करते हैं।
+- **System Keys:** System keys **विशिष्ट एक्सटेंशन द्वारा प्रबंधित** होते हैं और आंतरिक घटकों द्वारा उपयोग किए जाने वाले वेबहुक एंडपॉइंट्स तक पहुंच के लिए आवश्यक होते हैं। उदाहरणों में Event Grid ट्रिगर और Durable Functions शामिल हैं, जो अपने संबंधित APIs के साथ सुरक्षित रूप से बातचीत करने के लिए सिस्टम कुंजी का उपयोग करते हैं।
> [!TIP]
-> कुंजी का उपयोग करके फ़ंक्शन API एंडपॉइंट तक पहुंचने का उदाहरण:
+> एक कुंजी का उपयोग करके फ़ंक्शन API एंडपॉइंट तक पहुंचने का उदाहरण:
>
> `https://.azurewebsites.net/api/?code=`
@@ -192,7 +192,7 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
```
-इसके अलावा, एक **Managed Identity** भी बनाया जाता है ताकि रिपॉजिटरी से Github Action इसके साथ Azure में लॉगिन कर सके। यह **Managed Identity** पर एक Federated credential उत्पन्न करके किया जाता है, जो **Issuer** `https://token.actions.githubusercontent.com` और **Subject Identifier** `repo:/:ref:refs/heads/` को अनुमति देता है।
+इसके अलावा, एक **Managed Identity** भी बनाई जाती है ताकि रिपॉजिटरी से Github Action इसके साथ Azure में लॉगिन कर सके। यह **Managed Identity** पर एक Federated credential उत्पन्न करके किया जाता है, जो **Issuer** `https://token.actions.githubusercontent.com` और **Subject Identifier** `repo:/:ref:refs/heads/` को अनुमति देता है।
> [!CAUTION]
> इसलिए, जो कोई भी उस रिपॉजिटरी को समझौता करेगा, वह फ़ंक्शन और इससे जुड़े Managed Identities को भी समझौता कर सकेगा।