
Framework de evaluación de seguridad desde línea de comandos para aplicaciones React y Next.js, que analiza los React Server Components en busca de configuraciones incorrectas, con escaneo de múltiples objetivos, detección de WAF y soporte de proxy.
Marco de evaluación de seguridad de aplicaciones web para aplicaciones React y Next.js
Esta herramienta está diseñada únicamente para pruebas de seguridad autorizadas.
Los usuarios son los únicos responsables de garantizar el cumplimiento de todas las leyes aplicables.
El Escáner React2Shell es un marco de evaluación de seguridad de línea de comandos diseñado para ayudar a los profesionales de la seguridad a identificar vulnerabilidades potenciales en aplicaciones web React y Next.js. Se centra en analizar las implementaciones de React Server Components (RSC) para detectar configuraciones de seguridad incorrectas comunes.
| Característica | Descripción |
|---|---|
| 🎯 Escaneo de múltiples objetivos | Escanea URL individuales o listas de objetivos |
| 🔄 Pruebas concurrentes | Multihilo para una evaluación eficiente |
| 🛡️ Detección de WAF | Identifica y analiza las respuestas del WAF |
| 📊 Seguimiento del progreso | Barra de progreso visual con tqdm |
| 🔧 Encabezados configurables | Inyección de encabezados personalizados |
| 🌐 Soporte de proxy | Enrutamiento a través de proxies HTTP/HTTPS |
| 📝 Formatos de salida | Generación de informes JSON y texto |
| 🎨 CLI colorido | Salida de terminal clara y codificada por colores |
# Clonar el repositorio
git clone https://github.com/wi3memake/React2Shell-Scanner.git
cd react2shell-scanner
# Crear un entorno virtual (recomendado)
python -m venv venv
source venv/bin/activate # Linux/Mac
.\venv\Scripts\activate # Windows
# Instalar dependencias
pip install -r requirements.txt
requests>=2.28.0 # Biblioteca de cliente HTTP
tqdm>=4.64.0 # Visualización de la barra de progreso
urllib3>=1.26.0 # Manejo de URL
# Objetivo único
python react2shell.py.py -u https://example.com
# Con salida detallada
python react2shell.py.py -u https://example.com -v
# Escanear desde un archivo
python react2shell.py.py -l targets.txt
# Con hilos concurrentes
python react2shell.py.py -l targets.txt -t 10
# Encabezados personalizados
python react2shell.py.py -u https://example.com -H "Authorization: Bearer token"
# A través de proxy
python react2shell.py.py -u https://example.com --proxy http://127.0.0.1:8080
# Omitir la verificación SSL
python react2shell.py.py -u https://example.com --no-verify
# Salida a un archivo
python react2shell.py.py -u https://example.com -o results.json
| Argumento | Corto | Descripción | Predeterminado |
|---|---|---|---|
--url | -u | URL de objetivo único | - |
--list | -l | Archivo con URL de objetivos | - |
--threads | -t | Hilos concurrentes | 5 |
--timeout | - | Tiempo de espera de la solicitud (segundos) | 10 |
--proxy | - | URL del proxy (http/https) | - |
--headers | -H | Encabezados personalizados | - |
--output | -o | Ruta del archivo de salida | - |
--no-verify | - | Omitir la verificación SSL | False |
--verbose | -v | Salida detallada | False |
--waf-bypass | - | Modo de omisión de WAF | False |
--bypass-size | - | Tamaño de la carga útil de omisión (KB) | 128 |
React2Shell Web Application Security Assessment Framework
[*] Iniciando la evaluación de https://example.com
[*] Analizando React Server Components...
[*] Probando el comportamiento de redirecciones...
[+] Evaluación completada
Target: https://example.com
Status: Analyzed
Response Code: 200
Server: Next.js
React Version: 18.2.0
RSC Detected: Yes
Assessment Time: 1.23s
{
"target": "https://example.com",
"timestamp": "2025-01-15T10:30:00Z",
"results": {
"status_code": 200,
"server": "Next.js",
"rsc_detected": true,
"headers": {
"content-type": "text/html",
"x-powered-by": "Next.js"
},
"assessment_time": 1.23
}
}
React2Shell-Scanner/
├── react2shell.py.py # Script principal del escáner
├── requirements.txt # Dependencias de Python
└── README.md # Documentación
Crea un archivo de texto con una URL por línea:
https://target1.com
https://target2.com
https://target3.com/api
Pasa múltiples encabezados con banderas -H repetidas:
python react2shell.py.py -u https://example.com \
-H "Authorization: Bearer token123" \
-H "X-Custom-Header: value" \
-H "Cookie: session=abc123"
# Proxy HTTP
--proxy http://127.0.0.1:8080
# Proxy HTTPS
--proxy https://proxy.example.com:8443
# Proxy autenticado
--proxy http://user:[email protected]:8080
# Ejemplo de GitHub Actions
security-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run security scan
run: python react2shell.py.py -u ${{ secrets.TARGET_URL }} -o results.json
import subprocess
import json
# Ejecutar el escáner
result = subprocess.run(
['python', 'react2shell.py.py', '-u', 'https://example.com', '-o', 'results.json'],
capture_output=True,
text=True
)
# Analizar los resultados
with open('results.json') as f:
findings = json.load(f)
Tiempo de espera de conexión agotado
# Aumentar el tiempo de espera
python react2shell.py.py -u https://example.com --timeout 30
Errores de certificado SSL
# Omitir la verificación (solo pruebas)
python react2shell.py.py -u https://example.com --no-verify
Limitación de velocidad
# Reducir los hilos
python react2shell.py.py -l targets.txt -t 2
Agradecemos las contribuciones que mejoren:
Envía problemas y solicitudes de extracción en GitHub.
Este proyecto está licenciado bajo la Licencia MIT.
Pruebas de seguridad hechas eficientes
🔒 Siempre prueba de manera responsable 🔒