Bypass de l’authentification JWT par vérification de signature défectueuse

JWT authentication bypass via flawed signature verification

Contexte du laboratoire

Ce laboratoire utilise des JSON Web Tokens (JWT) pour gérer les sessions utilisateur. La configuration du serveur est incorrecte : il accepte des JWT non signés, ce qui permet de falsifier un jeton valide sans posséder la clé privée.

Objectif :

  • Modifier le JWT de session pour accéder au panneau d’administration /admin

  • Supprimer l’utilisateur carlos

Identifiants fournis :

  • Utilisateur : wiener

  • Mot de passe : peter

Analyse du JWT initial

Après connexion, un cookie de session JWT est fourni :

  • Header : algorithme RS256

  • Payload : utilisateur wiener

  • Signature : présente et valide à l’origine

Modification du payload

L’objectif est de se faire passer pour un administrateur. On modifie donc le champ sub dans le payload :

Exploitation de la mauvaise vérification

Le serveur accepte les JWT avec l’algorithme none. On modifie alors le header :

Ensuite :

  • On supprime complètement la signature

  • Le JWT final se termine par un point (.)

Résultat

  • Le serveur accepte le JWT non signé

  • L’accès au panneau /admin est autorisé

  • L’utilisateur carlos peut être supprimé

Mis à jour