Az - OAuth Apps Phishing

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

Phishing d’applications OAuth

Les applications Azure sont configurĂ©es avec les autorisations qu’elles pourront utiliser lorsque l’utilisateur consent Ă  l’application (comme Ă©numĂ©rer le rĂ©pertoire, accĂ©der aux fichiers ou effectuer d’autres actions). Notez que l’application agira au nom de l’utilisateur, donc mĂȘme si l’application peut demander des autorisations d’administration, si l’utilisateur qui consent n’a pas cette autorisation, l’application ne pourra pas effectuer d’actions administratives.

Autorisations de consentement des applications

Par dĂ©faut, tout utilisateur peut donner son consentement aux applications, bien que cela puisse ĂȘtre configurĂ© pour que les utilisateurs ne puissent consentir qu’aux applications de publishers vĂ©rifiĂ©s pour des autorisations sĂ©lectionnĂ©es ou mĂȘme supprimer l’autorisation pour que les utilisateurs consentent aux applications.

Si les utilisateurs ne peuvent pas consentir, des administrateurs comme GA, Application Administrator ou Cloud Application Administrator peuvent consentir aux applications que les utilisateurs pourront utiliser.

De plus, si les utilisateurs peuvent consentir uniquement aux applications utilisant des autorisations Ă  faible risque, ces autorisations sont par dĂ©faut openid, profile, email, User.Read et offline_access, bien qu’il soit possible d’ajouter plus Ă  cette liste.

Et s’ils peuvent consentir à toutes les applications, ils peuvent consentir à toutes les applications.

2 Types d’attaques

  • Non authentifiĂ© : À partir d’un compte externe, crĂ©ez une application avec les autorisations Ă  faible risque User.Read et User.ReadBasic.All par exemple, hameçonnez un utilisateur, et vous pourrez accĂ©der aux informations du rĂ©pertoire.
  • Cela nĂ©cessite que l’utilisateur hameçonnĂ© soit capable d’accepter des applications OAuth d’un locataire externe.
  • Si l’utilisateur hameçonnĂ© est un administrateur qui peut consentir Ă  n’importe quelle application avec n’importe quelles autorisations, l’application pourrait Ă©galement demander des autorisations privilĂ©giĂ©es.
  • AuthentifiĂ© : Ayant compromis un principal avec suffisamment de privilĂšges, crĂ©ez une application Ă  l’intĂ©rieur du compte et hameçonnez un utilisateur privilĂ©giĂ© qui peut accepter des autorisations OAuth privilĂ©giĂ©es.
  • Dans ce cas, vous pouvez dĂ©jĂ  accĂ©der aux informations du rĂ©pertoire, donc l’autorisation User.ReadBasic.All n’est plus intĂ©ressante.
  • Vous ĂȘtes probablement intĂ©ressĂ© par des autorisations qui nĂ©cessitent qu’un administrateur les accorde, car un utilisateur ordinaire ne peut pas donner d’autorisations aux applications OAuth, c’est pourquoi vous devez hameçonner uniquement ces utilisateurs (plus d’informations sur les rĂŽles/permissions qui accordent ce privilĂšge plus tard).

Les utilisateurs sont autorisés à consentir

Notez que vous devez exĂ©cuter cette commande Ă  partir d’un utilisateur Ă  l’intĂ©rieur du locataire, vous ne pouvez pas trouver cette configuration d’un locataire depuis un externe. Le cli suivant peut vous aider Ă  comprendre les autorisations des utilisateurs :

az rest --method GET --url "https://graph.microsoft.com/v1.0/policies/authorizationPolicy"
  • Les utilisateurs peuvent consentir Ă  toutes les applications : Si Ă  l’intĂ©rieur de permissionGrantPoliciesAssigned vous pouvez trouver : ManagePermissionGrantsForSelf.microsoft-user-default-legacy alors les utilisateurs peuvent accepter chaque application.
  • Les utilisateurs peuvent consentir aux applications de publishers vĂ©rifiĂ©s ou de votre organisation, mais seulement pour les permissions que vous sĂ©lectionnez : Si Ă  l’intĂ©rieur de permissionGrantPoliciesAssigned vous pouvez trouver : ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-team alors les utilisateurs peuvent accepter chaque application.
  • DĂ©sactiver le consentement des utilisateurs : Si Ă  l’intĂ©rieur de permissionGrantPoliciesAssigned vous ne pouvez trouver que : ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-chat et ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-team alors les utilisateurs ne peuvent consentir Ă  aucune.

Il est possible de trouver la signification de chacune des politiques commentées dans :

az rest --method GET --url "https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies"

Administrateurs d’application

VĂ©rifiez les utilisateurs qui sont considĂ©rĂ©s comme des administrateurs d’application (peuvent accepter de nouvelles applications) :

# Get list of roles
az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles"

# Get Global Administrators
az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/1b2256f9-46c1-4fc2-a125-5b2f51bb43b7/members"

# Get Application Administrators
az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/1e92c3b7-2363-4826-93a6-7f7a5b53e7f9/members"

# Get Cloud Applications Administrators
az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/0d601d27-7b9c-476f-8134-8e7cd6744f02/members"

Aperçu du Flux d’Attaque

