Principe:
Forger un JWT pour se faire passer pour l'admin car le site autorise l'algorithme none, ce qui est en soi une vulnérabilité critique!
Infos (cf menu latéral):
🚩 Flaggué! +100 points gagnés —
💾 Téléchargez les fichiers du challenge
404CTF{decod3diSNOtVeRiFiED}
Le challenge
Localiser le flag
username du jwtObtenir un JWT
base64) via des sites en ligne
Ici, on est dans un CTF donc on se fiche un peu de la confidentialité des données. Mais dans le cadre d'un système réel (en test ou en production d'ailleurs), je déconseille ce genre d'outil en ligne car rien ne garantit qu'il n'enregistre pas les données que vous lui envoyez.
Une revue de sécurité est donc indispensable avant d'utiliser tout outil de ce genre sur des données réelles.
JWT "none" alg
Les JWT utilisent un système de signature pour garantir leur authenticité. Toutefois, le standard JWT autorise l'algorithme de signature appelé none, c'est à dire un algorithme qui autorise l'absence de signature!
none
Dans tout système en production, il est indispensable de s'assurer que l'algorithme none n'est pas autorisé.
Il est même fortement recommandé de n'autoriser qu'un et un seul algorithme, celui utilisé par le système pour générer ses JWT (choisissez l'algorithme le plus sûr du moment) et de rejeter tout autre algorithme, none inclus.
noneLà encore, je rappelle que pour un CTF, on peut se permettre ce genre d'outil en ligne sans trop le vérifier, mais pour des données de production, il faut soit le faire localement (sur son poste, sans utiliser d'outil en ligne) soit vérifier que l'outil en ligne n'exfiltre pas les informations qu'on y met.
token avec ce JWT forgéFlag
Ce genre de vulnérabilité permet aussi d'étendre la durée de validité (iat) d'un JWT, ce qui permet alors d'avoir (par exemple) accès à une ressource ou à un document même après l'expiration de notre accès (à condition donc que le système autorise l'algo none).
Flag: 404CTF{decod3diSNOtVeRiFiED}