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 — Recherche de thèse de master sur CVE-2025-55182 (React2Shell). Framework d'exploitation modulaire avec 6 scénarios d'attaque (RCE, exfiltration, défacement), shell inverse interactif, et un laboratoire vulnérable complet pour étudier la pollution de prototype et la désérialisation non sécurisée dans les composants serveur React. | Kitploit
Outils/GitHubGitHub/devianntsec/cve-2025-55182
Frameworks d'ExploitationAnalyse des VulnérabilitésExploitationExploitation d'Applications WebPost-ExploitationTests d'IntrusionArticles et RechercheApprentissage et ÉducationOutil d'Accès à Distance
Développement de Charges Utiles
Labs et Pratique
GitHubdevianntsec/cve-2025-55182

CVE-2025-55182

Voir le dépôt
15il y a 4 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

Recherche de thèse de master sur CVE-2025-55182 (React2Shell). Framework d'exploitation modulaire avec 6 scénarios d'attaque (RCE, exfiltration, défacement), shell inverse interactif, et un laboratoire vulnérable complet pour étudier la pollution de prototype et la désérialisation non sécurisée dans les composants serveur React.

Partager

CVE-2025-55182 — React2Shell : Exploitation avancée et recherche de mémoire de master

Platform Language License: MIT Research CVSS

Désérialisation de données non fiables + Pollution du prototype dans les composants serveur React
Exécution de code à distance sans authentification via les actions serveur Next.js
Versions concernées : React 19.0.0 - 19.2.0 · Correctif : React 19.0.1 / 19.1.2 / 19.2.1 (3 décembre 2025)


Démonstration de l'exploit avancé – commandes RCE basiques, shell interactif et multiples vecteurs d'attaque contre une application Next.js vulnérable

Description

Ce dépôt contient mes recherches de mémoire de master sur CVE-2025-55182, une vulnérabilité critique (CVSS v3.1 : 10.0) d'exécution de code à distance dans les composants serveur React.

La vulnérabilité provient d'un mécanisme de désérialisation non sécurisé dans le protocole React Flight. Lors du traitement des actions serveur, Next.js désérialise les charges utiles multipart entrants sans validation appropriée. Un attaquant peut fabriquer une charge utile malveillante qui pollue la chaîne de prototypes et injecte du JavaScript arbitraire, exécuté sur le serveur via le constructeur Function (puis via child_process.execSync()).

Note concernant CVE-2025-66478 : Vercel a émis un CVE parallèle pour suivre l'impact spécifique à Next.js de cette même vulnérabilité. Comme Next.js regroupe React de manière internalisée, de nombreux scanners de dépendances ne le détectent pas automatiquement comme vulnérable. La base de données nationale américaine des vulnérabilités (NVD) a officiellement rejeté CVE-2025-66478 comme un doublon de CVE-2025-55182, bien qu'elle continue d'être référencée dans l'avis de sécurité de Vercel.

Vulnérabilités consécutives : L'équipe React a ensuite divulgué deux problèmes supplémentaires présents dans les premières versions de correctif (19.0.1, 19.1.2, 19.2.1) : CVE-2025-55184 (Déni de service, CVSS 7.5) et CVE-2025-55183 (Exposition de code source, CVSS 5.3). Les utilisateurs doivent mettre à niveau vers 19.0.2, 19.1.3 ou 19.2.2 pour corriger les trois.

Ma contribution

AspectDescription
Quatre modules d'attaqueSupprimer des projets, défigurer le site web, voler les variables d'environnement, arrêter les serveurs
Shell interactifShell persistant avec commandes spéciales et capacités de restauration
Exfiltration stableLecture ligne par ligne pour contourner les limitations de taille des en-têtes HTTP
Script de restaurationRestauration sécurisée du laboratoire après les attaques
Documentation académiqueCause racine, décomposition de la charge utile et chronologie de la vulnérabilité

Structure du dépôt

