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-Lab — Bibliothèque de laboratoire de preuve de concept démontrant la CVE-2026-29000 dans pac4j-jwt, comparant les versions vulnérable et corrigée avec Docker pour montrer l'acceptation et le rejet de JWT falsifiés. | Kitploit
Outils/GitHubGitHub/rootdirective-sec/cve-2026-29000-lab
Analyse des VulnérabilitésExploitationSécurité WebAuthentification
GitHubrootdirective-sec/cve-2026-29000-lab

CVE-2026-29000-Lab

Bibliothèque de laboratoire de preuve de concept démontrant la CVE-2026-29000 dans pac4j-jwt, comparant les versions vulnérable et corrigée avec Docker pour montrer l'acceptation et le rejet de JWT falsifiés.

Voir le dépôt
7il y a 6 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

CVE-2026-29000 — Laboratoire PoC au niveau bibliothèque pour pac4j-jwt

TL;DR

Ce dépôt contient un PoC au niveau bibliothèque pour CVE-2026-29000 dans pac4j-jwt.

Il compare le comportement vulnérable et corrigé avec deux cas :

  • Référence : un jeton légitime doit être accepté
  • Attaque : un jeton forgé doit être accepté sur les versions vulnérables et rejeté sur la version corrigée
VersionRéférenceAttaqueRésultat
6.0.3✅✅Vulnérable
6.0.4.1✅✅Vulnérable
6.3.3✅❌Corrigée

Ce PoC démontre la création d'un profil authentifié avec un sujet et des rôles contrôlés par l'attaquant sur les versions vulnérables, tandis que la version corrigée rejette le jeton forgé.


Ce qu'est ce projet

Ceci n'est pas une démonstration d'application web.

C'est un petit programme Java qui appelle JwtAuthenticator directement et compare plusieurs versions de pac4j-jwt dans Docker.

L'objectif est de prouver trois choses :

  1. les jetons légitimes fonctionnent toujours
  2. les revendications forgées contrôlées par l'attaquant sont acceptées par les versions vulnérables
  3. les revendications forgées contrôlées par l'attaquant sont rejetées par la version corrigée

Pourquoi ces versions ont été sélectionnées

Les versions testées ont été choisies délibérément :

  • 6.0.3 — incluse car un article technique public a rapporté un PoC fonctionnel sur cette version
  • 6.0.4.1 — incluse car les données d'avis publics la placent dans la plage 6.x affectée
  • 6.3.3 — incluse car c'est la version corrigée pour la ligne 6.x

Cela donne au laboratoire trois points de référence utiles :

  • une version de référence pour le PoC public
  • une version affectée confirmée par l'avis
  • la version corrigée

Structure du projet

root@kitploit:~
.
├── docker-compose.yml
├── Dockerfile
├── pom.xml
└── src/main/java/lab/Repro.java

Rôles des fichiers

  • docker-compose.yml Définit la matrice de test pour chaque version.

  • Dockerfile Compile et exécute le PoC dans un conteneur.

  • pom.xml Définit les dépendances et compile un JAR exécutable.

  • src/main/java/lab/Repro.java Le harnais de test PoC proprement dit.


Ce que signifient les services

Le fichier docker-compose.yml définit trois services :

  • v603 = tester pac4j-jwt 6.0.3
  • v6041 = tester pac4j-jwt 6.0.4.1
  • patched = tester pac4j-jwt 6.3.3

Ainsi, ces commandes signifient « exécuter le PoC une fois contre cette version spécifique » :

root@kitploit:~
docker compose run --rm v603
docker compose run --rm v6041
docker compose run --rm patched

--rm signifie que le conteneur temporaire est supprimé après la fin de l'exécution.


Comment l'exécuter

Compilation

root@kitploit:~
docker compose build --no-cache

Exécution

root@kitploit:~
docker compose run --rm v603
docker compose run --rm v6041
docker compose run --rm patched

