Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-55182-React2Shell-Async-Scanner — Scanner RCE asynchrone pour CVE-2025-55182 / CVE-2025-66478 — pollution de prototype → exécution de code via React Server Actions. | Kitploit
Outils/GitHubGitHub/inferiorak/cve-2025-55182-react2shell-async-scanner
ReconnaissanceScanners de VulnérabilitésAnalyse Dynamique (Sandboxing)Analyse de CodeExploitationExploitation d'Applications WebCollecte d'InformationsCTFTests d'Intrusion

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Apprentissage et Éducation
Développement de Charges Utiles
GitHubinferiorak/cve-2025-55182-react2shell-async-scanner

CVE-2025-55182-React2Shell-Async-Scanner

Scanner RCE asynchrone pour CVE-2025-55182 / CVE-2025-66478 — pollution de prototype → exécution de code via React Server Actions.

Voir le dépôt
317il y a 5 moisPas encore vérifié
Partager

⚡ React2Shell

CVE-2025-55182 / CVE-2025-66478 - Scanneur RCE Asynchrone

Python CVE CVE License Author Visitors

Prototype-pollution → Exécution de Code à Distance via les React Server Actions

Détection asynchrone, priorité à la version, canaries basées sur la sortie - pas de devinette aveugle


[!WARNING] Réservé à la recherche en sécurité autorisée et aux tests d'intrusion uniquement. Scanner des systèmes sans autorisation écrite explicite est illégal. L'auteur décline toute responsabilité en cas d'utilisation abusive de cet outil.


Table des matières

  • Aperçu de la vulnérabilité
  • Versions affectées
  • Comment fonctionne la détection
  • Installation
  • Utilisation
  • Référence des options
  • Sortie et verdicts
  • Mode navigateur
  • Pipeline de détection de version

Aperçu de la vulnérabilité

Les React Server Actions transmettent les données d'action en tant que form-data multipart directement dans un contexte d'exécution côté serveur. En raison d'une insuffisance de l'assainissement de la pollution de prototype dans les versions affectées de react-server-dom-webpack, un attaquant peut :

  1. Injecter une charge utile multipart conçue qui pollue Object.prototype
  2. Remplacer _response._prefix sur l'objet de réponse interne
  3. Forcer le serveur à exécuter des commandes shell arbitraires via :
    root@kitploit:~
    process.mainModule.require('child_process').execSync(cmd)
    

Cela donne une exécution de code à distance non authentifiée sur toute application Next.js accessible publiquement utilisant les React Server Actions avec une version affectée de React.

CVE-2025-55182 - Large : affecte les packages React 19 (react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack)
CVE-2025-66478 - Strict : voie d'exploitation spécifique à Next.js via le point de terminaison Server Action /


Versions affectées

ComposantVulnérableCorrigé
React react-server-dom-*19.0.0, 19.1.0, 19.1.1, 19.2.019.0.1, 19.1.2, 19.2.1+
Next.js 16.x16.0.0 – 16.0.616.0.7+
Next.js 15.x15.0.0-15.0.4, 15.1.0-15.1.8, 15.2.0-15.2.5, 15.3.0-15.3.5, 15.4.0-15.4.7, 15.5.0-15.5.615.0.5+, 15.1.9+, 15.2.6+, 15.3.6+, 15.4.8+, 15.5.7+
Next.js 14.x14.3.0-canary.77+ constructions canary uniquementTous les 14.x stables - NON affectés
Next.js 13.x-NON affectés

Comment fonctionne la détection

Ce scanner utilise une vérification par canarie basée sur la sortie - la méthode la plus fiable pour confirmer une exécution de code réelle avec zéro faux positif :

root@kitploit:~
1.  POST /  avec en-tête Next-Action + charge utile multipart de pollution de prototype
2.  La charge utile exécute :  echo <random_canary>
3.  Le serveur vulnérable génère NEXT_REDIRECT avec base64(canary) dans l'URL
4.  En-tête de réponse :   X-Action-Redirect: /login?a=<base64(canary)>
5.  Le scanner décode base64 → correspond à la canarie → RCE confirmé ✓

allow_redirects=False est crucial - la confirmation se trouve dans l'en-tête, pas dans la destination de redirection.


Installation

root@kitploit:~
git clone https://github.com/InferiorAK/React2Shell
cd React2Shell

pip install -r requirements.txt

# Required only if using --browser mode for improved version detection:
playwright install chromium
playwright install-deps chromium

Prérequis : Python 3.10+


Utilisation

Scanneur CVE-2025-55182 - Large (React + Next.js)

root@kitploit:~
# Single target
python3 CVE-2025-55182_scanner.py -u https://target.com

# Scan a list of URLs
python3 CVE-2025-55182_scanner.py -f urls.txt

# Quiet mode - only print RCE / Vulnerable results
python3 CVE-2025-55182_scanner.py -f urls.txt -q

# Browser mode - headless Chromium for accurate version detection
python3 CVE-2025-55182_scanner.py -f urls.txt -b

