Application Next.js intentionnellement vulnérable démontrant la RCE CVE-2025-55182 via une désérialisation non sécurisée dans les React Server Components. Inclut des scripts d'exploitation et une intégration de scanner pour la recherche et l'éducation en sécurité.
⚠️ ATTENTION : Cette application est intentionnellement vulnérable à des fins éducatives et de recherche en sécurité uniquement. NE PAS déployer en production ni exposer sur Internet.
Il s'agit d'une application Next.js vulnérable qui illustre CVE-2025-55182, une vulnérabilité critique d'exécution de code à distance dans les composants serveur React. L'application est conçue pour ressembler à un tableau de bord d'hébergement cloud professionnel tout en étant intentionnellement vulnérable à des fins de tests de sécurité et d'éducation.
Détails CVE :
curl_id.sh inclus pour tester la vulnérabiliténpm install --legacy-peer-deps
npm run dev
L'application sera disponible à l'adresse http://localhost:3000
Le dépôt contient curl_id.sh, un outil en ligne de commande basé sur le modèle Nuclei pour exploiter CVE-2025-55182.
Utilisation :
# Exécuter la commande id (par défaut)
./curl_id.sh -d localhost:3000 -c id
# Exécuter des commandes personnalisées
./curl_id.sh -d localhost:3000 -c "whoami"
./curl_id.sh -d localhost:3000 -c "uname -a"
./curl_id.sh -d localhost:3000 -c "ls -la /tmp"
# Tester des domaines distants (si vulnérables)
./curl_id.sh -d vulnapp.com -c id
Options :
-d, --domain : Domaine/URL cible (par défaut : http://localhost:3000)-c, --command : Commande à exécuter (par défaut : id)git clone https://github.com/assetnote/react2shell-scanner.git
cd react2shell-scanner
pip install -r requirements.txt
python3 scanner.py -u http://localhost:3000
python3 scanner.py -u http://localhost:3000 --safe-check
La vulnérabilité peut être exploitée en envoyant une requête POST multipart fabriquée au serveur avec :
Next-Action: xX-Nextjs-Request-IdX-Nextjs-Html-Request-IdConsultez le dépôt react2shell-scanner pour la structure exacte de la charge utile.
La vulnérabilité réside dans le mécanisme de désérialisation des composants serveur React. Lorsque Next.js traite les actions serveur, il désérialise la charge utile de la requête. Les versions vulnérables de React (19.0.0-19.2.0) ne valident ni n'assainissent correctement les données désérialisées, permettant aux attaquants de :
process.mainModule.require('child_process').execSync()X-Action-RedirectL'exploit utilise une attaque par pollution de prototype dans le processus de désérialisation JSON. La structure de la charge utile comprend :
then qui pollue la chaîne de prototypes_response avec un champ _prefix contenant du code JavaScriptexecSync() et redirige la sortie vers l'en-tête de réponsePour corriger cette vulnérabilité :
npm install react@latest react-dom@latest
npm install next@latest
npm audit fix
vuln-app-CVE-2025-55182/
├── app/
│ ├── actions.ts # Action serveur vulnérable
│ ├── layout.tsx # Mise en page racine
│ └── page.tsx # Page principale du tableau de bord
├── node_modules/ # Dépendances
├── curl_id.sh # Script d'exploitation pour les tests
├── package.json # Dépendances du projet (versions vulnérables)
├── tsconfig.json # Configuration TypeScript
├── next.config.js # Configuration Next.js
├── .gitignore # Règles d'ignorance Git
└── README.md # Ce fichier
Cette application est créée uniquement à des fins de recherche en sécurité et d'éducation.
Les auteurs et contributeurs ne sont pas responsables de tout usage abusif de ce code. L'accès non autorisé aux systèmes informatiques est illégal et peut entraîner des poursuites pénales.
Ceci est un dépôt éducatif. Les contributions qui améliorent la documentation, ajoutent de meilleurs exemples ou renforcent la valeur éducative sont les bienvenues.
Ce projet est fourni à des fins éducatives. Utilisez-le à vos propres risques.
Souvenez-vous : Ceci est une application vulnérable. Utilisez-la de manière responsable et uniquement dans des environnements contrôlés pour la recherche en sécurité et l'éducation.