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-Lab — Biblioteca de laboratorio de prueba de concepto que demuestra la CVE-2026-29000 en pac4j-jwt, comparando versiones vulnerables y parcheadas con Docker para mostrar la aceptación y el rechazo de JWT falsificados. | Kitploit
Herramientas/GitHubGitHub/rootdirective-sec/cve-2026-29000-lab
Análisis de VulnerabilidadesExplotaciónSeguridad WebAutenticación
GitHubrootdirective-sec/cve-2026-29000-lab

CVE-2026-29000-Lab

Biblioteca de laboratorio de prueba de concepto que demuestra la CVE-2026-29000 en pac4j-jwt, comparando versiones vulnerables y parcheadas con Docker para mostrar la aceptación y el rechazo de JWT falsificados.

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

CVE-2026-29000 — Laboratorio PoC a nivel de librería para pac4j-jwt

TL;DR

Este repositorio contiene un PoC a nivel de librería para CVE-2026-29000 en pac4j-jwt.

Compara el comportamiento vulnerable y el corregido con dos casos:

  • Caso base: un token legítimo debe ser aceptado
  • Ataque: un token falsificado debe ser aceptado en versiones vulnerables y rechazado en la versión corregida
VersiónCaso baseAtaqueResultado
6.0.3✅✅Vulnerable
6.0.4.1✅✅Vulnerable
6.3.3✅❌Corregida

Este PoC demuestra la creación de perfiles autenticados con subject y roles controlados por el atacante en versiones vulnerables, mientras que la versión corregida rechaza el token falsificado.


Qué es este proyecto

Esto no es una demo de aplicación web.

Es un pequeño programa Java que llama a JwtAuthenticator directamente y compara múltiples versiones de pac4j-jwt dentro de Docker.

El objetivo es demostrar tres cosas:

  1. los tokens legítimos siguen funcionando
  2. las claims falsificadas controladas por el atacante son aceptadas por las versiones vulnerables
  3. las claims falsificadas controladas por el atacante son rechazadas por la versión corregida

Por qué se seleccionaron estas versiones

Las versiones probadas fueron elegidas deliberadamente:

  • 6.0.3 — incluida porque un informe técnico público reportó un PoC funcional en esta versión
  • 6.0.4.1 — incluida porque los datos públicos de avisos la sitúan dentro del rango 6.x afectado
  • 6.3.3 — incluida porque es la versión corregida para la línea 6.x

Esto le da al laboratorio tres puntos de referencia útiles:

  • una versión de referencia con PoC público
  • una versión afectada confirmada por aviso
  • la versión corregida

Estructura del proyecto

root@kitploit:~
.
├── docker-compose.yml
├── Dockerfile
├── pom.xml
└── src/main/java/lab/Repro.java

Roles de los archivos

  • docker-compose.yml Define la matriz de pruebas para cada versión.

  • Dockerfile Compila y ejecuta el PoC dentro de un contenedor.

  • pom.xml Define las dependencias y compila un fat JAR ejecutable.

  • src/main/java/lab/Repro.java El harness real del PoC.


Qué significan los servicios

El archivo docker-compose.yml define tres servicios:

  • v603 = probar pac4j-jwt 6.0.3
  • v6041 = probar pac4j-jwt 6.0.4.1
  • patched = probar pac4j-jwt 6.3.3

Entonces estos comandos significan "ejecutar el PoC una vez contra esa versión específica":

root@kitploit:~
docker compose run --rm v603
docker compose run --rm v6041
docker compose run --rm patched

--rm significa que el contenedor temporal se elimina después de que finaliza la ejecución.


Cómo ejecutarlo

Compilar

root@kitploit:~
docker compose build --no-cache

Ejecutar

root@kitploit:~
docker compose run --rm v603
docker compose run --rm v6041
docker compose run --rm patched

Qué hace el PoC

Para cada versión, el programa ejecuta dos casos.

1) Caso base

Genera un token legítimo y lo valida a través de JwtAuthenticator.

Resultado esperado:

  • aceptado en todas las versiones probadas

2) Ataque

Genera un token falsificado con claims controladas por el atacante y lo valida a través de JwtAuthenticator.

Resultado esperado:

  • versiones vulnerables → identidad falsificada aceptada
  • versión corregida → token falsificado rechazado

Cómo leer la salida

Salida vulnerable

Deberías ver algo como esto:

root@kitploit:~
[case] baseline
  result: ACCEPTED
  observed_subject: alice
  observed_roles: [ROLE_USER]

[case] attack
  result: ACCEPTED
  observed_subject: admin#override
  observed_roles: [ROLE_SUPERUSER, ROLE_ADMIN]

[summary]
  conclusion: VULNERABLE: forged token accepted

Significado:

  • el token normal funciona
  • el token falsificado también es aceptado
  • el subject y los roles fueron reemplazados con valores controlados por el atacante

Salida corregida

Deberías ver algo como esto:

root@kitploit:~
[case] baseline
  result: ACCEPTED
  observed_subject: alice
  observed_roles: [ROLE_USER]

[case] attack
  result: REJECTED
  reason: CredentialsException: A non-signed JWT cannot be accepted as signature configurations have been defined

[summary]
  conclusion: PATCHED: forged token rejected

Significado:

  • el token normal funciona
  • el token falsificado es rechazado
  • la versión corregida ya no acepta la ruta JWT interno sin firma utilizada por el ataque

Por qué este repositorio se centra en el comportamiento de la librería en lugar de un script de token genérico

Este CVE afecta una ruta de autenticación a nivel de librería, no una única aplicación con un modelo de roles universal.

La parte reutilizable es la forma del ataque:

  • claims falsificadas controladas por el atacante
  • cifradas como JWE
  • pasadas a JwtAuthenticator

Lo que no es universal en aplicaciones reales:

  • nombres de claims
  • nombres de roles
  • mapeo de autorización
  • material de claves / configuración JWKS
  • manejo de perfiles específico de la aplicación

Debido a eso, este repositorio se centra en demostrar que la librería acepta claims falsificadas controladas por el atacante en versiones vulnerables, en lugar de pretender que existe un token universal que funcionaría automáticamente contra aplicaciones arbitrarias.


Capturas de pantalla

  1. docker compose run --rm v603
  2. docker compose run --rm v6041
  3. docker compose run --rm patched

Versión vulnerable: 6.0.3

example 603 output

Versión vulnerable: 6.0.4.1

example 6041 output

Versión corregida: 6.3.3

example patched output


Referencias

  • Aviso de seguridad de pac4j para JwtAuthenticator
  • Base de datos de avisos de GitHub: CVE-2026-29000
  • Entrada NVD: CVE-2026-29000
  • Informe técnico de CodeAnt: PoC de omisión de autenticación de clave pública

Conclusión final

Este proyecto demuestra tres hechos fundamentales:

  1. los tokens base legítimos son aceptados en todas las versiones probadas
  2. las claims falsificadas controladas por el atacante son aceptadas en 6.0.3 y 6.0.4.1
  3. las claims falsificadas controladas por el atacante son rechazadas en 6.3.3

Esta es la evidencia central vulnerable-versus-corregida para este CVE en este repositorio.

En versiones vulnerables, el token falsificado no solo se analiza — produce un perfil autenticado con subject y roles controlados por el atacante.

Descargar herramienta