Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-29000-pac4j-jwt — CVE-2026-29000 PoC: bypass de autenticación pac4j-jwt PlainJWT-in-JWE. | Kitploit
Herramientas/GitHubGitHub/strikoder-premium/cve-2026-29000-pac4j-jwt
Autenticación y AutorizaciónAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de Penetración
GitHubstrikoder-premium/cve-2026-29000-pac4j-jwt

CVE-2026-29000-pac4j-jwt

CVE-2026-29000 PoC: bypass de autenticación pac4j-jwt PlainJWT-in-JWE.

Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
3hace 3 mesesAún no revisado

pac4j-jwe-forge (CVE-2026-29000)

Prueba de concepto para CVE-2026-29000. Afecta a versiones de pac4j-jwt anteriores a 4.5.9, 5.7.9 y 6.3.3.

La vulnerabilidad es sencilla: la librería acepta un PlainJWT (sin firmar, alg=none) siempre que esté envuelto dentro de un JWE válido. Dado que el servidor expone su clave pública RSA a través de un endpoint JWKS, cualquiera puede cifrar un JWT arbitrario sin firmar dentro de un JWE que el servidor confiará, incluido uno con ROLE_ADMIN.


Cómo funciona

  1. Obtener la clave pública RSA del endpoint JWKS del objetivo
  2. Construir un JWT sin firmar (alg=none) con los claims que quieras
  3. Cifrarlo con la clave pública del servidor usando
  4. Enviar el JWE resultante como token Bearer

El servidor lo descifra, confía en los claims internos y nunca verifica que el JWT interno no esté firmado.


Requisitos

Python 3.13+ con uv, o instala las dependencias manualmente:

root@kitploit:~
pip install jwcrypto requests

Uso

root@kitploit:~
[uv run / python3] CVE-2026-29000.py --url <base_url> --jwks <jwks_path> [opciones]

Obligatorios:

flagdescripción
--urlURL base del objetivo, p. ej. http://10.10.11.x:8080
--jwksruta o URL completa del endpoint JWKS

Opcionales:

Ejemplos:

root@kitploit:~
python3 exploit.py --url http://10.10.11.x:8080 --jwks /api/auth/jwks

python3 exploit.py --url http://10.10.11.x:8080 --jwks /api/auth/jwks --user john --role ROLE_ADMIN

python3 exploit.py --url http://10.10.11.x:8080 --jwks /.well-known/jwks.json --enc A128GCM

Cómo encontrar el endpoint JWKS

No siempre es obvio. Buenos lugares para buscar:

  • /robots.txt — a menudo lista rutas restringidas o internas
  • /api/auth/jwks
  • /.well-known/jwks.json
  • /.well-known/openid-configuration

Cómo encontrar el alg/enc correcto

Si el token es rechazado, la aplicación podría esperar un algoritmo de cifrado específico. Revisa /static/js/app.js para algo como:

root@kitploit:~
const JWE_ALG = "RSA-OAEP-256";
const JWE_ENC = "A128GCM";

Luego vuelve a ejecutar con --enc A128GCM.

El método de almacenamiento del token también suele estar ahí:

root@kitploit:~
class TokenManager {
    static getToken() {
        return sessionStorage.getItem('auth_token');
    }
}

Si es sessionStorage, intercambia el token directamente en DevTools bajo Application > Session Storage.


Versiones afectadas

  • pac4j-jwt < 4.5.9
  • pac4j-jwt < 5.7.9
  • pac4j-jwt < 6.3.3

Corregido en 4.5.9, 5.7.9 y 6.3.3.

Descargar herramienta
flagpredeterminadodescripción
--useradminvalor para el claim sub
--roleROLE_ADMINrol a falsificar (ROLE_ADMIN, ROLE_MANAGER, ROLE_USER)
--issuerprincipal-platformvalor para el claim iss
--encA256GCMcifrado de contenido JWE (A256GCM o A128GCM)