
Hochpräziser Erkennungsmechanismus für 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 siehe unseren 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 ausführt (41*271 = 11111). Verwundbare Hosts geben das Ergebnis im Antwort-Header X-Action-Redirect als /login?a=11111 zurück.
Der Scanner testet standardmäßig den Stammpfad (/). Verwende --path oder --path-file, um benutzerdefinierte Pfade zu testen. Falls nicht verwundbar, folgt er Weiterleitungen auf denselben Host (z. B. von / zu /en/) und testet das Weiterleitungsziel. Cross-Origin-Weiterleitungen werden nicht verfolgt.
Das Flag --safe-check verwendet eine alternative Erkennungsmethode, die auf Side-Channel-Indikatoren (500-Statuscode mit spezifischem Fehler-Digest) basiert, ohne Code auf dem Ziel auszuführen. Verwende diesen Modus, wenn keine RCE-Ausführung gewünscht ist.
Das Flag --waf-bypass stellt dem Multipart-Anfrage-Body zufällige Junk-Daten voran. Dies kann helfen, die WAF-Inhaltsprüfung zu umgehen, die nur den ersten Teil von Anfrage-Bodys 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 gesetzt).
Das Flag --vercel-waf-bypass verwendet eine alternative Payload-Variante, die speziell dafür entwickelt wurde, die Vercel-WAF-Schutzmaßnahmen zu umgehen. Dabei wird eine andere Multipart-Struktur mit einem zusätzlichen Formularfeld verwendet.
Das Flag --windows wechselt die Payload von der Unix-Shell (echo $((41*271))) zu PowerShell (powershell -c "41*271") für Ziele, die unter Windows laufen.
pip install -r requirements.txt
Einen 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 Side-Channel-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)
Der RCE-PoC wurde ursprünglich von @maple3142 veröffentlicht -- wir sind unglaublich dankbar für ihre Arbeit an der Veröffentlichung eines funktionierenden PoCs.
Dieses Tool wurde ursprünglich als sichere Methode zur Erkennung der RCE entwickelt. Diese Funktion ist weiterhin über --safe-check verfügbar, den Modus „sichere Erkennung“.
Die Ergebnisse werden im Terminal ausgegeben. Bei Verwendung von -o werden verwundbare Hosts in einer JSON-Datei gespeichert, die die vollständige HTTP-Anfrage und -Antwort zur Überprüfung enthält.