L’attaque implique plusieurs Ă©tapes ciblant une entreprise gĂ©nĂ©rique. Voici comment cela pourrait se dĂ©rouler :

  1. Enregistrement de Domaine et HĂ©bergement d’Application : L’attaquant enregistre un domaine ressemblant Ă  un site de confiance, par exemple, “safedomainlogin.com”. Sous ce domaine, un sous-domaine est créé (par exemple, “companyname.safedomainlogin.com”) pour hĂ©berger une application conçue pour capturer des codes d’autorisation et demander des jetons d’accĂšs.
  2. Enregistrement de l’Application dans Azure AD : L’attaquant enregistre ensuite une Application Multi-Tenant dans son locataire Azure AD, la nommant d’aprĂšs l’entreprise cible pour paraĂźtre lĂ©gitime. Il configure l’URL de redirection de l’application pour pointer vers le sous-domaine hĂ©bergeant l’application malveillante.
  3. Configuration des Autorisations : L’attaquant configure l’application avec diverses autorisations API (par exemple, Mail.Read, Notes.Read.All, Files.ReadWrite.All, User.ReadBasic.All, User.Read). Ces autorisations, une fois accordĂ©es par l’utilisateur, permettent Ă  l’attaquant d’extraire des informations sensibles au nom de l’utilisateur.
  4. Distribution de Liens Malveillants : L’attaquant crĂ©e un lien contenant l’identifiant client de l’application malveillante et le partage avec des utilisateurs ciblĂ©s, les trompant pour qu’ils accordent leur consentement.

Exemple d’Attaque

  1. Enregistrez une nouvelle application. Elle peut ĂȘtre uniquement pour le rĂ©pertoire actuel si vous utilisez un utilisateur du rĂ©pertoire attaquĂ© ou pour n’importe quel rĂ©pertoire si c’est une attaque externe (comme dans l’image suivante).
  2. DĂ©finissez Ă©galement l’URI de redirection sur l’URL attendue oĂč vous souhaitez recevoir le code pour obtenir des jetons (http://localhost:8000/callback par dĂ©faut).
  1. Ensuite, crĂ©ez un secret d’application :
  1. Sélectionnez les autorisations API (par exemple, Mail.Read, Notes.Read.All, Files.ReadWrite.All, User.ReadBasic.All, User.Read)
  1. Exécutez la page web (azure_oauth_phishing_example) qui demande les autorisations :
# From https://github.com/carlospolop/azure_oauth_phishing_example
python3 azure_oauth_phishing_example.py --client-secret <client-secret> --client-id <client-id> --scopes "email,Files.ReadWrite.All,Mail.Read,Notes.Read.All,offline_access,openid,profile,User.Read"
  1. Envoyez l’URL à la victime
  2. Dans ce cas http://localhost:8000
  3. Les victimes doivent accepter l’invite :
  1. Utilisez le jeton d’accĂšs pour accĂ©der aux autorisations demandĂ©es :
export ACCESS_TOKEN=<ACCESS_TOKEN>

# List drive files
curl -X GET \
https://graph.microsoft.com/v1.0/me/drive/root/children \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Accept: application/json"

# List eails
curl -X GET \
https://graph.microsoft.com/v1.0/me/messages \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Accept: application/json"

# List notes
curl -X GET \
https://graph.microsoft.com/v1.0/me/onenote/notebooks \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Accept: application/json"

Autres Outils

Post-Exploitation

Phishing Post-Exploitation

Selon les autorisations demandĂ©es, vous pourriez ĂȘtre en mesure de accĂ©der Ă  diffĂ©rentes donnĂ©es du locataire (liste des utilisateurs, groupes
 ou mĂȘme modifier des paramĂštres) et informations de l’utilisateur (fichiers, notes, e-mails
). Ensuite, vous pouvez utiliser ces autorisations pour effectuer ces actions.

Applications Admin Entra ID

Si vous parvenez Ă  compromettre d’une maniĂšre ou d’une autre un principal Entra ID qui peut gĂ©rer des applications dans Entra ID, et qu’il y a des applications utilisĂ©es par les utilisateurs du locataire. Un administrateur pourrait modifier les autorisations demandĂ©es par l’application et ajouter une nouvelle adresse de redirection autorisĂ©e pour voler les jetons.

  • Notez qu’il est possible d’ajouter des URI de redirection (pas besoin de supprimer la vraie) et ensuite d’envoyer un lien HTTP en utilisant l’URI de redirection de l’attaquant, de sorte que lorsque l’utilisateur suit le lien, l’authentification se produit automatiquement et l’attaquant reçoit le jeton.
  • Il est Ă©galement possible de changer les autorisations demandĂ©es par l’application afin d’obtenir plus d’autorisations des utilisateurs, mais dans ce cas, l’utilisateur devra accepter Ă  nouveau l’invite (mĂȘme s’il Ă©tait dĂ©jĂ  connectĂ©).
  • Pour effectuer cette attaque, l’attaquant N’A PAS BESOIN de contrĂŽler le code de l’application, car il pourrait simplement envoyer le lien pour se connecter Ă  l’application Ă  l’utilisateur avec la nouvelle URL dans le paramĂštre redirect_uri.

Post-Exploitation de l’Application

Consultez les sections Applications et Principal de Service de la page :

Az - EntraID Privesc

Références

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks