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-React2Shell-Async-Scanner — Scanner RCE asincrono per CVE-2025-55182 / CVE-2025-66478 — prototype pollution → esecuzione di codice tramite React Server Actions. | Kitploit
Strumenti/GitHubGitHub/inferiorak/cve-2025-55182-react2shell-async-scanner
RicognizioneScanner di VulnerabilitàAnalisi Dinamica (Sandboxing)Analisi del CodiceExploitSfruttamento di Applicazioni WebRaccolta InformazioniCTFPenetration Testing

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 →
Apprendimento e Formazione
Sviluppo Payload
GitHubinferiorak/cve-2025-55182-react2shell-async-scanner

CVE-2025-55182-React2Shell-Async-Scanner

Scanner RCE asincrono per CVE-2025-55182 / CVE-2025-66478 — prototype pollution → esecuzione di codice tramite React Server Actions.

Vedi Repository
3165 mesi faNon ancora revisionato
Condividi

⚡ React2Shell

CVE-2025-55182 / CVE-2025-66478 - Scanner RCE Asincrono

Python CVE CVE Licenza Autore Visitatori

Prototype-pollution → Remote Code Execution via React Server Actions

Rilevamento asincrono, basato su canary di output e orientato alla versione - nessuna supposizione cieca


[!WARNING] Solo per ricerca di sicurezza autorizzata e test di penetrazione. Scansionare sistemi senza esplicita autorizzazione scritta è illegale. L'autore non si assume alcuna responsabilità per l'uso improprio di questo strumento.


Sommario

  • Panoramica della Vulnerabilità
  • Versioni Interessate
  • Come Funziona il Rilevamento
  • Installazione
  • Utilizzo
  • Riferimento Opzioni
  • Output e Verdetti
  • Modalità Browser
  • Pipeline di Rilevamento Versione

Panoramica della Vulnerabilità

Le React Server Actions inviano i dati delle azioni come dati del modulo multipart direttamente in un contesto di esecuzione lato server. A causa di una sanificazione insufficiente della prototype-pollution nelle versioni interessate di react-server-dom-webpack, un attaccante può:

  1. Iniettare un payload multipart appositamente costruito che inquina Object.prototype
  2. Sovrascrivere _response._prefix sull'oggetto di risposta interno
  3. Forzare il server ad eseguire comandi shell arbitrari tramite:
    root@kitploit:~
    process.mainModule.require('child_process').execSync(cmd)
    

Questo garantisce Remote Code Execution non autenticata su qualsiasi applicazione Next.js pubblicamente accessibile che utilizza React Server Actions con una versione vulnerabile di React.

CVE-2025-55182 - Generale: colpisce i pacchetti React 19 (react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack)
CVE-2025-66478 - Specifica: percorso di sfruttamento specifico di Next.js tramite l'endpoint / delle Server Action


Versioni Interessate

ComponenteVulnerabileCorretta
React react-server-dom-*19.0.0, 19.1.0, 19.1.1, 19.2.019.0.1, 19.1.2, 19.2.1+
Next.js 16.x16.0.0 – 16.0.616.0.7+
Next.js 15.x15.0.0-15.0.4, 15.1.0-15.1.8, 15.2.0-15.2.5, 15.3.0-15.3.5, 15.4.0-15.4.7, 15.5.0-15.5.615.0.5+, 15.1.9+, 15.2.6+, 15.3.6+, 15.4.8+, 15.5.7+
Next.js 14.xSolo build canary 14.3.0-canary.77+Tutti i 14.x stabili - NON vulnerabile
Next.js 13.x-NON vulnerabile

Come Funziona il Rilevamento

Questo scanner utilizza la verifica tramite canary basata sull'output - il metodo più affidabile per confermare l'esecuzione di codice reale con zero falsi positivi:

root@kitploit:~
1.  POST /  con header Next-Action + payload multipart per prototype-pollution
2.  Il payload esegue:  echo <canary_casuale>
3.  Il server vulnerabile solleva NEXT_REDIRECT con base64(canary) nell'URL
4.  Header della risposta:   X-Action-Redirect: /login?a=<base64(canary)>
5.  Lo scanner decodifica base64 → corrisponde al canary → RCE confermato ✓

allow_redirects=False è fondamentale - la conferma risiede nell'header, non nella destinazione del reindirizzamento.


Installazione

root@kitploit:~
git clone https://github.com/InferiorAK/React2Shell
cd React2Shell

pip install -r requirements.txt

# Necessario solo se si utilizza la modalità --browser per un rilevamento versione migliorato:
playwright install chromium
playwright install-deps chromium

Requisiti: Python 3.10+


Utilizzo

Scanner CVE-2025-55182 - Generale (React + Next.js)

root@kitploit:~
# Singolo target
python3 CVE-2025-55182_scanner.py -u https://target.com

# Scansiona una lista di URL
python3 CVE-2025-55182_scanner.py -f urls.txt

# Modalità silenziosa - stampa solo risultati RCE / Vulnerabile
python3 CVE-2025-55182_scanner.py -f urls.txt -q

# Modalità browser - Chromium headless per rilevamento versione accurato
python3 CVE-2025-55182_scanner.py -f urls.txt -b