# Full options - recommended for large-scale scanning
python3 CVE-2025-55182_scanner.py -f urls.txt -b -q -c 3 -t 20

Référence des options

Scanneur CVE-2025-55182

DrapeauForme longueDéfautDescription
-u--url-URL cible unique
-f--file-Fichier contenant une URL par ligne
-o--outputoutputs/vuln.txtFichier de sortie pour les cibles vulnérables
-U--unknown-outputoutputs/unknown.txtFichier de sortie pour les cibles de version inconnue
-c--concurrency5Connexions HTTP concurrentes
-t--timeout15Délai d'attente par requête (secondes)
-q--quietdésactivéAfficher uniquement les lignes RCE / VULNERABLE
-b--browserdésactivéRepli de détection de version Playwright Chromium sans tête

Sortie et verdicts

Chaque cible scannée se voit attribuer l'un des verdicts suivants :

VerdictCouleurSignification
RCE🔴 RougeCanarie confirmée dans X-Action-Redirect - exécution de code à distance prouvée
VULNERABLE🟠 OrangeLa version est dans la plage vulnérable ; la charge utile RCE n'a pas renvoyé d'écho (WAF / configuration corrigée / mauvais point de terminaison)
Unknown🟡 JauneNext.js confirmé mais la version n'a pas pu être détectée - RCE tenté quand même ; enregistré dans outputs/unknown.txt pour nouvelle tentative en mode navigateur
Not Vulnerable🟢 VertVersion confirmée comme corrigée, ou RCE a explicitement renvoyé un résultat sûr
Skipped⚪ BlancVersion confirmée comme corrigée ou site non Next.js - aucune tentative de PoC
Error⚪ BlancHôte inaccessible ou connexion échouée

Fichiers de sortie (enregistrés dans le dossier outputs/, créés automatiquement) :

  • outputs/vuln.txt — Résultats RCE et VULNERABLE (ajoutés à chaque exécution)
  • outputs/unknown.txt — Cibles de version Unknown ; réessayez avec -b pour une détection précise de la version

Mode navigateur

Pourquoi la version apparaît-elle comme unknown pour plus de 90% des sites ?

Next.js 13+ moderne utilisant l'architecture App Router n'intègre jamais la version du framework dans le HTML statique. La version n'existe que dans window.next.version après exécution du JavaScript dans un contexte de navigateur réel.

Sans --browser :

  • La détection de version repose sur les en-têtes HTTP, __NEXT_DATA__, les scripts inline et les fichiers de chunk hachés
  • Les sites App Router renvoient presque toujours unknown - le filtrage basé sur la version est contourné

Avec --browser (-b) :

  • Playwright lance Chromium sans tête
  • Le JavaScript de la page s'exécute complètement
  • Le scanner lit window.next.version directement depuis le DOM actif
  • La précision de la version passe d'environ 10 % à près de 100 % sur les sites Next.js modernes
root@kitploit:~
# Recommended with browser mode - reduce concurrency (browser pages are resource-heavy)
python3 CVE-2025-55182_scanner.py -f urls.txt -b -c 3

Pipeline de détection de version

Le scanner exécute jusqu'à 7 étapes, s'arrêtant dès qu'une version est trouvée :

root@kitploit:~
Étape 1 │ En-têtes de réponse HTTP
        │  X-Powered-By: Next.js X.Y.Z
        │  x-nextjs-*, x-next-version

Étape 2 │ Blocs <script> Inline (scan par bloc)
        │  window.next = { version: "X.Y.Z", ... }
        │  version:"X.Y.Z", router: ...      ← motif de clé adjacente de bundle minifié
        │  "nextVersion":"X.Y.Z"
        │  Next.js vX.Y.Z                    ← texte brut dans meta / commentaires HTML
        │  __NEXT_VERSION__ = "X.Y.Z"

Étape 3 │ Objet JSON __NEXT_DATA__
        │  Pages Router uniquement - "version":"X.Y.Z" sûr dans ce contexte

Étape 4 │ URLs de Chunk Hachés (extraits de <script src>)
        │  /_next/static/chunks/*, /_next/static/app/*, /_next/static/runtime/*
        │  Récupère jusqu'à 12 fichiers de bundle réels, recherche de chaînes de version

Étape 5 │ Chunks de repli à nom fixe
        │  main.js, framework.js, webpack.js, _app.js, pages/_app.js

Étape 6 │ Point de terminaison /package.json
        │  Mode développement / serveurs mal configurés exposent cela directement

Étape 7 │ Playwright sans tête  [--browser / -b uniquement]
        │  Évalue window.next.version après exécution complète du JS
        │  Déclenché uniquement si les étapes 1–6 renvoient "unknown"

Avis de non-responsabilité

Cet outil est publié uniquement à des fins éducatives et de recherche en sécurité autorisées.
L'auteur, InferiorAK, n'est pas responsable des dommages causés par une utilisation abusive.
Obtenez toujours une autorisation écrite avant de tester un système dont vous n'êtes pas propriétaire.


Créé par InferiorAK


Mes Liens

Github Facebook Messenger Twitter YouTube

Télécharger l’outil