
Proof-of-concept exploit per CVE-2026-29000, un bypass dell'autenticazione in pac4j-jwt tramite PlainJWT annidato con alg:none all'interno di un contenitore JWE.
Questo repository contiene una proof-of-concept (POC) per una vulnerabilità di bypass dell'autenticazione in pac4j-jwt (CVE-2026-29000). La vulnerabilità consente a un attaccante di bypassare la verifica della firma annidando un PlainJWT (che utilizza alg: none) all'interno di un contenitore JWE (JSON Web Encryption).
L'attacco sfrutta la disponibilità del server a decrittare un JWE crittografato con la sua chiave pubblica e a fidarsi successivamente del JWT interno senza validarne la firma, a condizione che utilizzi l'algoritmo none.
Assicurati di avere Python 3 installato insieme alle dipendenze richieste:
pip install requests jwcrypto
Usa exp.py per recuperare la chiave pubblica del target dall'endpoint JWKS, creare un token malevolo con privilegi ROLE_ADMIN e avvolgerlo in un JWE.
python3 exp.py <TARGET_URL> --user admin --role ROLE_ADMIN
Esempio:
python3 exp.py http://localhost:8080
Una volta ottenuto il token contraffatto, usa app.py per interagire con gli endpoint API protetti.
python3 app.py <TARGET_URL> <FORGED_TOKEN>
Testa un endpoint specifico:
python3 app.py http://localhost:8080 <FORGED_TOKEN> --endpoint /api/users
exp.py: Lo script exploit principale che recupera JWKS, crea un PlainJWT e forgia un JWE.app.py: Uno script di utilità per testare il token contraffatto sugli endpoint API individuati (/api/dashboard, /api/users, /api/settings).Questa POC è destinata esclusivamente a scopi educativi e di test di sicurezza autorizzati. L'accesso non autorizzato a sistemi informatici è illegale.