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-auth-bypass — Preuve de concept (PoC) pour une vulnérabilité de contournement d'authentification affectant les applications utilisant pac4j-jwt avec JWE (JSON Web Encryption). | Kitploit
Outils/GitHubGitHub/ptechamanja/cve-2026-29000-pac4j-jwt-auth-bypass
Analyse des VulnérabilitésExploitationSécurité WebCTFTests d'IntrusionAuthentification
GitHubptechamanja/cve-2026-29000-pac4j-jwt-auth-bypass

CVE-2026-29000-pac4j-jwt-auth-bypass

Preuve de concept (PoC) pour une vulnérabilité de contournement d'authentification affectant les applications utilisant pac4j-jwt avec JWE (JSON Web Encryption).

Voir le dépôt
17il y a 5 moisPas encore vérifié

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

Writeup HTB Principal — CVE-2026-29000

Avertissement : Cet exploit a été développé uniquement pour la machine retirée de HackTheBox « Principal ». À des fins éducatives uniquement. Ne pas l'utiliser contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de test.

Informations sur la machine

ChampDétails
NomPrincipal
PlateformeHackTheBox
Difficulté—
StatutRetirée

Vulnérabilité — CVE-2026-29000

Bibliothèque concernée : pac4j-jwt < 4.5.9 / 5.7.9 / 6.3.3
Sévérité : Critique
Type : Contournement d'authentification

Résumé

Une faille logique dans JwtAuthenticator permet à un attaquant de contourner l'authentification en enveloppant un PlainJWT non signé (alg=none) dans un JWE (JWT chiffré).

Lorsque le serveur déchiffre le JWE, il tente d'analyser le jeton interne comme un SignedJWT. Comme le jeton interne est un PlainJWT, l'objet SignedJWT est nul et la vérification de la signature est entièrement ignorée. Le serveur construit ensuite un profil utilisateur à partir des revendications non vérifiées — permettant l'usurpation complète de n'importe quel utilisateur, y compris les administrateurs.

Conditions requises pour l'attaque

  • La clé publique RSA du serveur (souvent exposée via le point de terminaison JWKS)
  • La connaissance des noms de revendications internes (par ex. rôles, format du sujet)

Déroulement de l'exploit

root@kitploit:~
Créer des revendications malveillantes (sub=admin, role=ROLE_ADMIN)
        ↓
Construire un PlainJWT non signé (alg=none)
        ↓
Envelopper le PlainJWT dans un JWE en utilisant la clé publique RSA du serveur
        ↓
Soumettre le jeton JWE au serveur
        ↓
Le serveur déchiffre le JWE → trouve le PlainJWT → ignore la vérification de signature → accorde l'accès

Exploit

Voir exploit.py


Correctif

Mettre à niveau pac4j-jwt vers une version corrigée :

  • 4.5.9 ou ultérieure
  • 5.7.9 ou ultérieure
  • 6.3.3 ou ultérieure

Ou rejeter explicitement les jetons internes PlainJWT après le déchiffrement du JWE :

root@kitploit:~
if (jwt instanceof PlainJWT) {
    throw new CredentialsException("PlainJWT not allowed inside JWE");
}

⚙️ Déroulement de l'attaque

  1. Récupérer la clé publique depuis :
root@kitploit:~

/api/auth/jwks

  1. Créer un JWT malveillant :
  • alg: none
  • Injecter le rôle administrateur
  1. Envelopper dans un JWE en utilisant la clé publique

  2. Envoyer comme :

root@kitploit:~

Authorization: Bearer <token>

  1. Obtenir un accès non autorisé

🛠️ Utilisation du PoC

Installer les dépendances

root@kitploit:~
pip install jwcrypto requests

Exécuter l'exploit

root@kitploit:~
python3 poc.py \
--jwks-url http://target/api/auth/jwks \
--target http://target/api/dashboard

📤 Exemple de sortie

root@kitploit:~
[+] Forged Token:
eyJhbGciOiJSU0EtT0FFUC0yNTYi...

[+] Browser Injection:
sessionStorage.setItem("auth_token", "eyJhbGciOiJSU0EtT0FFUC0yNTYi...")

[+] Status: 200
{"user":{"username":"admin","role":"ROLE_ADMIN"}}

🌐 Exploitation via navigateur

Ouvrir DevTools → Console :

root@kitploit:~
sessionStorage.setItem("auth_token", "<PASTE_TOKEN_HERE>")

Puis naviguer vers :

root@kitploit:~
/dashboard

🔥 Impact

  • Contournement complet de l'authentification
  • Élévation de privilèges vers administrateur
  • Accès API non autorisé
  • Mouvement latéral potentiel

🛡️ Atténuation

  • Toujours vérifier les signatures JWT (JWS) après le déchiffrement
  • Rejeter les jetons avec alg: none
  • Appliquer des politiques strictes de validation des jetons
  • Ne pas se fier uniquement au chiffrement pour la confiance

👤 Auteur

  • Doomsknight

Références

  • Avis de sécurité pac4j
  • HackTheBox
Télécharger l’outil