
RSC/Next.js RCE (CVE-2025-55182 & CVE-2025-66478)
Un outil en ligne de commande pour détecter CVE-2025-55182 et CVE-2025-66478 dans les applications Next.js utilisant les 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 spécialement conçue contenant une preuve de concept (PoC) d'exécution de code à distance (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 le chemin racine (/) par défaut. Utilisez --path ou --path-file pour tester des chemins personnalisés. Si la cible n'est pas vulnérable, il suit les redirections vers le même hôte (par exemple, / vers /en/) et teste la destination de la redirection. Les redirections vers d'autres origines ne sont pas suivies.
L'option --safe-check utilise une méthode de détection alternative qui repose sur des indicateurs de canal auxiliaire (code de statut 500 avec un digest d'erreur spécifique) sans exécuter de code sur la cible. Utilisez ce mode lorsque l'exécution de code à distance n'est pas souhaitée.
L'option --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 par les WAF qui n'analysent 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'expiration est automatiquement augmenté à 20 secondes (sauf s'il est défini explicitement).
L'option --vercel-waf-bypass utilise une variante de charge utile alternative spécialement conçue pour contourner les protections WAF de Vercel. Elle utilise une structure multipart différente avec un champ de formulaire supplémentaire.
L'option --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
Analyser un seul hôte :
python3 scanner.py -u https://example.com
Analyser une liste d'hôtes :
python3 scanner.py -l hosts.txt
Analyser avec plusieurs threads et enregistrer les résultats :
python3 scanner.py -l hosts.txt -t 20 -o results.json
Analyser 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ûre par canal auxiliaire :
python3 scanner.py -u https://example.com --safe-check
Analyser des cibles Windows :
python3 scanner.py -u https://example.com --windows
Analyser avec contournement WAF :
python3 scanner.py -u https://example.com --waf-bypass
Analyser des chemins personnalisés :
python3 scanner.py -u https://example.com --path /_next
python3 scanner.py -u https://example.com --path /_next --path /api
python3 scanner.py -u https://example.com --path-file paths.txt
-u, --url URL unique à vérifier
-l, --list Fichier contenant les hôtes (un par ligne)
-t, --threads Nombre de threads simultanés (défaut : 10)
--timeout Délai d'expiration de la requête en secondes (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ûre par canal auxiliaire au lieu de la PoC 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 par le WAF
--waf-bypass-size Taille des données aléatoires en Ko (défaut : 128)
--path Chemin personnalisé à tester (peut être utilisé plusieurs fois)
--path-file Fichier contenant les chemins à tester (un par ligne)
La PoC RCE a été initialement divulguée par @maple3142 — nous lui sommes extrêmement reconnaissants pour son travail de publication d'une PoC 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 de « détection sûre ».
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.