Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes

This commit is contained in:
Translator
2025-01-26 10:45:01 +00:00
parent 6bbab4fb03
commit 1784e99a11
3 changed files with 101 additions and 35 deletions

View File

@@ -18,48 +18,55 @@ Red Team के दृष्टिकोण से, **Azure वातावर
### External enum & Initial Access
पहला कदम निश्चित रूप से उस टेनेन्ट के बारे में जानकारी इकट्ठा करना है जिसे आप हमला कर रहे हैं और foothold प्राप्त करने की कोशिश करना है।
पहला कदम निश्चित रूप से उस टेनेन्ट के बारे में जानकारी इकट्ठा करना है जिसे आप हमला कर रहे हैं और एक foothold प्राप्त करने की कोशिश करना है।
डोमेन नाम के आधार पर यह जानना संभव है **क्या कंपनी Azure का उपयोग कर रही है**, **टेनेन्ट ID** प्राप्त करें, उसी टेनेन्ट में अन्य **मान्य डोमेन** प्राप्त करें (यदि अधिक हैं) और **संबंधित जानकारी** प्राप्त करें जैसे कि SSO सक्षम है या नहीं, मेल कॉन्फ़िगरेशन, मान्य उपयोगकर्ता ईमेल...
**बाहरी enumeration** करने के लिए निम्नलिखित पृष्ठ देखें:
**बाहरी एन्यूमरेशन** करने के लिए निम्नलिखित पृष्ठ की जांच करें:
{{#ref}}
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
इस जानकारी के साथ foothold प्राप्त करने के लिए सबसे सामान्य तरीके हैं:
- **OSINT**: Github या किसी अन्य ओपन-सोर्स प्लेटफॉर्म पर **leaks** की जांच करें जो **credentials** या दिलचस्प जानकारी रख सकता है।
- **Password** पुन: उपयोग, leaks या [password spraying](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
- एक कर्मचारी के लिए credentials खरीदें
- [**Common Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (credentials या Oauth App)
इस जानकारी के साथ, foothold प्राप्त करने के लिए सबसे सामान्य तरीके हैं:
- **OSINT**: GitHub या किसी अन्य ओपन-सोर्स प्लेटफॉर्म पर **leaks** की जांच करें जो **क्रेडेंशियल्स** या दिलचस्प जानकारी रख सकता है।
- **Password** पुन: उपयोग, लीक या [password spraying](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
- एक कर्मचारी के लिए क्रेडेंशियल्स खरीदें
- [**Common Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (क्रेडेंशियल्स या Oauth ऐप)
- [Device Code Authentication Phishing](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
- 3rd parties **breached**
- 3rd पार्टी **breached**
- Azure-Hosted Applications में कमजोरियाँ
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) के साथ मेटाडेटा एंडपॉइंट तक पहुँच
- **Subdomain takeovers** जैसे [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
- यदि कुछ डेवलपर लैपटॉप समझौता कर लिया गया है ([WinPEAS और LinPEAS](https://github.com/peass-ng/PEASS-ng) इस जानकारी को खोज सकते हैं):
- अंदर **`<HOME>/.Azure`**
- **`azureProfile.json`** पिछले लॉग इन उपयोगकर्ताओं के बारे में जानकारी रखता है
- **अन्य Azure सेवाओं की गलत कॉन्फ़िगरेशन**
- यदि किसी डेवलपर का लैपटॉप समझौता किया गया है ([WinPEAS और LinPEAS](https://github.com/peass-ng/PEASS-ng) इस जानकारी को खोज सकते हैं):
- **`<HOME>/.Azure`** के अंदर
- **`azureProfile.json`** पिछले लॉगिन उपयोगकर्ताओं के बारे में जानकारी रखता है
- **`clouds.config contains`** सब्सक्रिप्शन के बारे में जानकारी रखता है
- **`service_principal_entries.json`** एप्लिकेशन के credentials (टेनेन्ट आईडी, क्लाइंट और सीक्रेट) रखता है। केवल Linux और macOS में
- **`msal_token_cache.json`** में access tokens और refresh tokens होते हैं। केवल Linux और macOS में
- **`service_principal_entries.json`** एप्लिकेशन क्रेडेंशियल्स (टेनेन्ट आईडी, क्लाइंट और सीक्रेट) रखता है। केवल Linux और macOS में
- **`msal_token_cache.json`** में एक्सेस टोकन और रिफ्रेश टोकन होते हैं। केवल Linux और macOS में
- **`service_principal_entries.bin`** और msal_token_cache.bin Windows में उपयोग होते हैं और DPAPI के साथ एन्क्रिप्टेड होते हैं
- **`msal_http_cache.bin`** HTTP अनुरोध का कैश है
- इसे लोड करें: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)`
- **`AzureRmContext.json`** Az PowerShell का उपयोग करके पिछले लॉगिन के बारे में जानकारी रखता है (लेकिन कोई credentials नहीं)
- अंदर **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** कई `.bin` फ़ाइलें हैं जिनमें **access tokens**, ID tokens और उपयोगकर्ता के DPAPI के साथ एन्क्रिप्ट की गई खाता जानकारी होती है।
- **`C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`** के अंदर `.tbres` फ़ाइलों में अधिक **access tokens** मिल सकते हैं जो DPAPI के साथ एन्क्रिप्टेड बेस64 होते हैं।
- Linux और macOS में आप Az PowerShell (यदि उपयोग किया गया हो) से **access tokens, refresh tokens और id tokens** प्राप्त कर सकते हैं `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"` चलाकर
- Windows में यह केवल id tokens उत्पन्न करता है।
- यह देखना संभव है कि क्या Az PowerShell का उपयोग Linux और macOS में किया गया था यह जांचकर कि `$HOME/.local/share/.IdentityService/` मौजूद है (हालांकि इसमें शामिल फ़ाइलें खाली और बेकार हैं)
- **`AzureRmContext.json`** पिछले लॉगिन के बारे में जानकारी रखता है जो Az PowerShell का उपयोग करके किया गया था (लेकिन कोई क्रेडेंशियल्स नहीं)
- **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** के अंदर क`.bin` फ़ाइलें हैं जिनमें **एक्सेस टोकन**, आईडी टोकन और उपयोगकर्ता DPAPI के साथ एन्क्रिप्टेड खाता जानकारी होती है।
- **`C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`** के अंदर `.tbres` फ़ाइलों में अधिक **एक्सेस टोकन** मिल सकते हैं, जो DPAPI के साथ बेस64 एन्क्रिप्टेड होते हैं।
- Linux और macOS में आप Az PowerShell (यदि उपयोग किया गया हो) से **एक्सेस टोकन, रिफ्रेश टोकन और आईडी टोकन** प्राप्त कर सकते हैं `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"` चलाकर
- Windows में यह केवल आईडी टोकन उत्पन्न करता है।
- यह देखना संभव है कि क्या Az PowerShell का उपयोग Linux और macOS में किया गया था यह जांचकर कि `$HOME/.local/share/.IdentityService/` मौजूद है (हालांकि इसमें मौजूद फ़ाइलें खाली और बेकार हैं)
फुटहोल्ड की ओर ले जाने वाली **अन्य Azure सेवाओं की गलत कॉन्फ़िगरेशन** खोजें निम्नलिखित पृष्ठ पर:
{{#ref}}
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
> [!NOTE]
> याद रखें कि आमतौर पर **enumeration का सबसे शोर वाला** भाग **login** होता है, न कि स्वयं enumeration
> याद रखें कि आमतौर पर एन्यूमरेशन का **सबसे शोर वाला** भाग **लॉगिन** होता है, न कि स्वयं एन्यूमरेशन
### Azure & Entra ID tooling
निम्नलिखित उपकरण Entra ID टेनेन्ट और Azure वातावरण को धीरे-धीरे (पता लगाने से बचने के लिए) या स्वचालित रूप से (समय बचाने के लिए) enumerating करने के लिए बहुत उपयोगी होंगे:
निम्नलिखित उपकरण Entra ID टेनेन्ट और Azure वातावरण को धीरे-धीरे (पता लगाने से बचने के लिए) या स्वचालित रूप से (समय बचाने के लिए) एन्यूमरेट करने के लिए बहुत उपयोगी होंगे:
{{#ref}}
az-enumeration-tools.md
@@ -69,12 +76,12 @@ az-enumeration-tools.md
<figure><img src="../../images/image (268).png" alt=""><figcaption></figcaption></figure>
उन मामलों में जहाँ आपके पास कुछ मान्य credentials हैं लेकिन आप लॉगिन नहीं कर सकते, ये कुछ सामान्य सुरक्षा उपाय हैं जो लागू हो सकते हैं:
उन मामलों में जहाँ आपके पास कुछ मान्य क्रेडेंशियल्स हैं लेकिन आप लॉगिन नहीं कर सकते, ये कुछ सामान्य सुरक्षा उपाय हैं जो लागू हो सकते हैं:
- **IP whitelisting** -- आपको एक मान्य IP से समझौता करना होगा
- **IP whitelisting** -- आपको एक मान्य IP से समझौता करने की आवश्यकता है
- **Geo restrictions** -- पता करें कि उपयोगकर्ता कहाँ रहता है या कंपनी के कार्यालय कहाँ हैं और उसी शहर (या कम से कम देश) से एक IP प्राप्त करें
- **Browser** -- शायद केवल कुछ OS (Windows, Linux, Mac, Android, iOS) से एक ब्राउज़र की अनुमति है। पता करें कि पीड़ित/कंपनी कौन सा OS उपयोग कर रही है।
- आप **Service Principal credentials** को भी समझौता करने की कोशिश कर सकते हैं क्योंकि ये आमतौर पर कम सीमित होते हैं और इसका लॉगिन कम समीक्षा किया जाता है
- **Browser** -- शायद केवल कुछ OS (Windows, Linux, Mac, Android, iOS) से एक ब्राउज़र की अनुमति है। पता करें कि पीड़ित/कंपनी कौन सा OS उपयोग करी है।
- आप **Service Principal क्रेडेंशियल्स** से भी समझौता करने की कोशिश कर सकते हैं क्योंकि ये आमतौर पर कम सीमित होते हैं और इसका लॉगिन कम समीक्षा किया जाता है
इसे बायपास करने के बाद, आप अपनी प्रारंभिक सेटअप पर वापस जाने में सक्षम हो सकते हैं और आपके पास अभी भी पहुँच होगी।
@@ -83,7 +90,7 @@ az-enumeration-tools.md
> [!CAUTION]
> जानें **कैसे स्थापित करें** az cli, AzureAD और Az PowerShell [**Az - Entra ID**](az-services/az-azuread.md) अनुभाग में।
आपको जानने की पहली चीज़ यह है कि **आप कौन हैं** (आप किस वातावरण में हैं):
आपको जानने की आवश्यकता है कि आप **कौन हैं** (आप किस वातावरण में हैं):
{{#tabs }}
{{#tab name="az cli" }}
@@ -130,7 +137,7 @@ Get-AzureADTenantDetail
### Entra ID Enumeration & Privilege Escalation
डिफ़ॉल्ट रूप से, किसी भी उपयोगकर्ता के पास **उपयोगकर्ताओं, समूहों, भूमिकाओं, सेवा प्रमुखों** जैसी चीजों को सूचीबद्ध करने के लिए **पर्याप्त अनुमतियाँ होनी चाहिए**... (चेक [default AzureAD permissions](az-basic-information/index.html#default-user-permissions)).\
डिफ़ॉल्ट रूप से, किसी भी उपयोगकर्ता क **उपयोगकर्ताओं, समूहों, भूमिकाओं, सेवा प्रमुखों** जैसी चीजों को सूचीबद्ध करने के लिए **पर्याप्त अनुमतियाँ होनी चाहिए**... (चेक [default AzureAD permissions](az-basic-information/index.html#default-user-permissions)).\
यहाँ एक गाइड है:
{{#ref}}
@@ -148,13 +155,32 @@ az-enumeration-tools.md#automated-post-exploitation-tools
एक बार जब आप जान लेते हैं कि आप कौन हैं, तो आप **Azure सेवाओं को सूचीबद्ध करना शुरू कर सकते हैं जिन तक आपकी पहुँच है**
Az PoswerShell कमांड **`Get-AzResource`** आपको **जानने देता है कि आपके वर्तमान उपयोगकर्ता के पास कौन से संसाधनों की दृश्यता है**
आपको यह पता लगाना चाहिए कि आपके पास **संसाधनों पर क्या अनुमतियाँ है** इसके लिए:
इसके अलावा, आप **वेब कंसोल** में वही जानकारी प्राप्त कर सकते हैं [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) पर जाकर या "All resources" के लिए खोजकर या निष्पादित करके: `az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"`
1. **उस संसाधन को खोजें जिसके लिए आपके पास कुछ पहुँच है**:
इसके अलावा, पर्याप्त अनुमतियों के साथ, भूमिका **`Get-AzRoleAssignment`** का उपयोग **सदस्यता में सभी भूमिकाओं को सूचीबद्ध करने** या एक विशिष्ट संसाधन पर अनुमति को इंगित करने के लिए किया जा सकता है जैसे: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**
Az PoswerShell कमांड **`Get-AzResource`** आपको **जानकारी देता है कि आपके वर्तमान उपयोगकर्ता के पास कौन से संसाधनों पर दृश्यता है**
अगली अनुभाग में आप सबसे सामान्य Azure सेवाओं के बारे में जानकारी पा सकते हैं और उन्हें कैसे सूचीबद्ध करें:
इसके अलावा, आप **वेब कंसोल** में जाकर या "All resources" के लिए खोजकर या निष्पादित करके वही जानकारी प्राप्त कर सकते हैं: `az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"`
2. **उन संसाधनों पर आपके पास जो अनुमतियाँ हैं उन्हें खोजें और आपके लिए असाइन की गई भूमिकाएँ खोजें**:
ध्यान दें कि आपको इस क्रिया को निष्पादित करने के लिए अनुमति **`Microsoft.Authorization/roleAssignments/read`** की आवश्यकता है।
इसके अलावा, पर्याप्त अनुमतियों के साथ, भूमिका **`Get-AzRoleAssignment`** का उपयोग **सदस्यता में सभी भूमिकाओं को सूचीबद्ध करने** या एक विशिष्ट संसाधन पर अनुमति प्राप्त करने के लिए किया जा सकता है जैसे: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**।
यह जानकारी प्राप्त करना भी संभव है **`az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`** चलाकर जैसे:
- **`az rest --method GET --uri "https://management.azure.com//subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`**
3. **आपके लिए संलग्न भूमिकाओं की सूक्ष्म अनुमतियाँ खोजें**:
फिर, सूक्ष्म अनुमति प्राप्त करने के लिए आप **`(Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions`** चला सकते हैं।
या सीधे API को कॉल करें **`az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2020-08-01-preview" | jq ".properties"`** के साथ।
अगली अनुभाग में आप **सबसे सामान्य Azure सेवाओं के बारे में जानकारी और उन्हें सूचीबद्ध करने के तरीके** पा सकते हैं:
{{#ref}}
az-services/
@@ -164,19 +190,19 @@ az-services/
एक बार जब आप जान लेते हैं कि Azure वातावरण कैसे संरचित है और कौन सी सेवाएँ उपयोग की जा रही हैं, तो आप **अनुमतियों को बढ़ाने, पार्श्व रूप से स्थानांतरित करने, अन्य पोस्ट-एक्सप्लॉइटेशन हमलों को करने और स्थिरता बनाए रखने** के तरीकों की तलाश शुरू कर सकते हैं।
अगली अनुभाग में आप सबसे सामान्य Azure सेवाओं में अनुमतियों को बढ़ाने के बारे में जानकारी पा सकते हैं:
अगली अनुभाग में आप सबसे सामान्य Azure सेवाओं में अनुमतियों को बढ़ाने के तरीके के बारे में जानकारी पा सकते हैं:
{{#ref}}
az-privilege-escalation/
{{#endref}}
अगली में आप सबसे सामान्य Azure सेवाओं में पोस्ट-एक्सप्लॉइटेशन हमलों को करने के बारे में जानकारी पा सकते हैं:
अगली में आप सबसे सामान्य Azure सेवाओं में पोस्ट-एक्सप्लॉइटेशन हमलों को करने के तरीके के बारे में जानकारी पा सकते हैं:
{{#ref}}
az-post-exploitation/
{{#endref}}
अगली में आप सबसे सामान्य Azure सेवाओं में स्थिरता बनाए रखने के बारे में जानकारी पा सकते हैं:
अगली में आप सबसे सामान्य Azure सेवाओं में स्थिरता बनाए रखने के तरीके के बारे में जानकारी पा सकते हैं:
{{#ref}}
az-persistence/

View File

@@ -1 +0,0 @@
# Az - विशेषाधिकार वृद्धि

View File

@@ -0,0 +1,41 @@
# Az - Storage Unauth
{{#include ../../../banners/hacktricks-training.md}}
## Storage Unauth
स्टोरेज के बारे में अधिक जानकारी के लिए देखें:
{{#ref}}
../az-services/az-storage.md
{{#endref}}
### Open Storage
आप [**InvokeEnumerateAzureBlobs.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/Misc/Invoke-EnumerateAzureBlobs.ps1) जैसे टूल का उपयोग करके ओपन स्टोरेज का पता लगा सकते हैं, जो फ़ाइल **`Microburst/Misc/permutations.txt`** का उपयोग करके परिमाण उत्पन्न करेगा (बहुत सरल) ताकि **ओपन स्टोरेज अकाउंट्स** खोजने की कोशिश की जा सके।
```bash
Import-Module .\MicroBurst\MicroBurst.psm1
Invoke-EnumerateAzureBlobs -Base corp
[...]
https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
[...]
# Access https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
# Check: <Name>ssh_info.json</Name>
# Access then https://corpcommon.blob.core.windows.net/secrets/ssh_info.json
```
आप इस लक्ष्य के लिए [**MicroBust**](https://github.com/NetSPI/MicroBurst) से एक विधि का भी उपयोग कर सकते हैं। यह फ़ंक्शन कई **azure domains** (स्टोरेज डोमेन सहित) में बेस डोमेन नाम (और कुछ परिवर्तन) की खोज करेगा:
```bash
Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
Invoke-EnumerateAzureSubDomains -Base corp -Verbose
```
### SAS URLs
एक _**साझा पहुंच हस्ताक्षर**_ (SAS) URL एक URL है जो **एक स्टोरेज खाते** के कुछ हिस्से (यह एक पूर्ण कंटेनर, एक फ़ाइल हो सकता है...) तक पहुंच प्रदान करता है जिसमें संसाधनों पर कुछ विशिष्ट अनुमतियाँ (पढ़ने, लिखने...) होती हैं। यदि आप एक लीक हुआ पाते हैं, तो आप संवेदनशील जानकारी तक पहुंच प्राप्त कर सकते हैं, वे इस तरह दिखते हैं (यह एक कंटेनर तक पहुंच के लिए है, यदि यह केवल एक फ़ाइल तक पहुंच प्रदान कर रहा होता, तो URL का पथ भी उस फ़ाइल को शामिल करेगा):
`https://<storage_account_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D`
Use [**Storage Explorer**](https://azure.microsoft.com/en-us/features/storage-explorer/) to access the data
{{#include ../../../banners/hacktricks-training.md}}