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-2023-48223 — Prueba de concepto que demuestra la confusión de algoritmo JWT en la librería fast-jwt. Incluye un servidor vulnerable, un script de falsificación de tokens y una corrección de verificación para educación en seguridad. | Kitploit
Herramientas/GitHubGitHub/lucastran05/cve-2023-48223
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónLabs y Práctica
GitHublucastran05/cve-2023-48223

CVE-2023-48223

Prueba de concepto que demuestra la confusión de algoritmo JWT en la librería fast-jwt. Incluye un servidor vulnerable, un script de falsificación de tokens y una corrección de verificación para educación en seguridad.

Ver Repositorio
48hace 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-2023-48223 PoC (Confusión de Algoritmos fast-jwt)

Este repositorio demuestra la confusión de algoritmos JWT en fast-jwt cuando la verificación del token no bloquea los algoritmos permitidos.

Configuración del Entorno

Requisitos

  • Node.js 18 o más reciente
  • npm
  • OpenSSL (debe estar disponible en tu PATH de terminal)

1) Instalar dependencias

Desde la raíz del proyecto, ejecuta:

root@kitploit:~
npm install

2) Generar claves RSA

La aplicación espera estos archivos:

  • keys/private.pem
  • keys/public.pem

Ejecuta uno de los siguientes conjuntos de comandos.

PowerShell (Windows):

root@kitploit:~
New-Item -ItemType Directory -Path keys -Force | Out-Null
openssl genrsa -out keys/private.pem 2048
openssl rsa -in keys/private.pem -RSAPublicKey_out -out keys/public.pem

Linux/macOS/Git Bash:

root@kitploit:~
mkdir -p keys
openssl genrsa -out keys/private.pem 2048
openssl rsa -in keys/private.pem -RSAPublicKey_out -out keys/public.pem

3) Iniciar el servidor

root@kitploit:~
node server.js

Salida esperada:

root@kitploit:~
Server running at http://localhost:3000

Ejecución Rápida (Flujo PoC)

1) Obtener un token normal

root@kitploit:~
curl http://localhost:3000/generateToken

2) Forjar un token de administrador

root@kitploit:~
node sign.js

Copia el token impreso.

3) Llamar al endpoint de administrador con el token forjado

root@kitploit:~
node checkAdmin.js <JWT_TOKEN>

Si el ataque tiene éxito, la respuesta contiene Welcome Admin!.

Por Qué Es Vulnerable

En server.js, el verificador no restringe algoritmos:

root@kitploit:~
const verifySync = createVerifier({
  key: publicKey,
});

Sin una lista blanca de algoritmos, el servidor puede aceptar un token HS256 malicioso firmado usando la clave pública como secreto HMAC.

Explicación de Cómo Simular la Biblioteca Vulnerable (para incluir en el informe)

En las demostraciones de CVE del grupo, el objeto vulnerable es la biblioteca (no puede ejecutarse de forma independiente). Por lo tanto, se necesita una aplicación simulada para emular cómo un sistema real llama a la API de esa biblioteca. En este repositorio, el archivo server.js es la capa de aplicación simulada.

  • Endpoint /generateToken: esta ruta llama a createSigner de fast-jwt con RS256 para crear un token válido para un usuario normal (admin=false). El propósito es crear un token base "normal" para comparar con el token falsificado.
  • Endpoint /admin: esta ruta recibe un Bearer token, luego llama a createVerifier de fast-jwt para verificar el token y decide el permiso de administrador según payload.admin. El punto intencionalmente vulnerable es que el verificador no bloquea algoritmos, lo que lleva a una confusión de algoritmos.

El flujo de código complementario del PoC es:

  • sign.js: simula que un atacante llama a createSigner con HS256 y usa la clave pública como secreto para firmar un token falso (admin=true).
  • checkAdmin.js: envía una solicitud a /admin con el token falsificado para demostrar que el servidor acepta el token falso en la configuración vulnerable.

En resumen, el grupo no reescribe funciones de la biblioteca. Solo utiliza las API originales de la biblioteca vulnerable (createSigner, createVerifier) dentro de la aplicación simulada para recrear correctamente el contexto de explotación.

Solución

Restringir la verificación a RS256:

root@kitploit:~
const verifySync = createVerifier({
  key: publicKey,
  algorithms: ["RS256"],
});

Nota de Seguridad

Este proyecto es únicamente para aprendizaje de seguridad en un entorno de laboratorio controlado.

Descargar herramienta