Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
react2shell — Kit de exploits RCE pour CVE-2025-55182 et CVE-2025-66478 dans les composants serveur React. Comprend plusieurs variantes d'exploits, des scripts de détection, un serveur de test vulnérable et une analyse technique approfondie de la vulnérabilité de désérialisation du protocole Flight. | Kitploit
Outils/GitHubGitHub/freeqaz/react2shell
Analyse Dynamique (Sandboxing)Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebTests d'IntrusionArticles et RechercheApprentissage et ÉducationDéveloppement de Charges Utiles
GitHubfreeqaz/react2shell

react2shell

681822il y a 10 moisVérifié par Kitploit
Voir le dépôt

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

Kit de exploits RCE pour CVE-2025-55182 et CVE-2025-66478 dans les composants serveur React. Comprend plusieurs variantes d'exploits, des scripts de détection, un serveur de test vulnérable et une analyse technique approfondie de la vulnérabilité de désérialisation du protocole Flight.

Partager

React2Shell : RCE 0-day dans React Server Components

CVE-2025-55182 (React) et CVE-2025-66478 (Next.js)

Ce dépôt contient du code d'exploit destiné uniquement aux tests de sécurité autorisés et à des fins éducatives.

Voir aussi : Plusieurs chercheurs ont publié des analyses de cette vulnérabilité. Consultez la section Références pour des perspectives supplémentaires, des techniques d'exploitation et des méthodes de détection.

Qu'est-ce que c'est ?

Le mercredi 3 décembre 2025, une vulnérabilité critique d'exécution de code à distance dans les React Server Components a été divulguée publiquement. Ce bug, surnommé « React2Shell », permet à un attaquant non authentifié d'exécuter du code arbitraire sur n'importe quel serveur exécutant des versions vulnérables de React RSC ou du Next.js App Router en envoyant une seule requête HTTP.

Étant donné l'omniprésence de Next.js – il alimente une part importante du web moderne – l'impact de cette vulnérabilité est sévère. Toute application Next.js utilisant l'App Router (par défaut pour les nouveaux projets depuis Next.js 13) avec RSC activé est vulnérable. Pas de configuration particulière. Pas de points d'accès spécifiques. Simplement une requête POST vers n'importe quelle route.

La vulnérabilité réside dans le protocole « Flight » de React, le format de sérialisation utilisé pour transmettre les données entre le serveur et le client dans les React Server Components. L'absence d'une vérification hasOwnProperty lors de la désérialisation permet de parcourir la chaîne de prototypes, pour finalement atteindre le constructeur JavaScript Function et exécuter du code contrôlé par l'attaquant.

La faille existe dans les paquets react-server-dom-webpack, react-server-dom-turbopack et react-server-dom-parcel de React. Next.js, en tant que consommateur principal de RSC, hérite de la vulnérabilité via son App Router.

Qui est impacté ?

De nombreux services sont potentiellement vulnérables. Next.js est l'un des frameworks React les plus populaires, utilisé par des entreprises de toutes tailles – des start-ups aux grandes entreprises. L'App Router avec React Server Components est l'architecture par défaut pour les nouveaux projets Next.js depuis la version 13, ce qui signifie que la plupart des déploiements Next.js modernes sont affectés.

Toute application utilisant :

  • React Server Components avec des paquets react-server-dom-* vulnérables (19.0.0 - 19.2.0)
  • Next.js App Router versions 15.x (avant 15.0.5) et 16.x (avant 16.0.7)

Cela inclut les déploiements en production sur Vercel, AWS, les infrastructures auto-hébergées et partout ailleurs où les applications Next.js App Router sont exécutées.

Non concernés :

  • Les applications Next.js Pages Router (pas de RSC)
  • Les versions stables Next.js 13.x et 14.x
  • Les applications utilisant uniquement le rendu client de React
  • Les déploiements Edge Runtime (pas de process.mainModule disponible)

Versions affectées

React Server Components

PaquetVulnérableCorrigé
react-server-dom-webpack19.0.0, 19.1.0, 19.1.1, 19.2.019.0.1, 19.1.2, 19.2.1+
react-server-dom-turbopack19.0.0, 19.1.0, 19.1.1, 19.2.019.0.1, 19.1.2, 19.2.1+
react-server-dom-parcel19.0.0, 19.1.0, 19.1.1, 19.2.019.0.1, 19.1.2, 19.2.1+

Next.js

