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-auth-bypass — Prueba de concepto (PoC) para una vulnerabilidad de omisión de autenticación que afecta a aplicaciones que utilizan pac4j-jwt con JWE (Cifrado JSON Web). | Kitploit
Herramientas/GitHubGitHub/ptechamanja/cve-2026-29000-pac4j-jwt-auth-bypass
Análisis de VulnerabilidadesExplotaciónSeguridad WebCTFPruebas de PenetraciónAutenticación
GitHubptechamanja/cve-2026-29000-pac4j-jwt-auth-bypass

CVE-2026-29000-pac4j-jwt-auth-bypass

Prueba de concepto (PoC) para una vulnerabilidad de omisión de autenticación que afecta a aplicaciones que utilizan pac4j-jwt con JWE (Cifrado JSON Web).

Ver Repositorio
1hace 5 mesesAún no revisado

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

HTB Principal — Writeup de CVE-2026-29000

Aviso legal: Este exploit fue desarrollado únicamente para la máquina retirada "Principal" de HackTheBox. Solo con fines educativos. No lo utilices contra sistemas que no poseas o para los que no tengas permiso explícito de prueba.

Información de la máquina

CampoDetalles
NombrePrincipal
PlataformaHackTheBox
Dificultad—
EstadoRetirada

Vulnerabilidad — CVE-2026-29000

Biblioteca afectada: pac4j-jwt < 4.5.9 / 5.7.9 / 6.3.3
Gravedad: Crítica
Tipo: Bypass de autenticación

Resumen

Una falla lógica en JwtAuthenticator permite a un atacante eludir la autenticación envolviendo un PlainJWT sin firmar (alg=none) dentro de un JWE (JWT cifrado).

Cuando el servidor descifra el JWE, intenta analizar el token interno como un SignedJWT. Debido a que el token interno es un PlainJWT, el objeto SignedJWT es nulo y la verificación de firma se omite por completo. El servidor entonces construye un perfil de usuario a partir de las claims no verificadas, lo que permite la suplantación total de cualquier usuario, incluidos los administradores.

Requisitos del ataque

  • La clave pública RSA del servidor (a menudo expuesta a través del endpoint JWKS)
  • Conocimiento de los nombres internos de las claims (p. ej., roles, formato del subject)

Flujo del exploit

root@kitploit:~
Crear claims maliciosas (sub=admin, role=ROLE_ADMIN)
        ↓
Construir PlainJWT sin firmar (alg=none)
        ↓
Envolver PlainJWT dentro de un JWE usando la clave pública RSA del servidor
        ↓
Enviar el token JWE al servidor
        ↓
El servidor descifra el JWE → encuentra el PlainJWT → omite la verificación de firma → concede acceso

Exploit

Consulta exploit.py


Solución

Actualiza pac4j-jwt a una versión parcheada:

  • 4.5.9 o posterior
  • 5.7.9 o posterior
  • 6.3.3 o posterior

O rechaza explícitamente los tokens internos PlainJWT después del descifrado del JWE:

root@kitploit:~
if (jwt instanceof PlainJWT) {
    throw new CredentialsException("PlainJWT not allowed inside JWE");
}

⚙️ Flujo del ataque

  1. Obtener la clave pública de:
root@kitploit:~

/api/auth/jwks

  1. Crear un JWT malicioso:
  • alg: none
  • Inyectar el rol de administrador
  1. Envolver dentro de un JWE usando la clave pública

  2. Enviar como:

root@kitploit:~

Authorization: Bearer <token>

  1. Obtener acceso no autorizado

🛠️ Uso del PoC

Instalar dependencias

root@kitploit:~
pip install jwcrypto requests

Ejecutar el exploit

root@kitploit:~
python3 poc.py \
--jwks-url http://target/api/auth/jwks \
--target http://target/api/dashboard

📤 Ejemplo de salida

root@kitploit:~
[+] Forged Token:
eyJhbGciOiJSU0EtT0FFUC0yNTYi...

[+] Browser Injection:
sessionStorage.setItem("auth_token", "eyJhbGciOiJSU0EtT0FFUC0yNTYi...")

[+] Status: 200
{"user":{"username":"admin","role":"ROLE_ADMIN"}}

🌐 Explotación en el navegador

Abre DevTools → Consola:

root@kitploit:~
sessionStorage.setItem("auth_token", "<PASTE_TOKEN_HERE>")

Luego navega a:

root@kitploit:~
/dashboard

🔥 Impacto

  • Bypass total de autenticación
  • Escalada de privilegios a administrador
  • Acceso no autorizado a la API
  • Posible movimiento lateral

🛡️ Mitigación

  • Verificar siempre las firmas JWT (JWS) después del descifrado
  • Rechazar tokens con alg: none
  • Aplicar políticas estrictas de validación de tokens
  • No confiar únicamente en el cifrado para la confianza

👤 Autor

  • Doomsknight

Referencias

  • Aviso de seguridad de pac4j
  • HackTheBox
Descargar herramienta