Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-29000-pac4j-jwt — CVE-2026-29000 PoC : contournement de l'authentification pac4j-jwt PlainJWT-in-JWE. | Kitploit
Outils/GitHubGitHub/strikoder-premium/cve-2026-29000-pac4j-jwt
Authentification et AutorisationAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'Intrusion
GitHubstrikoder-premium/cve-2026-29000-pac4j-jwt

CVE-2026-29000-pac4j-jwt

CVE-2026-29000 PoC : contournement de l'authentification pac4j-jwt PlainJWT-in-JWE.

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
3il y a 3 moisPas encore vérifié

pac4j-jwe-forge (CVE-2026-29000)

Preuve de concept pour CVE-2026-29000. Cible les versions de pac4j-jwt antérieures à 4.5.9, 5.7.9 et 6.3.3.

La vulnérabilité est simple : la bibliothèque accepte un PlainJWT (non signé, alg=none) tant qu'il est enveloppé dans un JWE valide. Comme le serveur expose sa clé publique RSA via un endpoint JWKS, n'importe qui peut chiffrer un JWT non signé arbitraire dans un JWE auquel le serveur fera confiance — y compris un avec ROLE_ADMIN.


Comment ça fonctionne

  1. Récupérer la clé publique RSA depuis l'endpoint JWKS de la cible
  2. Construire un JWT non signé (alg=none) avec les revendications de votre choix
  3. Le chiffrer avec la clé publique du serveur en utilisant
  4. Envoyer le JWE résultant comme jeton Bearer

Le serveur le déchiffre, fait confiance aux revendications qu'il contient, et ne vérifie jamais que le JWT interne est non signé.


Prérequis

Python 3.13+ avec uv, ou installez les dépendances manuellement :

root@kitploit:~
pip install jwcrypto requests

Utilisation

root@kitploit:~
[uv run / python3] CVE-2026-29000.py --url <base_url> --jwks <jwks_path> [options]

Obligatoire :

drapeaudescription
--urlURL de base de la cible, ex. http://10.10.11.x:8080
--jwkschemin ou URL complète vers l'endpoint JWKS

Optionnel :

Exemples :

root@kitploit:~
python3 exploit.py --url http://10.10.11.x:8080 --jwks /api/auth/jwks

python3 exploit.py --url http://10.10.11.x:8080 --jwks /api/auth/jwks --user john --role ROLE_ADMIN

python3 exploit.py --url http://10.10.11.x:8080 --jwks /.well-known/jwks.json --enc A128GCM

Trouver l'endpoint JWKS

Pas toujours évident. De bons endroits où chercher :

  • /robots.txt — liste souvent les chemins restreints ou internes
  • /api/auth/jwks
  • /.well-known/jwks.json
  • /.well-known/openid-configuration

Trouver le bon alg/enc

Si le jeton est rejeté, l'application pourrait attendre un algorithme de chiffrement spécifique. Vérifiez /static/js/app.js pour quelque chose comme :

root@kitploit:~
const JWE_ALG = "RSA-OAEP-256";
const JWE_ENC = "A128GCM";

Puis relancez avec --enc A128GCM.

La méthode de stockage du jeton s'y trouve aussi généralement :

root@kitploit:~
class TokenManager {
    static getToken() {
        return sessionStorage.getItem('auth_token');
    }
}

Si c'est sessionStorage, remplacez le jeton directement dans DevTools sous Application > Session Storage.


Versions affectées

  • pac4j-jwt < 4.5.9
  • pac4j-jwt < 5.7.9
  • pac4j-jwt < 6.3.3

Corrigé dans les versions 4.5.9, 5.7.9 et 6.3.3.

Télécharger l’outil
drapeaudéfautdescription
--useradminvaleur pour la revendication sub
--roleROLE_ADMINrôle à forger (ROLE_ADMIN, ROLE_MANAGER, ROLE_USER)
--issuerprincipal-platformvaleur pour la revendication iss
--encA256GCMchiffrement du contenu JWE (A256GCM ou A128GCM)