Ligne de versionVulnérableCorrigé
15.0.x< 15.0.515.0.5+
15.1.x< 15.1.915.1.9+
15.2.x< 15.2.615.2.6+
15.3.x< 15.3.615.3.6+
15.4.x< 15.4.815.4.8+
15.5.x< 15.5.715.5.7+
16.0.x< 16.0.716.0.7+

Atténuation

Mettez à jour immédiatement. Il n'existe pas de contournement.

Pour les applications Next.js :

npm install next@latest
# or
pnpm update next

Pour une utilisation directe de React RSC :

npm install react-server-dom-webpack@latest

Vérifiez vos versions installées :

npm ls next react-server-dom-webpack react-server-dom-turbopack

Comment fonctionne l'exploit

Prérequis de l'exploit

  1. Un serveur exécutant des React Server Components vulnérables (via Next.js App Router ou utilisation directe RSC)
  2. Un accès réseau pour envoyer une requête HTTP POST
  3. C'est tout. Pas d'authentification. Pas de point d'accès spécifique. N'importe quelle route fonctionne.

L'attaque

Plusieurs vecteurs d'attaque ont été découverts pour cette vulnérabilité. Le plus courant – et celui qui fonctionne sans aucun prérequis – utilise la pollution de prototype via le système de référence du protocole Flight de React.

L'exploit envoie une requête POST multipart fabriquée avec un en-tête Next-Action. La charge utile abuse du système de référence pour :

  1. Parcourir la chaîne de prototypes via $1:__proto__:then
  2. Construire un faux objet « chunk » qui imite la classe Chunk interne de React
  3. Tromper le désérialiseur pour qu'il appelle le constructeur JavaScript Function
  4. Exécuter du code arbitraire lorsque la fonction résultante est invoquée comme une promesse thenable
POST / HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----Boundary
Next-Action: x

------Boundary
Content-Disposition: form-data; name="0"

{"then":"$1:__proto__:then","status":"resolved_model","value":"{...}","_response":{...}}
------Boundary
Content-Disposition: form-data; name="1"

"$@0"
------Boundary--

Le code s'exécute pendant la désérialisation, avant toute validation de l'ID d'action. Cela signifie que n'importe quelle valeur d'en-tête Next-Action déclenche le chemin de code vulnérable – aucun ID d'action valide n'est requis.

D'autres vecteurs d'attaque existent, notamment les références de fonction $F et les gadgets de module directs. Ceux-ci nécessitent généralement un ID d'action valide. Voir Vecteurs d'attaque alternatifs pour plus de détails.

La cause racine

Le protocole Flight de React résout les références comme $1:path:to:value en les divisant par les deux-points et en parcourant l'objet :

// ReactFlightReplyServer.js - getOutlinedModel()
for (let i = 1; i < path.length; i++) {
  value = value[path[i]];  // Pas de vérification hasOwnProperty !
}

L'ironie : En haut de ce même fichier, ligne 35 :

import hasOwnProperty from 'shared/hasOwnProperty';

La garde a été importée. Elle était disponible. Elle n'a simplement pas été utilisée dans la seule boucle où elle comptait le plus.

Ce seul contrôle manquant permet à $1:__proto__:then de parcourir un objet chunk, de remonter la chaîne de prototypes jusqu'à Chunk.prototype.then – une fonction qui traite les objets de type Promise. En fabriquant un faux chunk avec les bonnes propriétés, nous contrôlons quel code est exécuté.

Reproduction locale

Clonez le serveur de test vulnérable :

git clone https://github.com/freeqaz/react2shell
cd react2shell/vulnerable-next-server
pnpm install
pnpm dev

Dans un autre terminal :

./detect.sh http://localhost:3443

Un serveur vulnérable renvoie HTTP 500 avec E{"digest" dans le corps de la réponse. Pour démontrer l'exécution de code :

./exploit-redirect.sh http://localhost:3443 "id"

La sortie de la commande apparaît dans la réponse. Pour une exploration interactive :

./shell.sh http://localhost:3443

Contenu de ce dépôt

Serveur de test vulnérable

Le répertoire vulnerable-next-server/ contient une application Next.js 16.0.6 + React 19.2.0 préconfigurée pour des tests locaux sécurisés. Elle écoute par défaut sur le port 3443. Il s'agit d'une configuration minimale de l'App Router démontrant que les configurations par défaut sont vulnérables.

Scripts d'exploit

Nous avons développé plusieurs variantes d'exploit pour gérer différents scénarios :

Télécharger l’outil