JWT — Failles d'authentification par token

Auth Account Takeover

Structure JWT

# eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoidXNlciJ9.SIGNATURE
# Header.Payload.Signature (base64url)

echo "eyJhbGciOiJIUzI1NiJ9" | base64 -d
# -> {"alg":"HS256"}

Attaques

# 1. Algorithme "none"
# Header : {"alg":"none"} -> supprimer la signature

# 2. Brute force du secret
hashcat -a 0 -m 16500 TOKEN rockyou.txt
python3 jwt_tool.py TOKEN -C -d rockyou.txt

# 3. Confusion RS256 -> HS256 (clé publique comme secret)

# 4. jwt_tool : tester toutes les attaques
python3 jwt_tool.py TOKEN -M at -t https://target/api

Défenses

RS256 ou ES256 (asymétriques) · Secret HMAC > 256 bits · Valider explicitement l'algorithme attendu · Toujours vérifier exp, nbf, iss, aud · Mécanisme de révocation