Ce que fait le PoC

Pour chaque version, le programme exécute deux cas.

1) Référence

Il génère un jeton légitime et le valide via JwtAuthenticator.

Résultat attendu :

  • accepté sur toutes les versions testées

2) Attaque

Il génère un jeton forgé avec des revendications contrôlées par l'attaquant et le valide via JwtAuthenticator.

Résultat attendu :

  • versions vulnérables → identité forgée acceptée
  • version corrigée → jeton forgé rejeté

Comment lire la sortie

Sortie vulnérable

Vous devriez voir quelque chose comme ceci :

root@kitploit:~
[case] baseline
  result: ACCEPTED
  observed_subject: alice
  observed_roles: [ROLE_USER]

[case] attack
  result: ACCEPTED
  observed_subject: admin#override
  observed_roles: [ROLE_SUPERUSER, ROLE_ADMIN]

[summary]
  conclusion: VULNERABLE: forged token accepted

Signification :

  • le jeton normal fonctionne
  • le jeton forgé est également accepté
  • le sujet et les rôles ont été remplacés par des valeurs contrôlées par l'attaquant

Sortie corrigée

Vous devriez voir quelque chose comme ceci :

root@kitploit:~
[case] baseline
  result: ACCEPTED
  observed_subject: alice
  observed_roles: [ROLE_USER]

[case] attack
  result: REJECTED
  reason: CredentialsException: A non-signed JWT cannot be accepted as signature configurations have been defined

[summary]
  conclusion: PATCHED: forged token rejected

Signification :

  • le jeton normal fonctionne
  • le jeton forgé est rejeté
  • la version corrigée n'accepte plus le chemin JWT interne non signé utilisé par l'attaque

Pourquoi ce dépôt se concentre sur le comportement de la bibliothèque plutôt que sur un script de jeton générique

Cette CVE affecte un chemin d'authentification au niveau bibliothèque, pas une application unique avec un modèle de rôles universel.

La partie réutilisable est la forme de l'attaque :

  • revendications forgées contrôlées par l'attaquant
  • chiffrées en JWE
  • transmises à JwtAuthenticator

Ce qui n'est pas universel dans les applications réelles :

  • les noms de revendications
  • les noms de rôles
  • le mappage d'autorisation
  • le matériel de clé / la configuration JWKS
  • la gestion de profil spécifique à l'application

Pour cette raison, ce dépôt se concentre sur la preuve que la bibliothèque accepte les revendications forgées contrôlées par l'attaquant sur les versions vulnérables, plutôt que de prétendre qu'il existe un jeton universel qui fonctionnerait automatiquement contre des applications arbitraires.


Captures d'écran

  1. docker compose run --rm v603
  2. docker compose run --rm v6041
  3. docker compose run --rm patched

Version vulnérable : 6.0.3

exemple de sortie 603

Version vulnérable : 6.0.4.1

exemple de sortie 6041

Version corrigée : 6.3.3

exemple de sortie corrigée


Références

  • Avis de sécurité pac4j pour JwtAuthenticator
  • Base de données d'avis GitHub : CVE-2026-29000
  • Entrée NVD : CVE-2026-29000
  • Article technique CodeAnt : PoC de contournement d'authentification par clé publique

Conclusion finale

Ce projet démontre trois faits essentiels :

  1. les jetons de référence légitimes sont acceptés sur toutes les versions testées
  2. les revendications forgées contrôlées par l'attaquant sont acceptées sur 6.0.3 et 6.0.4.1
  3. les revendications forgées contrôlées par l'attaquant sont rejetées sur 6.3.3

C'est la preuve centrale vulnérable-ou-corrigé pour cette CVE dans ce dépôt.

Sur les versions vulnérables, le jeton forgé n'est pas simplement analysé — il produit un profil authentifié avec un sujet et des rôles contrôlés par l'attaquant.

Télécharger l’outil