Az - Dynamic Groups Privesc

Tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

बुनियादी जानकारी

Dynamic groups ऐसे समूह हैं जिनमें एक सेट rules configured होते हैं और सभी users or devices जो उन rules से match करते हैं, समूह में जोड़ दिए जाते हैं। हर बार जब किसी user या device का attribute changed होता है, तो dynamic rules को rechecked किया जाता है। और जब कोई new rule created होता है तो सभी devices और users को checked किया जाता है।

Dynamic groups में Azure RBAC roles assigned किए जा सकते हैं, लेकिन dynamic groups में AzureAD roles जोड़ना संभव नहीं है।

इस फीचर के लिए Azure AD premium P1 license की आवश्यकता होती है।

Privesc

ध्यान दें कि डिफ़ॉल्ट रूप से किसी भी user को Azure AD में guests invite करने की अनुमति होती है, इसलिए यदि कोई dynamic group rule ऐसे permissions देता है जो उन attributes के आधार पर users को मिलते हैं जिन्हें एक नए guest में सेट किया जा सकता है, तो उन attributes के साथ एक guest create करके privileges escalate करना संभव है। यह भी संभव है कि एक guest अपना प्रोफ़ाइल manage करके इन attributes को बदल सके।

Dynamic membership की अनुमति देने वाले groups प्राप्त करें: az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table

Dynamic Groups सूचीकरण

किसी dynamic group के rules प्राप्त करें:

With Azure CLI:

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

PowerShell और Microsoft Graph SDK के साथ:

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

उदाहरण

  • Rule example: (user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest")
  • Rule description: किसी भी Guest उपयोगकर्ता जिसकी द्वितीयक ईमेल में ‘security’ स्ट्रिंग हो, उसे समूह में जोड़ा जाएगा

Guest उपयोगकर्ता ईमेल के लिए, निमंत्रण स्वीकार करें और https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView.
दुर्भाग्यवश यह पेज attribute मानों को संशोधित करने की अनुमति नहीं देता, इसलिए हमें API का उपयोग करना होगा:

# 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"

संदर्भ

Tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें