mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-02 15:59:58 -08:00
Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# Az - Container Instances
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Basic Information
|
||||
|
||||
Azure Container Instances (ACI) एक **सर्वरलेस, ऑन-डिमांड तरीका** प्रदान करते हैं **कंटेनरों** को Azure क्लाउड में चलाने के लिए। आप **एकल** या **कई कंटेनरों** को एक समूह में **स्केलेबल कंप्यूट**, **नेटवर्किंग विकल्पों**, और **अन्य Azure सेवाओं** (जैसे Storage, Virtual Networks, या Container Registries) से कनेक्ट करने की लचीलापन के साथ **डिप्लॉय** कर सकते हैं।
|
||||
|
||||
चूंकि ये **एपhemerल** वर्कलोड हैं, आपको अंतर्निहित VM इन्फ्रास्ट्रक्चर का प्रबंधन करने की आवश्यकता नहीं है — Azure यह आपके लिए संभालता है। हालाँकि, **आक्रामक सुरक्षा दृष्टिकोण** से, यह समझना महत्वपूर्ण है कि **अनुमतियाँ**, **पहचानें**, **नेटवर्क कॉन्फ़िगरेशन**, और **लॉग** कैसे हमले की सतहों और संभावित गलत कॉन्फ़िगरेशन को प्रकट कर सकते हैं।
|
||||
|
||||
### Configurations
|
||||
|
||||
- एक कंटेनर बनाने के लिए एक सार्वजनिक इमेज, Azure Container Registry से एक कंटेनर इमेज या एक बाहरी रिपॉजिटरी का उपयोग करना संभव है, जिसे एक्सेस करने के लिए **पासवर्ड कॉन्फ़िगर करने की आवश्यकता** हो सकती है।
|
||||
- नेटवर्किंग के संबंध में, इसमें **सार्वजनिक IP** हो सकता है या **निजी एंडपॉइंट्स** हो सकते हैं।
|
||||
- सामान्य डॉकर सेटिंग्स को कॉन्फ़िगर करना भी संभव है जैसे:
|
||||
- **पर्यावरण चर**
|
||||
- **वॉल्यूम** (यहां तक कि Azure Files से)
|
||||
- **पोर्ट्स**
|
||||
- **CPU और मेमोरी सीमाएँ**
|
||||
- **रीस्टार्ट नीति**
|
||||
- **विशेषाधिकार प्राप्त के रूप में चलाएँ**
|
||||
- **चलाने के लिए कमांड लाइन**
|
||||
- ...
|
||||
|
||||
## Enumeration
|
||||
|
||||
> [!WARNING]
|
||||
> ACI की गणना करते समय, आप संवेदनशील कॉन्फ़िगरेशन जैसे **पर्यावरण चर**, **नेटवर्क विवरण**, या **प्रबंधित पहचान** प्रकट कर सकते हैं। इन्हें लॉग करने या प्रदर्शित करने में सावधानी बरतें।
|
||||
```bash
|
||||
# List all container instances in the subscription
|
||||
az container list
|
||||
|
||||
# Show detailed information about a specific container instance
|
||||
az container show --name <container-name> --resource-group <res-group>
|
||||
|
||||
# Fetch logs from a container
|
||||
az container logs --name <container-name> --resource-group <res-group>
|
||||
|
||||
# Execute a command in a running container and get the output
|
||||
az container exec --name <container-name> --resource-group <res-group> --exec-command "ls"
|
||||
|
||||
# Get yaml configuration of the container group
|
||||
az container export --name <container-name> --resource-group <res-group>
|
||||
```
|
||||
|
||||
@@ -0,0 +1,157 @@
|
||||
# Az - Container Registry
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Basic Information
|
||||
|
||||
Azure Container Registry (ACR) एक सुरक्षित, निजी रजिस्ट्री है जो आपको **Azure क्लाउड में कंटेनर इमेज को स्टोर, प्रबंधित और एक्सेस करने** की अनुमति देती है। यह कई Azure सेवाओं के साथ सहजता से एकीकृत होती है, जो बड़े पैमाने पर स्वचालित निर्माण और तैनाती कार्यप्रवाह प्रदान करती है। भू-प्रतिकृति और भेद्यता स्कैनिंग जैसी सुविधाओं के साथ, ACR कंटेनराइज्ड अनुप्रयोगों के लिए उद्यम-ग्रेड सुरक्षा और अनुपालन सुनिश्चित करने में मदद करता है।
|
||||
|
||||
### Permissions
|
||||
|
||||
ये हैं **विभिन्न अनुमतियाँ** [according to the docs](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli#access-resource-manager) जो एक Container Registry पर दी जा सकती हैं:
|
||||
|
||||
- Access Resource Manager
|
||||
- Create/delete registry
|
||||
- Push image
|
||||
- Pull image
|
||||
- Delete image data
|
||||
- Change policies
|
||||
- Sign images
|
||||
|
||||
कुछ **बिल्ट-इन भूमिकाएँ** भी हैं जिन्हें सौंपा जा सकता है, और **कस्टम भूमिकाएँ** बनाना भी संभव है।
|
||||
|
||||

|
||||
|
||||
### Authentication
|
||||
|
||||
> [!WARNING]
|
||||
> यह बहुत महत्वपूर्ण है कि भले ही रजिस्ट्री नाम में कुछ बड़े अक्षर हों, आपको हमेशा **छोटे अक्षरों** का उपयोग करके लॉगिन, इमेज पुश और पुल करना चाहिए।
|
||||
|
||||
ACR में प्रमाणित होने के 4 तरीके हैं:
|
||||
|
||||
- **Entra ID के साथ**: यह ACR में प्रमाणित होने का **डिफ़ॉल्ट** तरीका है। यह ACR में प्रमाणित होने के लिए **`az acr login`** कमांड का उपयोग करता है। यह कमांड **`~/.docker/config.json`** फ़ाइल में **क्रेडेंशियल्स** को **स्टोर** करेगा। इसके अलावा, यदि आप इस कमांड को ऐसे वातावरण से चला रहे हैं जिसमें डॉकर सॉकेट तक पहुंच नहीं है जैसे कि **क्लाउड शेल** में, तो ACR में प्रमाणित होने के लिए **`--expose-token`** ध्वज का उपयोग करके **टोकन** प्राप्त करना संभव है। फिर प्रमाणित होने के लिए आपको उपयोगकर्ता नाम के रूप में `00000000-0000-0000-0000-000000000000` का उपयोग करना होगा जैसे: `docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN`
|
||||
- **एक प्रशासनिक खाते के साथ**: प्रशासनिक उपयोगकर्ता डिफ़ॉल्ट रूप से अक्षम होता है लेकिन इसे सक्षम किया जा सकता है और फिर रजिस्ट्री तक पहुंच प्राप्त करना संभव होगा प्रशासनिक खाते के **उपयोगकर्ता नाम** और **पासवर्ड** के साथ जिसमें रजिस्ट्री के लिए पूर्ण अनुमतियाँ होती हैं। यह अभी भी समर्थित है क्योंकि कुछ Azure सेवाएँ इसका उपयोग करती हैं। ध्यान दें कि इस उपयोगकर्ता के लिए **2 पासवर्ड** बनाए जाते हैं और दोनों मान्य होते हैं। आप इसे `az acr update -n <acrName> --admin-enabled true` के साथ सक्षम कर सकते हैं। ध्यान दें कि उपयोगकर्ता नाम आमतौर पर रजिस्ट्री का नाम होता है (और `admin` नहीं)।
|
||||
- **एक टोकन के साथ**: रजिस्ट्री तक पहुंच के लिए एक **विशिष्ट `scope map`** (अनुमतियाँ) के साथ एक **टोकन** बनाना संभव है। फिर, इस टोकन नाम का उपयोग उपयोगकर्ता नाम के रूप में और रजिस्ट्री में प्रमाणित होने के लिए कुछ उत्पन्न पासवर्ड का उपयोग करना संभव है `docker login -u <registry-name> -p <password> aregistry-url>`
|
||||
- **एक सेवा प्रमुख के साथ**: एक **सेवा प्रमुख** बनाना और इमेज खींचने के लिए **`AcrPull`** जैसी भूमिका सौंपना संभव है। फिर, यह SP appId को उपयोगकर्ता नाम के रूप में और एक उत्पन्न गुप्त को पासवर्ड के रूप में उपयोग करके **रजिस्ट्री में लॉगिन** करना संभव होगा।
|
||||
|
||||
रजिस्ट्री पर पहुंच के लिए SP उत्पन्न करने के लिए [docs](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-auth-service-principal) से उदाहरण स्क्रिप्ट:
|
||||
```bash
|
||||
#!/bin/bash
|
||||
ACR_NAME=$containerRegistry
|
||||
SERVICE_PRINCIPAL_NAME=$servicePrincipal
|
||||
|
||||
# Obtain the full registry ID
|
||||
ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query "id" --output tsv)
|
||||
|
||||
PASSWORD=$(az ad sp create-for-rbac --name $SERVICE_PRINCIPAL_NAME --scopes $ACR_REGISTRY_ID --role acrpull --query "password" --output tsv)
|
||||
USER_NAME=$(az ad sp list --display-name $SERVICE_PRINCIPAL_NAME --query "[].appId" --output tsv)
|
||||
|
||||
echo "Service principal ID: $USER_NAME"
|
||||
echo "Service principal password: $PASSWORD"
|
||||
```
|
||||
### Encryption
|
||||
|
||||
केवल **Premium SKU** **encryption at rest** के लिए **images** और अन्य artifacts का समर्थन करता है।
|
||||
|
||||
### Networking
|
||||
|
||||
केवल **Premium SKU** **private endpoints** का समर्थन करता है। अन्य केवल **public access** का समर्थन करते हैं। एक सार्वजनिक endpoint का प्रारूप `<registry-name>.azurecr.io` है और एक निजी endpoint का प्रारूप `<registry-name>.privatelink.azurecr.io` है। इस कारण से, registry का नाम Azure में सभी के बीच अद्वितीय होना चाहिए।
|
||||
|
||||
### Microsoft Defender for Cloud
|
||||
|
||||
यह आपको registry में **images** को **vulnerabilities** के लिए **scan** करने की अनुमति देता है।
|
||||
|
||||
### Soft-delete
|
||||
|
||||
**soft-delete** सुविधा आपको निर्दिष्ट संख्या के दिनों के भीतर **deleted registry** को **recover** करने की अनुमति देती है। यह सुविधा **disabled by default** है।
|
||||
|
||||
### Webhooks
|
||||
|
||||
यह registry के अंदर **webhooks** **create** करना संभव है। इस webhook में उस URL को निर्दिष्ट करना आवश्यक है जहाँ एक **request भेजी जाएगी जब भी एक push या delete action किया जाता है**। इसके अलावा, Webhooks एक scope को इंगित कर सकते हैं ताकि उन repositories (images) को इंगित किया जा सके जो प्रभावित होंगी। उदाहरण के लिए, 'foo:*' का अर्थ है repository 'foo' के तहत घटनाएँ।
|
||||
|
||||
एक हमलावर के दृष्टिकोण से, registry में किसी भी कार्रवाई करने से पहले इसे जांचना दिलचस्प है, और यदि आवश्यक हो तो इसे अस्थायी रूप से हटा देना चाहिए, ताकि पता न चले।
|
||||
|
||||
### Connected registries
|
||||
|
||||
यह मूल रूप से एक registry से दूसरी registry में **images** को **mirror** करने की अनुमति देता है, जो आमतौर पर ऑन-प्रिमाइसेस स्थित होती है।
|
||||
|
||||
इसके 2 मोड हैं: **ReadOnly** और **ReadWrite**। पहले में, images केवल **pulled** की जाती हैं स्रोत registry से, और दूसरे में, images को स्रोत registry में भी **pushed** किया जा सकता है।
|
||||
|
||||
Azure से registry तक पहुँचने के लिए, एक **token** उत्पन्न होता है जब connected registry का उपयोग किया जाता है।
|
||||
|
||||
### Runs & Tasks
|
||||
|
||||
Runs & Tasks Azure में container से संबंधित क्रियाएँ निष्पादित करने की अनुमति देता है जो आपको आमतौर पर स्थानीय रूप से या CI/CD pipeline में करने की आवश्यकता होती है। उदाहरण के लिए, आप registry में **build, push, और run images** कर सकते हैं।
|
||||
|
||||
एक container को build और run करने का सबसे आसान तरीका एक नियमित Run का उपयोग करना है:
|
||||
```bash
|
||||
# Build
|
||||
echo "FROM mcr.microsoft.com/hello-world" > Dockerfile
|
||||
az acr build --image sample/hello-world:v1 --registry mycontainerregistry008 --file Dockerfile .
|
||||
|
||||
# Run
|
||||
az acr run --registry mycontainerregistry008 --cmd '$Registry/sample/hello-world:v1' /dev/null
|
||||
```
|
||||
हालांकि, यह ऐसे रन को ट्रिगर करेगा जो हमलावर के दृष्टिकोण से बहुत दिलचस्प नहीं हैं क्योंकि उनके साथ कोई प्रबंधित पहचान संलग्न नहीं है।
|
||||
|
||||
हालांकि, **tasks** के साथ **system और user managed identity** संलग्न हो सकते हैं। ये tasks वे हैं जो कंटेनर में **privileges को बढ़ाने** के लिए उपयोगी हैं। प्रिविलेज़ एस्कलेशन सेक्शन में यह देखना संभव है कि प्रिविलेज़ को बढ़ाने के लिए tasks का उपयोग कैसे किया जाए।
|
||||
|
||||
### Cache
|
||||
|
||||
कैश फीचर **एक बाहरी रिपॉजिटरी से इमेज डाउनलोड करने** और नए संस्करणों को रजिस्ट्री में स्टोर करने की अनुमति देता है। इसके लिए Azure Vault से क्रेडेंशियल्स का चयन करके कुछ **credentials configured** होना आवश्यक है।
|
||||
|
||||
यह हमलावर के दृष्टिकोण से बहुत दिलचस्प है क्योंकि यह **एक बाहरी प्लेटफॉर्म पर पिवट करने** की अनुमति देता है यदि हमलावर के पास क्रेडेंशियल्स तक पहुंचने के लिए पर्याप्त अनुमतियाँ हैं, **एक बाहरी रिपॉजिटरी से इमेज डाउनलोड करने** और कैश को कॉन्फ़िगर करना **persistency mechanism** के रूप में भी उपयोग किया जा सकता है।
|
||||
|
||||
## Enumeration
|
||||
|
||||
> [!WARNING]
|
||||
> यह बहुत महत्वपूर्ण है कि भले ही रजिस्ट्री नाम में कुछ बड़े अक्षर हों, आपको इसे एक्सेस करने के लिए URL में केवल छोटे अक्षर ही उपयोग करने चाहिए।
|
||||
```bash
|
||||
# List of all the registries
|
||||
# Check the network, managed identities, adminUserEnabled, softDeletePolicy, url...
|
||||
az acr list
|
||||
|
||||
# Get the details of a registry
|
||||
az acr show --name <registry-name>
|
||||
|
||||
# List tokens of a registry
|
||||
az acr token list --registry <registry-name> --resource-group <res-group>
|
||||
|
||||
# List repositories in a registry
|
||||
az acr repository list --name <registry-name> --resource-group <res-group>
|
||||
|
||||
# List the tags of a repository
|
||||
az acr repository show-tags --repository <repository-name> --name <registry-name> --resource-group <res-group>
|
||||
|
||||
# List deleted repository tags
|
||||
## At the time of this writing there isn't yet any command to restore it
|
||||
az acr repository list-deleted --name <registry-name>
|
||||
|
||||
# List tasks
|
||||
## Check the git URL or the command
|
||||
az acr task list --registry <registry-name>
|
||||
|
||||
# List tasks runs
|
||||
az acr task list-runs --registry <registry-name>
|
||||
|
||||
# List connected registries
|
||||
az acr connected-registry list --registry <registry-name>
|
||||
|
||||
# List cache
|
||||
az acr cache list --registry <registry-name>
|
||||
|
||||
# Get cache details
|
||||
az acr cache show --name <cache-name> --registry <registry-name>
|
||||
```
|
||||
## विशेषाधिकार वृद्धि और पोस्ट एक्सप्लॉइटेशन
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-automation-accounts-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## संदर्भ
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/container-registry/container-registry-authentication?tabs=azure-cli](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-authentication?tabs=azure-cli)
|
||||
- [https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli#access-resource-manager](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli#access-resource-manager)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
Reference in New Issue
Block a user