diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md index b7fe9c59d..b6fb5fa5e 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md @@ -1,27 +1,59 @@ -# Az - Dynamische Gruppen Privesc +# Az - Dynamic Groups Privesc {{#include ../../../../banners/hacktricks-training.md}} -## Grundinformationen +## Basic Information -**Dynamische Gruppen** sind Gruppen, die eine Reihe von **Regeln** konfiguriert haben, und alle **Benutzer oder Geräte**, die den Regeln entsprechen, werden der Gruppe hinzugefügt. Jedes Mal, wenn ein **Attribut** eines Benutzers oder Geräts **geändert** wird, werden die dynamischen Regeln **erneut überprüft**. Und wenn eine **neue Regel** **erstellt** wird, werden alle Geräte und Benutzer **überprüft**. +**Dynamische Gruppen** sind Gruppen, die eine Menge von **Regeln** konfiguriert haben und alle **Benutzer oder Geräte**, die den Regeln entsprechen, werden der Gruppe hinzugefügt. Jedes Mal, wenn ein Benutzer- oder Geräte-**Attribut** **geändert** wird, werden die dynamischen Regeln **neu überprüft**. Und wenn eine **neue Regel** **erstellt** wird, werden alle Geräte und Benutzer **überprüft**. -Dynamische Gruppen können **Azure RBAC-Rollen** zugewiesen werden, aber es ist **nicht möglich**, **AzureAD-Rollen** zu dynamischen Gruppen hinzuzufügen. +Dynamische Gruppen können **Azure RBAC roles assigned** haben, aber es ist **nicht möglich**, **AzureAD roles** zu dynamischen Gruppen hinzuzufügen. -Diese Funktion erfordert eine Azure AD Premium P1-Lizenz. +Diese Funktion erfordert eine Azure AD premium P1 license. ## Privesc -Beachten Sie, dass standardmäßig jeder Benutzer Gäste in Azure AD einladen kann. Wenn also eine dynamische Gruppen-**regel** **Berechtigungen** für Benutzer basierend auf **Attributen** gewährt, die in einem neuen **Gast** **festgelegt** werden können, ist es möglich, einen Gast mit diesen Attributen zu **erstellen** und die **Berechtigungen zu eskalieren**. Es ist auch möglich, dass ein Gast sein eigenes Profil verwaltet und diese Attribute ändert. +Beachte, dass standardmäßig jeder Benutzer Gäste in Azure AD einladen kann. Wenn also eine dynamische Gruppen-**Regel** **Berechtigungen** für Benutzer basierend auf **Attributen** vergibt, die in einem neuen **Gast** **gesetzt** werden können, ist es möglich, **einen Gast zu erstellen** mit diesen Attributen und **Privilegien zu eskalieren**. Ein Gast kann außerdem sein eigenes Profil verwalten und diese Attribute ändern. -Holen Sie sich Gruppen, die dynamische Mitgliedschaften erlauben: **`az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table`** +Gruppen abrufen, die dynamische Mitgliedschaft erlauben: **`az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table`** +### Dynamic Groups Enumeration + +Regeln einer dynamischen Gruppe abrufen: + +Mit **Azure CLI**: +```bash +az ad group list \ +--filter "groupTypes/any(c:c eq 'DynamicMembership')" \ +--query "[].{displayName:displayName, rule:membershipRule}" \ +-o table +``` +Mit **PowerShell** und **Microsoft Graph SDK**: +```bash +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 ''" ` +-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 +``` ### Beispiel - **Regelbeispiel**: `(user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest")` -- **Regelbeschreibung**: Jeder Gastbenutzer mit einer sekundären E-Mail, die den String 'security' enthält, wird der Gruppe hinzugefügt. +- **Regelbeschreibung**: Jeder Gastbenutzer mit einer sekundären E-Mail, die die Zeichenfolge 'security' enthält, wird der Gruppe hinzugefügt -Für die E-Mail des Gastbenutzers, akzeptieren Sie die Einladung und überprüfen Sie die aktuellen Einstellungen **dieses Benutzers** in [https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView](https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView).\ +Für die E-Mail des Gastbenutzers, akzeptiere die Einladung und überprüfe die aktuellen Einstellungen **dieses Benutzers** in [https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView](https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView).\ Leider erlaubt die Seite nicht, die Attributwerte zu ändern, daher müssen wir die API verwenden: ```bash # Login with the gust user