From 5c3192b4711cf92af13c70716d1552780dfaa248 Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 25 Feb 2025 21:58:09 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation --- src/SUMMARY.md | 5 +- .../az-virtual-desktop-privesc.md | 33 ++++++ .../az-services/az-virtual-desktop.md | 102 ++++++++++++++++++ 3 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-desktop-privesc.md create mode 100644 src/pentesting-cloud/azure-security/az-services/az-virtual-desktop.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index c9736abf4..17ab8f63d 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -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) diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-desktop-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-desktop-privesc.md new file mode 100644 index 000000000..caee86689 --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-desktop-privesc.md @@ -0,0 +1,33 @@ +# Az - Virtual Desktop Privesc + +{{#include ../../../banners/hacktricks-training.md}} + +## Azure Virtual Desktop Privesc + +### `Microsoft.DesktopVirtualization/hostPools/retrieveRegistrationToken/action` +Możesz pobrać token rejestracyjny używany do rejestrowania maszyn wirtualnych w obrębie puli hostów. +```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") + +Dzięki tym uprawnieniom możesz dodać przypisanie użytkownika do grupy aplikacji, co jest potrzebne do uzyskania dostępu do maszyny wirtualnej wirtualnego pulpitu. +```bash +az rest --method PUT \ +--uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.DesktopVirtualization/applicationGroups//providers/Microsoft.Authorization/roleAssignments/?api-version=2022-04-01" \ +--body '{ +"properties": { +"roleDefinitionId": "/subscriptions//providers/Microsoft.Authorization/roleDefinitions/1d18fff3-a72a-46b5-b4a9-0b38a3cd7e63", +"principalId": "" +} +}' +``` +Dodatkowo możesz zmienić użytkownika i hasło maszyny wirtualnej, aby uzyskać do niej dostęp. +```bash +az vm user update \ +--resource-group \ +--name \ +--username \ +--password +``` +{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-virtual-desktop.md b/src/pentesting-cloud/azure-security/az-services/az-virtual-desktop.md new file mode 100644 index 000000000..2b89047ac --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-services/az-virtual-desktop.md @@ -0,0 +1,102 @@ +# Az - Virtual Desktop + +{{#include ../../../banners/hacktricks-training.md}} + +## Azure Virtual Desktop + +Virtual Desktop to **usługa wirtualizacji pulpitu i aplikacji**. Umożliwia zdalne dostarczanie pełnych pulpitów Windows, w tym Windows 11, Windows 10 lub Windows Server do użytkowników, zarówno jako indywidualne pulpity, jak i poprzez indywidualne aplikacje. Obsługuje konfiguracje jednosesyjnych dla użytku osobistego oraz środowiska wielosesyjne. Użytkownicy mogą łączyć się z praktycznie dowolnego urządzenia, korzystając z aplikacji natywnych lub przeglądarki internetowej. + +### Host Pools + +Host pools w Azure Virtual Desktop to zbiory maszyn wirtualnych Azure skonfigurowanych jako hosty sesji, dostarczające wirtualne pulpity i aplikacje użytkownikom. Istnieją dwa główne typy: +- **Personal host pools**, gdzie każda maszyna wirtualna jest dedykowana dla jednego użytkownika, z jego środowiskiem +- **Pooled host pools**, gdzie wielu użytkowników dzieli zasoby na dowolnym dostępnym hoście sesji. Ma konfigurowalny limit sesji, a konfiguracja hosta sesji pozwala Azure Virtual Desktop automatyzować tworzenie hostów sesji na podstawie konfiguracji. + +Każdy host pool ma **token rejestracyjny**, który jest używany do rejestrowania maszyn wirtualnych w ramach host pool. + +### Application groups & Workspace +Grupy aplikacji **kontrolują dostęp użytkowników** do pełnego pulpitu lub określonych zestawów aplikacji dostępnych na hostach sesji w ramach host pool. Istnieją dwa typy: +- **Desktop application groups**, które dają użytkownikom dostęp do pełnego pulpitu Windows (dostępne zarówno w personal, jak i pooled host pools) +- **RemoteApp groups**, które pozwalają użytkownikom na dostęp do indywidualnych opublikowanych aplikacji (dostępne tylko w pooled host pools). +Host pool może mieć jedną grupę aplikacji Desktop, ale wiele grup RemoteApp. Użytkownicy mogą być przypisani do wielu grup aplikacji w różnych host pools. Jeśli użytkownik jest przypisany zarówno do grup desktop, jak i RemoteApp w tym samym host pool, widzi tylko zasoby z preferowanego typu grupy ustawionego przez administratorów. + +**Workspace** to **zbiór grup aplikacji**, umożliwiający użytkownikom dostęp do pulpitów i grup aplikacji przypisanych do nich. Każda grupa aplikacji musi być powiązana z workspace, a może należeć tylko do jednego workspace w danym czasie. + +### Key Features +- **Flexible VM Creation**: Twórz maszyny wirtualne Azure bezpośrednio lub dodawaj lokalne maszyny wirtualne Azure później. +- **Security Features**: Włącz Trusted Launch (bezpieczne uruchamianie, vTPM, monitorowanie integralności) dla zaawansowanego bezpieczeństwa VM (wymagana jest wirtualna sieć). Może integrować Azure Firewall i kontrolować ruch za pomocą grup zabezpieczeń sieci. +- **Domain Join**: Wsparcie dla dołączeń do domeny Active Directory z konfigurowalnymi ustawieniami. +- **Diagnostics & Monitoring**: Włącz ustawienia diagnostyczne, aby przesyłać logi i metryki do Log Analytics, kontenerów magazynowych lub hubów zdarzeń w celu monitorowania. +- **Custom image templates**: Twórz i zarządzaj nimi do użycia przy dodawaniu hostów sesji. Łatwo dodawaj wspólne dostosowania lub własne skrypty. +- **Workspace Registration**: Łatwo rejestruj domyślne grupy aplikacji desktopowych do nowych lub istniejących workspace dla uproszczonego zarządzania dostępem użytkowników. + +### Enumeration +```bash +az extension add --name desktopvirtualization + +# List HostPool of a Resource group +az desktopvirtualization hostpool list --resource-group + +# List Application Groups +az desktopvirtualization applicationgroup list --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//resourceGroups//providers/Microsoft.DesktopVirtualization/applicationGroups//providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" \ +| jq '.value[] | select((.properties.scope | ascii_downcase) == "/subscriptions//resourcegroups//providers/microsoft.desktopvirtualization/applicationgroups/")' + + +# List Workspace in a resource group +az desktopvirtualization workspace list --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" + +``` +### Połączenie + +Aby połączyć się z wirtualnym pulpitem przez sieć, możesz uzyskać dostęp przez https://client.wvd.microsoft.com/arm/webclient/ (najczęściej używane), lub https://client.wvd.microsoft.com/webclient/index.html (klasyczne) +Istnieją inne metody, które są opisane tutaj [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) + +## Privesc + +{{#ref}} +../az-privilege-escalation/az-virtual-desktop-privesc.md +{{#endref}} + +{{#include ../../../banners/hacktricks-training.md}}