JWT Kiddo
Dernière mise à jour
Cet article vous a-t-il Γ©tΓ© utile ?
Dernière mise à jour
Cet article vous a-t-il Γ©tΓ© utile ?
Flag: CYBN{h4ck3r_2_h4ck3r5}
Ce challenge tourne sur un docker et n'est pas disponible
En cliquant sur le bouton Obtenir le flag, on voit qu'il faut Γͺtre l'utilisateur admin
.
Lors de notre première visite sur le site, un cookie nous a été donné. Il contient un JWT :
Le JWT utilise le champ kid
, c'est le champ qui indique la clΓ© utilisΓ©e pour signer le token. En modifiant sa valeur, on obtient une erreur :
On se rend compte que la clΓ© est rΓ©cupΓ©rΓ©e dans le dossier /public/keys/
.
En regardant les autres requΓͺtes du site, on peut Γ©galement voir que les messages envoyΓ©s sont enregistrΓ©s dans le dossier /public/data/
:
Si l'on remplace le kid
par l'un des messages, on confirme que l'on peut les utiliser comme clΓ© de signature puisqu'on a plus d'erreur "No such file".
L'objectif est de crΓ©er notre propre paire de clΓ© privΓ©e/publique, envoyer la clΓ© publique dans le chat et l'utiliser pour la signature. La clΓ© privΓ©e, elle, servira Γ signer notre prope token.
On commence par crΓ©er la paire de clΓ© avec openssl
:
Maintenant, on envoie la clΓ© publique dans le chat et rΓ©cupΓ©rer son chemin :
Ce token peut Γͺtre utilisΓ© pour rΓ©cupΓ©rer le flag :
Γ partir de maintenant, j'utilise pour explorer le site, avec l'extension JWTEditor pour faciliter le traitement des JWT (c'est tout Γ fait possible de faire sans rien).
Enfin, on peut aller sur un site comme pour crΓ©er le token avec les infos que l'on a. Il faut mettre le bon header du JWT et changer le nom du user dans le body :