mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-27 21:23:07 -08:00
233 lines
18 KiB
Markdown
233 lines
18 KiB
Markdown
# Azure Pentesting
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
## Basic Information
|
|
|
|
Azure और Entra ID के मूल बातें निम्नलिखित पृष्ठ पर जानें:
|
|
|
|
{{#ref}}
|
|
az-basic-information/
|
|
{{#endref}}
|
|
|
|
## Azure Pentester/Red Team Methodology
|
|
|
|
AZURE वातावरण का ऑडिट करने के लिए यह जानना बहुत महत्वपूर्ण है: कौन से **सेवाएँ उपयोग की जा रही हैं**, क्या **प्रदर्शित किया जा रहा है**, किसके पास **पहुँच** है, और आंतरिक Azure सेवाएँ और **बाहरी सेवाएँ** कैसे जुड़ी हुई हैं।
|
|
|
|
Red Team के दृष्टिकोण से, **Azure वातावरण को समझौता करने का पहला कदम** कुछ **foothold** प्राप्त करना है।
|
|
|
|
### External enum & Initial Access
|
|
|
|
पहला कदम निश्चित रूप से उस टेनेन्ट के बारे में जानकारी इकट्ठा करना है जिसे आप हमला कर रहे हैं और foothold प्राप्त करने की कोशिश करना है।
|
|
|
|
डोमेन नाम के आधार पर यह जानना संभव है **क्या कंपनी Azure का उपयोग कर रही है**, **टेनेन्ट ID** प्राप्त करें, उसी टेनेन्ट में अन्य **मान्य डोमेन** प्राप्त करें (यदि अधिक हैं) और **संबंधित जानकारी** प्राप्त करें जैसे कि SSO सक्षम है या नहीं, मेल कॉन्फ़िगरेशन, मान्य उपयोगकर्ता ईमेल...
|
|
|
|
**बाहरी एन्यूमरेशन** करने के लिए निम्नलिखित पृष्ठ देखें:
|
|
|
|
{{#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)
|
|
- एक कर्मचारी से क्रेडेंशियल्स खरीदें
|
|
- [**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 पार्टी **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/)
|
|
- **अन्य Azure सेवाओं की गलत कॉन्फ़िगरेशन**
|
|
- यदि किसी डेवलपर का लैपटॉप समझौता किया गया है ([WinPEAS और LinPEAS](https://github.com/peass-ng/PEASS-ng) इस जानकारी को खोज सकते हैं):
|
|
- **`<HOME>/.Azure`** के अंदर
|
|
- **`azureProfile.json`** पिछले लॉगिन उपयोगकर्ताओं के बारे में जानकारी रखता है
|
|
- **`clouds.config contains`** सब्सक्रिप्शन के बारे में जानकारी रखता है
|
|
- **`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 का उपयोग करके किया गया था (लेकिन कोई क्रेडेंशियल नहीं)
|
|
- **`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 टोकन उत्पन्न करता है।
|
|
- यह देखना संभव है कि क्या Az PowerShell का उपयोग Linux और macOS में किया गया था यह जांचकर कि `$HOME/.local/share/.IdentityService/` मौजूद है (हालांकि इसमें मौजूद फ़ाइलें खाली और बेकार हैं)
|
|
|
|
फुटहोल प्राप्त करने के लिए **अन्य Azure सेवाओं की गलत कॉन्फ़िगरेशन** खोजें निम्नलिखित पृष्ठ पर:
|
|
|
|
{{#ref}}
|
|
az-unauthenticated-enum-and-initial-entry/
|
|
{{#endref}}
|
|
|
|
> [!NOTE]
|
|
> याद रखें कि आमतौर पर एन्यूमरेशन का **सबसे शोर वाला** भाग **लॉगिन** होता है, न कि स्वयं एन्यूमरेशन।
|
|
|
|
### Azure & Entra ID tooling
|
|
|
|
निम्नलिखित उपकरण Entra ID टेनेन्ट और Azure वातावरण को धीरे-धीरे (पता लगाने से बचने के लिए) या स्वचालित रूप से (समय बचाने के लिए) एन्यूमरेट करने के लिए बहुत उपयोगी होंगे:
|
|
|
|
{{#ref}}
|
|
az-enumeration-tools.md
|
|
{{#endref}}
|
|
|
|
### Bypass Access Policies
|
|
|
|
<figure><img src="../../images/image (268).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
उन मामलों में जहाँ आपके पास कुछ मान्य क्रेडेंशियल्स हैं लेकिन आप लॉगिन नहीं कर सकते, ये कुछ सामान्य सुरक्षा उपाय हैं जो लागू हो सकते हैं:
|
|
|
|
- **IP whitelisting** -- आपको एक मान्य IP से समझौता करना होगा
|
|
- **Geo restrictions** -- पता करें कि उपयोगकर्ता कहाँ रहता है या कंपनी के कार्यालय कहाँ हैं और उसी शहर (या कम से कम देश) से एक IP प्राप्त करें
|
|
- **Browser** -- शायद केवल कुछ OS (Windows, Linux, Mac, Android, iOS) से एक ब्राउज़र की अनुमति है। पता करें कि पीड़ित/कंपनी कौन सा OS उपयोग करती है।
|
|
- आप **Service Principal credentials** को भी समझौता करने की कोशिश कर सकते हैं क्योंकि ये आमतौर पर कम सीमित होते हैं और इसका लॉगिन कम समीक्षा किया जाता है
|
|
|
|
इसे बायपास करने के बाद, आप अपनी प्रारंभिक सेटअप पर वापस जाने में सक्षम हो सकते हैं और आपके पास अभी भी पहुँच होगी।
|
|
|
|
जांचें:
|
|
|
|
{{#ref}}
|
|
az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
|
|
{{#endref}}
|
|
|
|
### Whoami
|
|
|
|
> [!CAUTION]
|
|
> जानें **कैसे स्थापित करें** az cli, AzureAD और Az PowerShell [**Az - Entra ID**](az-services/az-azuread.md) अनुभाग में।
|
|
|
|
आपको जानने की आवश्यकता है कि आप **कौन हैं** (आप किस वातावरण में हैं):
|
|
|
|
{{#tabs }}
|
|
{{#tab name="az cli" }}
|
|
```bash
|
|
az account list
|
|
az account tenant list # Current tenant info
|
|
az account subscription list # Current subscription info
|
|
az ad signed-in-user show # Current signed-in user
|
|
az ad signed-in-user list-owned-objects # Get owned objects by current user
|
|
az account management-group list #Not allowed by default
|
|
```
|
|
{{#endtab }}
|
|
|
|
{{#tab name="Az" }}
|
|
```bash
|
|
# Get the information about the current context (Account, Tenant, Subscription etc.)
|
|
Get-AzContext
|
|
# List all available contexts
|
|
Get-AzContext -ListAvailable
|
|
# Enumerate subscriptions accessible by the current user
|
|
Get-AzSubscription
|
|
#Get Resource group
|
|
Get-AzResourceGroup
|
|
```
|
|
{{#endtab }}
|
|
|
|
{{#tab name="Mg" }}
|
|
```bash
|
|
#Get the current session
|
|
Get-MgContext
|
|
```
|
|
{{#endtab }}
|
|
|
|
{{#tab name="AzureAD" }}
|
|
```bash
|
|
#Get the current session state
|
|
Get-AzureADCurrentSessionInfo
|
|
#Get details of the current tenant
|
|
Get-AzureADTenantDetail
|
|
```
|
|
{{#endtab }}
|
|
{{#endtabs }}
|
|
|
|
### Entra ID Enumeration & Privesc
|
|
|
|
डिफ़ॉल्ट रूप से, किसी भी उपयोगकर्ता को **उपयोगकर्ताओं, समूहों, भूमिकाओं, सेवा प्रमुखों** जैसी चीजों को सूचीबद्ध करने के लिए **पर्याप्त अनुमतियाँ होनी चाहिए**... (चेक करें [default AzureAD permissions](az-basic-information/index.html#default-user-permissions)).\
|
|
यहाँ एक गाइड है:
|
|
|
|
{{#ref}}
|
|
az-services/az-azuread.md
|
|
{{#endref}}
|
|
|
|
**Post-Exploitation tools** की जाँच करें ताकि Entra ID में अनुमतियाँ बढ़ाने के लिए उपकरण मिल सकें जैसे **AzureHound:**
|
|
|
|
{{#ref}}
|
|
az-enumeration-tools.md#automated-post-exploitation-tools
|
|
{{#endref}}
|
|
|
|
### Azure Enumeration
|
|
|
|
एक बार जब आप जान लेते हैं कि आप कौन हैं, तो आप **Azure सेवाओं की सूची बनाना शुरू कर सकते हैं जिन तक आपकी पहुँच है**।
|
|
|
|
आपको यह पता लगाना चाहिए कि आपके पास संसाधनों पर **क्या अनुमतियाँ हैं**। इसके लिए:
|
|
|
|
1. **उस संसाधन को खोजें जिसके लिए आपके पास कुछ पहुँच है**:
|
|
|
|
Az PoswerShell कमांड **`Get-AzResource`** आपको **जानकारी देता है कि आपके वर्तमान उपयोगकर्ता के पास किन संसाधनों पर दृश्यता है**।
|
|
|
|
इसके अलावा, आप **वेब कंसोल** में वही जानकारी प्राप्त कर सकते हैं [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) पर जाकर या "All resources" खोजकर या निष्पादित करके:
|
|
```bash
|
|
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`** का उपयोग **सदस्यता में सभी भूमिकाओं को सूचीबद्ध करने** या एक विशिष्ट संसाधन पर अनुमति को इंगित करने के लिए किया जा सकता है जैसे:
|
|
```bash
|
|
Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4
|
|
```
|
|
यह जानकारी प्राप्त करना भी संभव है:
|
|
```bash
|
|
az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"
|
|
```
|
|
जैसे कि:
|
|
```bash
|
|
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"
|
|
```
|
|
एक और विकल्प है कि आप azure में आपके साथ जुड़े रोल प्राप्त करें:
|
|
```bash
|
|
az role assignment list --assignee "<email>" --all --output table
|
|
```
|
|
या निम्नलिखित चलाने पर (यदि परिणाम खाली हैं, तो इसका कारण यह हो सकता है कि आपके पास उन्हें प्राप्त करने की अनुमति नहीं है):
|
|
```bash
|
|
az rest --method GET --uri 'https://management.azure.com/subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter=principalId eq '<user-id>'
|
|
```
|
|
3. **आपसे जुड़े भूमिकाओं की सूक्ष्म अनुमतियों को खोजें**:
|
|
|
|
फिर, सूक्ष्म अनुमति प्राप्त करने के लिए आप **`(Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions`** चला सकते हैं।
|
|
|
|
या सीधे API को कॉल करें:
|
|
```bash
|
|
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/
|
|
{{#endref}}
|
|
|
|
### विशेषाधिकार वृद्धि, पोस्ट-एक्सप्लॉइटेशन और स्थिरता
|
|
|
|
एक बार जब आप जान लेते हैं कि Azure वातावरण कैसे संरचित है और कौन सी सेवाएँ उपयोग की जा रही हैं, तो आप **विशेषाधिकार बढ़ाने, पार्श्व रूप से स्थानांतरित करने, अन्य पोस्ट-एक्सप्लॉइटेशन हमले करने और स्थिरता बनाए रखने** के तरीकों की तलाश शुरू कर सकते हैं।
|
|
|
|
इस अनुभाग में आप सबसे सामान्य Azure सेवाओं में विशेषाधिकार बढ़ाने के बारे में जानकारी पा सकते हैं:
|
|
|
|
{{#ref}}
|
|
az-privilege-escalation/
|
|
{{#endref}}
|
|
|
|
अगले में आप सबसे सामान्य Azure सेवाओं में पोस्ट-एक्सप्लॉइटेशन हमले करने के बारे में जानकारी पा सकते हैं:
|
|
|
|
{{#ref}}
|
|
az-post-exploitation/
|
|
{{#endref}}
|
|
|
|
अगले में आप सबसे सामान्य Azure सेवाओं में स्थिरता बनाए रखने के बारे में जानकारी पा सकते हैं:
|
|
|
|
{{#ref}}
|
|
az-persistence/
|
|
{{#endref}}
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|