root@kitploit:~
CVE-2025-55182/
├── README.md                        # Ce fichier
├── LICENSE                          # Licence MIT
│
├── exploit/
│   ├── exploit-explanation.md       # Documentation d'utilisation de l'exploit
│   └── react2shell.py               # Exploit principal — 4 modules d'attaque + shell interactif
│
├── vulnerable-app/                  # Application Next.js vulnérable
│   ├── README.md                    # Crédits originaux de vulnapp
│   ├── package.json                 # React 19.0.0 (vulnérable)
│   ├── app/                         # Code source de l'application
│   ├── curl_id.sh                   # Script d'exploit original (par zack0x01)
│   └── scripts/
│       └── restore.sh               # Script de restauration (ma contribution)
│
└── docs/
    ├── screenshots/                 # Démonstrations d'exploitation
    │   ├── 01-app-initial.png
    │   ├── 02-rce-basic.png
    │   ├── 03-interactive-shell.png
    │   ├── 04-no-payload.png
    │   ├── 05-delete-result.png
    │   ├── 06-deface.png
    │   ├── 07-shutdown-servers.png
    │   ├── 08-restore-from-script.png
    │   └── 09-restore-from-interactive-shell.png
    │
    └── analysis/
        ├── 01-root-cause.md         # Analyse de la cause racine de la vulnérabilité
        ├── 02-payload-breakdown.md  # Structure de la charge utile et flux d'exécution
        └── 03-timeline.md           # Chronologie du CVE

Démarrage rapide

Prérequis

  • Node.js 18+ et npm
  • Python 3.9+
  • Application Next.js vulnérable (fournie dans vulnerable-app/)
  • VM isolée recommandée pour les tests

Étape 1 — Lancer l'application vulnérable

root@kitploit:~
cd vulnerable-app
npm install --legacy-peer-deps
npm run dev
# Application disponible sur http://localhost:3000

Étape 2 — Exécuter l'exploit

root@kitploit:~
cd ../exploit

# Vérifier si la cible est vulnérable
python3 react2shell.py -u http://localhost:3000 --check

# Exécuter une commande unique
python3 react2shell.py -u http://localhost:3000 -c "whoami"

# Mode shell interactif
python3 react2shell.py -u http://localhost:3000 -i

Modules d'attaque

ModuleCommandeDescriptionImpact
Supprimer les projets--delete-projectsSupprime tous les projets du tableau de bordDestruction de données
Défigurer--deface "message"Remplace la page principaleDéfiguration
Voler l'environnement--steal-envVole les variables d'environnementExfiltration
Arrêter les serveurs--shutdown-serversArrête tous les serveursDéni de service

Aperçu technique

Cause racine de la vulnérabilité

Les composants serveur React utilisent un mécanisme de sérialisation/désérialisation personnalisé (le protocole "Flight") pour envoyer les données des composants du serveur au client. Lors du traitement des actions serveur, le serveur désérialise les charges utiles entrantes sans validation appropriée.

Le défaut fondamental est une confiance comportementale : le désérialiseur vérifie typeof obj.then === 'function' pour identifier les promesses, sans vérifier que la propriété appartient directement à l'objet. Cela permet à un attaquant d'empoisonner Object.prototype.then, faisant apparaître chaque objet simple comme un "thenable".

Un attaquant peut fabriquer une charge utile malveillante qui :

  1. Pollue la chaîne de prototypes en utilisant __proto__:then
  2. Redirige la résolution vers le constructeur Function via $1:constructor:constructor
  3. Exécute du JavaScript arbitraire via new Function(_prefix)
  4. Exécute des commandes système via process.mainModule.require('child_process').execSync()
  5. Exfiltre la sortie via l'en-tête de réponse HTTP X-Action-Redirect
root@kitploit:~
User-mode (non authentifié)
  │
  ├─ POST / (point de terminaison d'action serveur Next.js)
  │    ├─ En-têtes : Next-Action: x
  │    └─ Corps multipart avec JSON malveillant
  │
  └─ Le désérialiseur React Flight traite la charge utile
       └─ Pollution du prototype via __proto__:then
            └─ Constructeur Function atteint via $1:constructor:constructor
                 └─ new Function(_prefix) exécute le JavaScript de l'attaquant
                      └─ execSync() exécute la commande système
                           └─ Sortie intégrée dans l'erreur NEXT_REDIRECT
                                └─ NextJS convertit en en-tête X-Action-Redirect

Clarification du périmètre

La vulnérabilité affecte toute application Next.js utilisant le Routeur d'application avec composants serveur React — la configuration par défaut depuis Next.js 14. Les actions serveur définies explicitement ne sont pas requises ; la simple présence des packages RSC concernés est suffisante.

Pourquoi c'est important

Cette vulnérabilité permet à un attaquant non authentifié de :

  • Exécuter des commandes arbitraires sur le serveur
  • Voler des variables d'environnement et des identifiants
  • Modifier ou supprimer des données d'application
  • Utiliser le serveur comme point de pivot pour d'autres attaques

Chaîne d'attaque

root@kitploit:~
1. [ATTAQUANT] Envoie un POST multipart façonné à n'importe quel point de terminaison d'action serveur
2. [SERVEUR] Le désérialiseur React traite le JSON malveillant
3. [SERVEUR] La pollution du prototype empoisonne Object.prototype.then
4. [SERVEUR] L'objet simple est traité comme un thenable ; le constructeur Function est atteint
5. [SERVEUR] new Function(_prefix) exécute le JavaScript arbitraire de l'attaquant
6. [SERVEUR] execSync() exécute la commande système ; la sortie est capturée
7. [SERVEUR] La sortie est intégrée dans le digest d'erreur NEXT_REDIRECT
8. [SERVEUR] Next.js renvoie un en-tête X-Action-Redirect avec la sortie encodée en URL
9. [ATTAQUANT] Extrait et décode le résultat de la commande de l'en-tête

Tests empiriques

Tous les tests ont été effectués sur une VM VirtualBox isolée exécutant Kali Linux 2026.1 avec Next.js 15.0.0 et React 19.0.0, sans exposition réseau.

Module d'attaqueRésultatNotes
Exécution de commande✅ RCE confirméewhoami, id, uname -a fonctionnent de manière fiable
Suppression de projets✅ Tableau de bord modifiéProjets supprimés, structure React préservée
Défiguration✅ Site web défiguréMessage personnalisé affiché
Vol d'environnement✅ Variables d'environnement extraitesSauvegardées dans stolen_env.txt
Arrêt des serveurs✅ Tous les serveurs affichés comme arrêtésInterface mise à jour, React fonctionnel
Shell interactif✅ Shell persistantCommandes spéciales disponibles
Restauration✅ État d'origine restauréVia le script restore.sh

Déterminisme : Contrairement aux exploits probabilistes (ex. heap spray), CVE-2025-55182 est complètement déterministe — toute requête HTTP POST correctement formatée produit une RCE avec une probabilité de 1 sur tout système non patché exécutant React 19.0.0–19.2.0 avec les composants serveur React activés.


Documentation technique

DocumentDescription
Analyse de la cause racineDéfaut de désérialisation et pollution du prototype dans React Flight
Décomposition de la charge utileAnalyse ligne par ligne de la structure JSON malveillante
Chronologie du CVEDécouverte, divulgation et chronologie des correctifs

Contexte académique

Cette recherche fait partie de ma mémoire de master en cybersécurité (UCAM — Campus Internacional de Ciberseguridad), analysant des vulnérabilités N-Day dans plusieurs environnements.

Ce CVE représente le vecteur framework JavaScript moderne au sein de la mémoire, démontrant :

  • Les vulnérabilités de désérialisation dans les composants serveur React
  • La pollution de prototype comme primitive d'exécution de code à distance
  • L'exploitation des actions serveur Next.js
  • Les techniques de post-exploitation dans les environnements Node.js
  • Les méthodologies de restauration sécurisée en laboratoire

Mots-clés : RCE · Pollution de prototype · Désérialisation · React · Next.js · Actions serveur · CVE-2025-55182


Auteur

Annais Molina (devianntsec) — Chercheuse en sécurité | Master en cybersécurité (UCAM)

GitHub LinkedIn Blog Email


Remerciements

  • @zack0x01 — Application vulnérable originale
  • Lachlan Davidson (Carapace) — Découverte originale et divulgation responsable
  • AssetNote — Outil de détection react2shell-scanner
  • Moritz Sanft — Premier PoC public fonctionnel (~30h après divulgation)
  • maple3142 — PoC public du rapporteur original (5 décembre 2025)

Licence

Licence MIT — voir le fichier LICENSE


Avis de non-responsabilité légal

Ce dépôt est fourni à des fins éducatives et de recherche en sécurité uniquement, dans le cadre d'un mémoire de master académique. Tous les tests ont été effectués sur des machines virtuelles isolées sans exposition réseau. Utilisez-le uniquement sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation écrite explicite de tester. Toute utilisation non autorisée contre des systèmes est illégale et peut entraîner des poursuites pénales.

© 2026 Annais Molina · Mémoire de master en cybersécurité
UCAM Universidad Católica San Antonio de Murcia · Campus Internacional de Ciberseguridad
Télécharger l’outil