
Prueba de concepto de explotación para CVE-2026-29000, una omisión de autenticación en pac4j-jwt mediante PlainJWT anidado con alg:none dentro de un contenedor JWE.
Este repositorio contiene una prueba de concepto (POC) para una vulnerabilidad de bypass de autenticación en pac4j-jwt (CVE-2026-29000). La vulnerabilidad permite a un atacante omitir la verificación de firma anidando un PlainJWT (usando alg: none) dentro de un contenedor JWE (JSON Web Encryption).
El ataque funciona explotando la disposición del servidor a descifrar un JWE cifrado con su clave pública y, posteriormente, confiar en el JWT interno sin validar su firma, siempre que utilice el algoritmo none.
Asegúrate de tener Python 3 instalado junto con las dependencias necesarias:
pip install requests jwcrypto
Usa exp.py para obtener la clave pública del objetivo desde el endpoint JWKS, crear un token malicioso con privilegios ROLE_ADMIN y envolverlo en un JWE.
python3 exp.py <TARGET_URL> --user admin --role ROLE_ADMIN
Ejemplo:
python3 exp.py http://localhost:8080
Una vez que tengas el token forjado, usa app.py para interactuar con los endpoints de API protegidos.
python3 app.py <TARGET_URL> <FORGED_TOKEN>
Probar un endpoint específico:
python3 app.py http://localhost:8080 <FORGED_TOKEN> --endpoint /api/users
exp.py: El script de explotación principal que obtiene JWKS, crea un PlainJWT y forja un JWE.app.py: Un script de utilidad para probar el token forjado contra los endpoints de API descubiertos (/api/dashboard, /api/users, /api/settings).Esta POC es solo para fines educativos y de pruebas de seguridad autorizadas. El acceso no autorizado a sistemas informáticos es ilegal.