# Opzioni complete - consigliato per scansioni su larga scala
python3 CVE-2025-55182_scanner.py -f urls.txt -b -q -c 3 -t 20

Riferimento Opzioni

Scanner CVE-2025-55182

FlagForma lungaPredefinitoDescrizione
-u--url-URL del singolo target
-f--file-File contenente un URL per riga
-o--outputoutputs/vuln.txtFile di output per i target vulnerabili
-U--unknown-outputoutputs/unknown.txtFile di output per i target con versione sconosciuta
-c--concurrency5Connessioni HTTP concorrenti
-t--timeout15Timeout per richiesta (secondi)
-q--quietoffStampa solo righe RCE / VULNERABLE
-b--browseroffFallback Playwright Chromium headless per rilevamento versione

Output e Verdetti

A ogni target scansionato viene assegnato uno dei seguenti verdetti:

VerdettoColoreSignificato
RCE🔴 RossoCanary confermato in X-Action-Redirect - esecuzione di codice remoto provata
VULNERABLE🟠 ArancioneVersione in range vulnerabile; il payload RCE non ha fatto eco (WAF / configurazione corretta / endpoint sbagliato)
Sconosciuto🟡 GialloNext.js confermato ma versione non rilevabile - RCE comunque tentato; salvato in outputs/unknown.txt per un nuovo tentativo in modalità browser
Non Vulnerabile🟢 VerdeVersione confermata corretta, o RCE esplicitamente restituito come sicuro
Saltato⚪ BiancoVersione confermata corretta o sito non Next.js - nessun PoC tentato
Errore⚪ BiancoHost irraggiungibile o connessione fallita

File di output (salvati nella cartella outputs/, creata automaticamente):

  • outputs/vuln.txt — Risultati RCE e VULNERABLE (aggiunti in coda a ogni esecuzione)
  • outputs/unknown.txt — Target con versione Sconosciuta; riprova questi con -b per un rilevamento versione accurato

Modalità Browser

Perché la versione viene mostrata come sconosciuta per oltre il 90% dei siti?

I moderni Next.js 13+ che utilizzano l'architettura App Router non incorporano mai la versione del framework nell'HTML statico. La versione esiste solo in window.next.version dopo che il JavaScript viene eseguito in un contesto reale del browser.

Senza --browser:

  • Il rilevamento della versione si basa su intestazioni HTTP, __NEXT_DATA__, script inline e file chunk con hash
  • I siti App Router restituiscono quasi sempre sconosciuto - il filtraggio basato sulla versione viene bypassato

Con --browser (-b):

  • Playwright avvia Chromium headless
  • Il JavaScript della pagina viene eseguito completamente
  • Lo scanner legge window.next.version direttamente dal DOM live
  • L'accuratezza della versione passa da ~10% a quasi il 100% sui siti Next.js moderni
root@kitploit:~
# Consigliato con modalità browser - ridurre la concorrenza (le pagine browser consumano risorse)
python3 CVE-2025-55182_scanner.py -f urls.txt -b -c 3

Pipeline di Rilevamento Versione

Lo scanner esegue fino a 7 fasi, fermandosi non appena viene trovata una versione:

root@kitploit:~
Fase 1 │ Intestazioni della Risposta HTTP
        │  X-Powered-By: Next.js X.Y.Z
        │  x-nextjs-*, x-next-version

Fase 2 │ Blocchi <script> Inline (scansione per blocco)
        │  window.next = { version: "X.Y.Z", ... }
        │  version:"X.Y.Z", router: ...      ← pattern di chiave adiacente in bundle minificato
        │  "nextVersion":"X.Y.Z"
        │  Next.js vX.Y.Z                    ← testo semplice in meta / commenti HTML
        │  __NEXT_VERSION__ = "X.Y.Z"

Fase 3 │ Blob JSON __NEXT_DATA__
        │  Solo Pages Router - "version":"X.Y.Z" sicuro in questo contesto

Fase 4 │ URL di Chunk con Hash (estratti da <script src>)
        │  /_next/static/chunks/*, /_next/static/app/*, /_next/static/runtime/*
        │  Recupera fino a 12 file bundle reali, cerca stringhe di versione

Fase 5 │ Chunk di Fallback a Nome Fisso
        │  main.js, framework.js, webpack.js, _app.js, pages/_app.js

Fase 6 │ Endpoint /package.json
        │  Modalità di sviluppo / server malconfigurati espongono questo direttamente

Fase 7 │ Browser Headless Playwright  [solo --browser / -b]
        │  Valuta window.next.version dopo la completa esecuzione JS
        │  Attivato solo quando le fasi 1–6 restituiscono "sconosciuto"

Disclaimer

Questo strumento è pubblicato solo per scopi educativi e di ricerca di sicurezza autorizzata.
L'autore, InferiorAK, non è responsabile per danni causati da un uso improprio.
Ottenere sempre il permesso scritto prima di testare qualsiasi sistema che non si possiede.


Realizzato da InferiorAK


I miei Link

Github Facebook Messenger Twitter YouTube

Scarica lo strumento