Détournement de compte OAuth via redirect_uri

OAuth account hijacking via redirect_uri

Objectif du laboratoire

Ce laboratoire démontre comment une mauvaise configuration du paramètre redirect_uri dans un flux OAuth permet à un attaquant de voler des codes d’autorisation associés au compte d’un autre utilisateur.

But final :

  • Intercepter un code d’autorisation OAuth appartenant à l’utilisateur admin

  • Utiliser ce code pour accéder à son compte

  • Supprimer l’utilisateur carlos

Contexte et conditions

  • Le site permet l’authentification via un fournisseur OAuth (réseau social).

  • L’utilisateur admin :

    • Ouvre tout lien provenant de l’exploit server.

    • Possède déjà une session active auprès du fournisseur OAuth.

  • Identifiants fournis :

    • Compte social de l’attaquant : wiener:peter

Analyse du flux OAuth

Lorsqu’un utilisateur se connecte via OAuth, l’application envoie une requête similaire à :

Le point critique est que le fournisseur OAuth n’impose aucune validation stricte du redirect_uri.

Validation de la vulnérabilité

En modifiant le paramètre redirect_uri vers un domaine arbitraire, par exemple :

on observe que :

  • Le fournisseur OAuth redirige bien vers ce domaine

  • Le code d’autorisation OAuth est inclus dans l’URL de redirection

Cela confirme que le redirect_uri est exploitable.

Exploitation

L’objectif est maintenant de forcer l’admin à initier une authentification OAuth dont la redirection pointe vers l’exploit server de l’attaquant.

Lien OAuth malveillant utilisé :

Ce lien est intégré dans une page de l’exploit server à l’aide d’une iframe :

Récupération du code d’autorisation

Lorsque l’admin ouvre la page :

  • Le flux OAuth est exécuté automatiquement

  • Le fournisseur OAuth redirige vers l’exploit server

  • Les logs de l’exploit server contiennent plusieurs codes OAuth

Le dernier code reçu est utilisé, par exemple :

Résultat

  • Le code d’autorisation est valide

  • L’accès au compte admin est obtenu

Mis à jour