Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation

This commit is contained in:
Translator
2025-02-25 21:58:20 +00:00
parent 1c2c8fca19
commit 03fb05eec8
3 changed files with 138 additions and 1 deletions

View File

@@ -431,6 +431,7 @@
- [Az - Static Web Applications](pentesting-cloud/azure-security/az-services/az-static-web-apps.md)
- [Az - Storage Accounts & Blobs](pentesting-cloud/azure-security/az-services/az-storage.md)
- [Az - Table Storage](pentesting-cloud/azure-security/az-services/az-table-storage.md)
- [Az - Virtual Desktop](pentesting-cloud/azure-security/az-services/az-virtual-desktop.md)
- [Az - Virtual Machines & Network](pentesting-cloud/azure-security/az-services/vms/README.md)
- [Az - Azure Network](pentesting-cloud/azure-security/az-services/vms/az-azure-network.md)
- [Az - Permissions for a Pentest](pentesting-cloud/azure-security/az-permissions-for-a-pentest.md)
@@ -485,11 +486,13 @@
- [Az - Static Web App Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md)
- [Az - Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md)
- [Az - SQL Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md)
- [Az - Virtual Desktop Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-desktop-privesc.md)
- [Az - Virtual Machines & Network Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md)
- [Az - Persistence](pentesting-cloud/azure-security/az-persistence/README.md)
- [Az - Automation Accounts Persistence](pentesting-cloud/azure-security/az-persistence/az-automation-accounts-persistence.md)
- [Az - Cloud Shell Persistence](pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md)
- [Az - Queue SQL Persistence](pentesting-cloud/azure-security/az-persistence/az-sql-persistence.md)
- [Az - Logic Apps Persistence](pentesting-cloud/azure-security/az-persistence/az-logic-apps-persistence.md)
- [Az - SQL Persistence](pentesting-cloud/azure-security/az-persistence/az-sql-persistence.md)
- [Az - Queue Storage Persistence](pentesting-cloud/azure-security/az-persistence/az-queue-persistence.md)
- [Az - VMs Persistence](pentesting-cloud/azure-security/az-persistence/az-vms-persistence.md)
- [Az - Storage Persistence](pentesting-cloud/azure-security/az-persistence/az-storage-persistence.md)

View File

@@ -0,0 +1,33 @@
# Az - Virtual Desktop Privesx
{{#include ../../../banners/hacktricks-training.md}}
## Azure Virtual Desktop Privesc
### `Microsoft.DesktopVirtualization/hostPools/retrieveRegistrationToken/action`
호스트 풀 내에서 가상 머신을 등록하는 데 사용되는 등록 토큰을 검색할 수 있습니다.
```bash
az desktopvirtualization hostpool retrieve-registration-token -n testhostpool -g Resource_Group_1
```
### ("Microsoft.Authorization/roleAssignments/read", "Microsoft.Authorization/roleAssignments/write") && ("Microsoft.Compute/virtualMachines/read","Microsoft.Compute/virtualMachines/write","Microsoft.Compute/virtualMachines/extensions/read","Microsoft.Compute/virtualMachines/extensions/write")
이 권한을 사용하면 가상 데스크톱의 가상 머신에 접근하는 데 필요한 애플리케이션 그룹에 사용자 할당을 추가할 수 있습니다.
```bash
az rest --method PUT \
--uri "https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.DesktopVirtualization/applicationGroups/<APP_GROUP_NAME>/providers/Microsoft.Authorization/roleAssignments/<NEW_ROLE_ASSIGNMENT_GUID>?api-version=2022-04-01" \
--body '{
"properties": {
"roleDefinitionId": "/subscriptions/<SUBSCRIPTION_ID>/providers/Microsoft.Authorization/roleDefinitions/1d18fff3-a72a-46b5-b4a9-0b38a3cd7e63",
"principalId": "<USER_OBJECT_ID>"
}
}'
```
또한 가상 머신 사용자와 비밀번호를 변경하여 접근할 수 있습니다.
```bash
az vm user update \
--resource-group <RESOURCE_GROUP_NAME> \
--name <VM_NAME> \
--username <USERNAME> \
--password <NEW_PASSWORD>
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -0,0 +1,101 @@
# Az - Virtual Desktop
{{#include ../../../banners/hacktricks-training.md}}
## Azure Virtual Desktop
Virtual Desktop는 **데스크탑 및 앱 가상화 서비스**입니다. 이를 통해 Windows 11, Windows 10 또는 Windows Server를 포함한 전체 Windows 데스크탑을 개별 데스크탑 또는 개별 애플리케이션을 통해 원격으로 사용자에게 제공할 수 있습니다. 개인 사용을 위한 단일 세션 설정과 다중 세션 환경을 지원합니다. 사용자는 기본 앱이나 웹 브라우저를 사용하여 사실상 모든 장치에서 연결할 수 있습니다.
### Host Pools
Azure Virtual Desktop의 호스트 풀은 세션 호스트로 구성된 Azure 가상 머신의 모음으로, 사용자에게 가상 데스크탑과 앱을 제공합니다. 두 가지 주요 유형이 있습니다:
- **개인 호스트 풀**: 각 가상 머신이 단일 사용자에게 전용으로 할당되며, 각자의 환경을 가집니다.
- **풀 호스트 풀**: 여러 사용자가 사용 가능한 세션 호스트에서 리소스를 공유합니다. 구성 가능한 세션 한도가 있으며, 세션 호스트 구성은 Azure Virtual Desktop이 구성에 따라 세션 호스트 생성을 자동화할 수 있게 합니다.
모든 호스트 풀에는 **등록 토큰**이 있으며, 이는 호스트 풀 내에서 가상 머신을 등록하는 데 사용됩니다.
### Application groups & Workspace
애플리케이션 그룹은 **사용자 액세스**를 호스트 풀 내의 세션 호스트에서 사용할 수 있는 전체 데스크탑 또는 특정 애플리케이션 세트로 제어합니다. 두 가지 유형이 있습니다:
- **데스크탑 애플리케이션 그룹**: 사용자가 전체 Windows 데스크탑에 접근할 수 있도록 합니다(개인 및 풀 호스트 풀 모두에서 사용 가능).
- **RemoteApp 그룹**: 사용자가 개별 게시 애플리케이션에 접근할 수 있도록 합니다(풀 호스트 풀에서만 사용 가능).
호스트 풀은 하나의 데스크탑 애플리케이션 그룹을 가질 수 있지만 여러 RemoteApp 그룹을 가질 수 있습니다. 사용자는 서로 다른 호스트 풀에서 여러 애플리케이션 그룹에 할당될 수 있습니다. 사용자가 동일한 호스트 풀 내에서 데스크탑 및 RemoteApp 그룹 모두에 할당된 경우, 관리자가 설정한 기본 그룹 유형의 리소스만 볼 수 있습니다.
**워크스페이스**는 **애플리케이션 그룹의 모음**으로, 사용자가 할당된 데스크탑 및 애플리케이션 그룹에 접근할 수 있도록 합니다. 각 애플리케이션 그룹은 워크스페이스에 연결되어야 하며, 한 번에 하나의 워크스페이스에만 속할 수 있습니다.
### Key Features
- **유연한 VM 생성**: Azure 가상 머신을 직접 생성하거나 나중에 Azure Local 가상 머신을 추가합니다.
- **보안 기능**: 고급 VM 보안을 위해 신뢰할 수 있는 시작(보안 부팅, vTPM, 무결성 모니터링)을 활성화합니다(가상 네트워크 필요). Azure Firewall과 통합하고 네트워크 보안 그룹을 통해 트래픽을 제어할 수 있습니다.
- **도메인 가입**: 사용자 정의 가능한 구성으로 Active Directory 도메인 가입을 지원합니다.
- **진단 및 모니터링**: 진단 설정을 활성화하여 로그 및 메트릭을 Log Analytics, 스토리지 계정 또는 이벤트 허브로 스트리밍하여 모니터링합니다.
- **사용자 정의 이미지 템플릿**: 세션 호스트를 추가할 때 사용할 수 있도록 생성하고 관리합니다. 일반적인 사용자 정의 또는 자체 사용자 정의 스크립트를 쉽게 추가할 수 있습니다.
- **워크스페이스 등록**: 새 또는 기존 워크스페이스에 기본 데스크탑 애플리케이션 그룹을 쉽게 등록하여 사용자 액세스 관리를 간소화합니다.
### Enumeration
```bash
az extension add --name desktopvirtualization
# List HostPool of a Resource group
az desktopvirtualization hostpool list --resource-group <Resource_Group>
# List Application Groups
az desktopvirtualization applicationgroup list --resource-group <Resource_Group>
# List Application Groups By Subscription
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.DesktopVirtualization/applicationGroups?api-version=2024-04-03"
# List Applications in a Application Group
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/applicationGroups/{applicationGroupName}/applications?api-version=2024-04-03"
# List Assigned Users to the Application Group
az rest \
--method GET \
--url "https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.DesktopVirtualization/applicationGroups/<APP_GROUP_NAME>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" \
| jq '.value[] | select((.properties.scope | ascii_downcase) == "/subscriptions/<subscription_id_in_lowercase>/resourcegroups/<resource_group_name_in_lowercase>/providers/microsoft.desktopvirtualization/applicationgroups/<app_group_name_in_lowercase>")'
# List Workspace in a resource group
az desktopvirtualization workspace list --resource-group <Resource_Group>
# List Workspace in a subscription
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.DesktopVirtualization/workspaces?api-version=2024-04-03"
# List App Attach Package By Resource Group
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/appAttachPackages?api-version=2024-04-03"
# List App Attach Package By Subscription
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.DesktopVirtualization/appAttachPackages?api-version=2024-04-03"
# List Desktops
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/applicationGroups/{applicationGroupName}/desktops?api-version=2024-04-03"
# List MSIX Packages
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/msixPackages?api-version=2024-04-03"
# List private endpoint connections associated with hostpool.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/privateEndpointConnections?api-version=2024-04-03"
# List private endpoint connections associated By Workspace.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/workspaces/{workspaceName}/privateEndpointConnections?api-version=2024-04-03"
# List the private link resources available for a hostpool.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/privateLinkResources?api-version=2024-04-03"
# List the private link resources available for this workspace.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/workspaces/{workspaceName}/privateLinkResources?api-version=2024-04-03"
# List sessionHosts/virtual machines.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/sessionHosts?api-version=2024-04-03"
# List start menu items in the given application group.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/applicationGroups/{applicationGroupName}/startMenuItems?api-version=2024-04-03"
# List userSessions.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/sessionHosts/{sessionHostName}/userSessions?api-version=2024-04-03"
# List userSessions By Host Pool
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/userSessions?api-version=2024-04-03"
```
### 연결
웹을 통해 가상 데스크톱에 연결하려면 https://client.wvd.microsoft.com/arm/webclient/ (가장 일반적) 또는 https://client.wvd.microsoft.com/webclient/index.html (클래식)을 통해 접근할 수 있습니다. 다른 방법은 여기에서 설명되어 있습니다 [https://learn.microsoft.com/en-us/azure/virtual-desktop/users/connect-remote-desktop-client?tabs=windows](https://learn.microsoft.com/en-us/azure/virtual-desktop/users/connect-remote-desktop-client?tabs=windows)
## 권한 상승
{{#ref}}
../az-privilege-escalation/az-virtual-desktop-privesc.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}