
RSC/Next.js RCE (CVE-2025-55182 & CVE-2025-66478)
Ein Kommandozeilen-Tool zur Erkennung von CVE-2025-55182 und CVE-2025-66478 in Next.js-Anwendungen, die React Server Components verwenden.
Technische Details zur Schwachstelle und zur Erkennungsmethodik finden Sie in unserem Blogbeitrag: https://slcyber.io/research-center/high-fidelity-detection-mechanism-for-rsc-next-js-rce-cve-2025-55182-cve-2025-66478
Standardmäßig sendet der Scanner eine präparierte Multipart-POST-Anfrage mit einem RCE-Proof-of-Concept-Payload, der eine deterministische mathematische Operation (41*271 = 11111) ausführt. Anfällige Hosts geben das Ergebnis im X-Action-Redirect-Antwortheader als /login?a=11111 zurück.
Der Scanner testet standardmäßig den Root-Pfad (/). Verwenden Sie --path oder --path-file, um benutzerdefinierte Pfade zu testen. Ist der Host nicht anfällig, folgt der Scanner Weiterleitungen auf denselben Host (z. B. von / zu /en/) und testet das Weiterleitungsziel. Cross-Origin-Weiterleitungen werden nicht verfolgt.
Die --safe-check-Flagge verwendet eine alternative Erkennungsmethode, die auf Seitenkanal-Indikatoren (Statuscode 500 mit spezifischem Error-Digest) basiert, ohne Code auf dem Ziel auszuführen. Verwenden Sie diesen Modus, wenn keine RCE-Ausführung gewünscht ist.
Die --waf-bypass-Flagge fügt dem Multipart-Anfragetext zufällige Junk-Daten voran. Dies kann helfen, die WAF-Inhaltsprüfung zu umgehen, die nur den ersten Teil von Anfragetexten analysiert. Die Standardgröße beträgt 128 KB und ist über --waf-bypass-size konfigurierbar. Wenn der WAF-Bypass aktiviert ist, wird das Timeout automatisch auf 20 Sekunden erhöht (sofern nicht explizit festgelegt).
Die --vercel-waf-bypass-Flagge verwendet eine alternative Payload-Variante, die speziell zur Umgehung des Vercel-WAF-Schutzes entwickelt wurde. Dabei wird eine andere Multipart-Struktur mit einem zusätzlichen Formularfeld verwendet.
Die --windows-Flagge wechselt den Payload für Ziele, die unter Windows laufen, von der Unix-Shell (echo $((41*271))) zu PowerShell (powershell -c "41*271").
pip install -r requirements.txt
Einzelnen Host scannen:
python3 scanner.py -u https://example.com
Eine Liste von Hosts scannen:
python3 scanner.py -l hosts.txt
Mit mehreren Threads scannen und Ergebnisse speichern:
python3 scanner.py -l hosts.txt -t 20 -o results.json
Mit benutzerdefinierten Headern scannen:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
Sichere Seitenkanal-Erkennung verwenden:
python3 scanner.py -u https://example.com --safe-check
Windows-Ziele scannen:
python3 scanner.py -u https://example.com --windows
Mit WAF-Bypass scannen:
python3 scanner.py -u https://example.com --waf-bypass
Benutzerdefinierte Pfade scannen:
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 Single URL to check
-l, --list File containing hosts (one per line)
-t, --threads Number of concurrent threads (default: 10)
--timeout Request timeout in seconds (default: 10)
-o, --output Output file for results (JSON)
--all-results Save all results, not just vulnerable hosts
-k, --insecure Disable SSL certificate verification
-H, --header Custom header (can be used multiple times)
-v, --verbose Show response details for vulnerable hosts
-q, --quiet Only output vulnerable hosts
--no-color Disable colored output
--safe-check Use safe side-channel detection instead of RCE PoC
--windows Use Windows PowerShell payload instead of Unix shell
--waf-bypass Add junk data to bypass WAF content inspection
--waf-bypass-size Size of junk data in KB (default: 128)
--path Custom path to test (can be used multiple times)
--path-file File containing paths to test (one per line)
Das RCE-PoC wurde ursprünglich von @maple3142 offengelegt -- wir sind unglaublich dankbar für die Arbeit, die in die Veröffentlichung eines funktionierenden PoC geflossen ist.
Dieses Tool wurde ursprünglich als sicherer Weg zur Erkennung der RCE entwickelt. Diese Funktionalität ist weiterhin über --safe-check, den Modus „safe detection“, verfügbar.
Die Ergebnisse werden im Terminal ausgegeben. Bei Verwendung von -o werden anfällige Hosts in einer JSON-Datei gespeichert, die die vollständige HTTP-Anfrage und -Antwort zur Überprüfung enthält.