
Campo de tiro cibernético moderno con 50 desafíos prácticos en áreas de seguridad web, API, nube, IA y equipo azul. Incluye cadenas de ataque guiadas, simulador de IA transparente e informes de evidencias GRC para aprender técnicas de pruebas de penetración y defensa.
Un moderno laboratorio de aplicaciones vulnerables y campo de ciberentrenamiento para aprender seguridad web, de API, en la nube, IA y de equipo azul a través de cadenas de ataque prácticas.
╔═══════════════════════════════════════════════════════════════╗
║ ██████╗ ███████╗███╗ ██╗████████╗███████╗███████╗████████╗ ║
║ ██╔══██╗██╔════╝████╗ ██║╚══██╔══╝██╔════╝██╔════╝╚══██╔══╝ ║
║ ██████╔╝█████╗ ██╔██╗ ██║ ██║ █████╗ ███████╗ ██║ ║
║ ██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║ ██╔══╝ ╚════██║ ██║ ║
║ ██║ ███████╗██║ ╚████║ ██║ ███████╗███████║ ██║ ║
║ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚══════╝ ╚═╝ ║
║ CAMPO DE CIBERENTRENAMIENTO MODERNO · 50 DESAFÍOS · 8 PISTAS ║
╚═══════════════════════════════════════════════════════════════╝
★ Dale estrella a este repositorio si te es útil: es gratis y ayuda a otros a descubrir educación de seguridad gratuita.
PENTEST-LAB no es otra caja con una sola vulnerabilidad. Es un campo de ciberentrenamiento completo que combina las perspectivas del atacante y del defensor con resultados de tipo GRC:
[SYSTEM][USER][RETRIEVED][HISTORY], la salida generada, la técnica de inyección detectada y los controles para cada mitigación.127.0.0.1, advierte con claridad en 0.0.0.0, todos los secretos son falsos y están claramente marcados, los objetivos SSRF son simulaciones locales en proceso (sin tráfico real de salida), sin objetivos externos.make verify-registry valida el registro de desafíos (ids/flags únicos, campos obligatorios, recursos, conteo de pistas) para que el catálogo se mantenga coherente.# 1. Comando único (instala dependencias, inicializa la BD, inicia el servidor)
python start_lab.py
# o: make start
Abre http://localhost:3000 en tu navegador.
# Solo backend
cd backend && npm install && npm start
# Docker (publicado solo en 127.0.0.1)
docker compose up --build
# Restablecer flags capturados / eventos / progreso de cadena
make reset
# Refrescar datos de demostración
make seed
# Prueba rápida de rutas principales (inicia el laboratorio primero)
make test
# Validar el registro de desafíos (ids/flags únicos, campos, recursos)
make verify-registry
# Demostración de exploits local segura (5 desafíos)
python demo_exploit.py
Cada desafío incluye: id, título, pista, categoría, dificultad, objetivo, endpoint vulnerable, concepto de explotación, 3 pistas progresivas (vaga → específica → respuesta), flag, remediación, notas de detección/evidencia, un dominio de control mapeado y una lista de recursos para aprender antes de resolver.
Haz clic en cualquier tarjeta de desafío para abrir el modal. Te proporciona:
Una cadena realista, completamente local, en seis pasos detectados:
Reconocimiento → Divulgación de Información → Abuso de Credenciales/Tokens →
Escalada de Privilegios → Acceso a Datos Sensibles → Informe de Evidencia
B=http://127.0.0.1:3000
curl -s $B/api/attack-chain/recon # 1. endpoint de depuración revela rutas
curl -s $B/api/attack-chain/leak # 2. secreto JWT falso filtrado (weak123)
# 3. forjar token admin -> 4. escalar -> 5. leer registros de clientes falsos -> 6. informe
curl -s $B/api/attack-chain/progress
Sigue el progreso en vivo en la pestaña Cadena de Ataque.
La pestaña Defensor muestra la misma actividad que el atacante acaba de realizar: eventos recientes, inicios de sesión fallidos, acceso sospechoso a API, subidas de archivos, intentos de SSRF, intentos de escalada de privilegios, flags capturados y progreso de la cadena de ataque; cada evento con código de colores según severidad, y capturas de flags marcadas con 🚩.
curl -s http://localhost:3000/api/blue-team/dashboard
Genera un informe a partir de tus flags capturados, mapeando cada uno a un hallazgo con severidad, endpoint afectado, evidencia, impacto en el negocio, remediación, dominio de control y una oportunidad de detección.
# Markdown (por defecto)
curl -s -X POST http://localhost:3000/api/evidence/report \
-H 'Content-Type: application/json' -d '{"format":"markdown"}'
# JSON o CSV
curl -s -X POST http://localhost:3000/api/evidence/report -d '{"format":"csv"}'
# Dominios de control mapeados: Control de Acceso, Registro y Monitoreo,
# Desarrollo Seguro, Gestión de Secretos, Gestión de Cambios,
# Gestión de Configuración, Protección de Datos, Respuesta a Incidentes.
⚠️ Esto es un mapeo amplio de dominios de control para aprendizaje de detección/GRC. No afirma cumplimiento con ningún estándar.
| Panel de pistas | Cadena de ataque |
| Vista del defensor | Informe de evidencia |
🎬 GIF de demo: docs/demo.gif - consulta docs/DEMO_WALKTHROUGH.md para un guion de presentador de ~6 minutos. (Coloca tus propias capturas en docs/screenshots/ y docs/demo.gif para reemplazar los marcadores de posición.)
Este laboratorio es intencionalmente vulnerable. Ejecútalo solo en entornos aislados y nunca lo expongas a internet.
127.0.0.1 por defecto (HOST=127.0.0.1 en backend/.env).HOST=0.0.0.0 se muestra una advertencia en mayúsculas; la interfaz muestra un banner de peligro.├── start_lab.py # lanzador con un solo comando (deps + seed + run)
├── demo_exploit.py # demo de exploits local segura (5 desafíos)
├── docker-compose.yml # publicación solo en localhost
├── Makefile # install / start / reset / test / demo / docker
├── CHALLENGES.md # catálogo completo de desafíos
├── frontend/ # interfaz de panel (pistas, cadena, defensor, evidencia)
├── backend/
│ ├── server.js # aplicación Express, vinculación localhost, enrutamiento
│ ├── challenges/registry.js # REGISTRO CENTRAL de desafíos (50 desafíos)
│ ├── ai/ # SIMULADOR DE IA TRANSPARENTE + almacén RAG (sin LLM externo)
│ ├── utils/events.js # ALMACÉN CENTRAL de eventos + feed del Equipo Azul
│ ├── routes/ # rutas vulnerables + de modo (api, cloud, ai, shop, ...)
│ ├── scripts/ # init-db, seed, reset, test_routes
│ └── middleware/ # auth (segura), auth.vulnerable, waf, security
├── solutions/ # writeups de exploits en Python
└── docs/ # SECURITY_REPORT, SETUP, DEMO_WALKTHROUGH
¿Encontraste un error o quieres añadir un desafío? Las solicitudes de incorporación de cambios son bienvenidas.
backend/challenges/registry.js (fuente única de verdad).events.captureFlag({ flag, req }) desde una ruta vulnerable.make test y make verify-registry antes de enviar.Solo para uso educativo. Consulta LICENSE si existe. Úsalo solo contra sistemas que poseas o para los que tengas autorización explícita de prueba; aquí, eso significa este laboratorio local.
Si este laboratorio te ayudó a aprender algo nuevo:
| Pista | Qué aprendes | # |
|---|
| ◆ Pentest Web | SQLi, IDOR, subida de archivos, path traversal, bypass de WAF | 14 |
| ◆ Seguridad en API | BOLA, asignación masiva, bypass de límite de tasa, webhooks, GraphQL, reflexión CORS, inyección NoSQL | 7 |
| ◆ Autenticación y Sesión | Confusión kid/alg en JWT, reutilización de refresh-token, tokens de restablecimiento, fijación, MFA, envenenamiento de restablecimiento por host-header | 9 |
| ◆ Nube / DevOps | Fuga de .env, metadatos SSRF, debug de Docker, almacenamiento público, tokens CI/CD | 5 |
| ◆ Seguridad en IA | Inyección de prompts, inyección indirecta, fuga/envenenamiento de RAG, llamadas a herramientas, jailbreak multi-turno, bypass de filtro de salida | 7 |
| ◆ Lógica de Negocio | Acumulación de cupones, cantidad negativa, condiciones de carrera, bypass de pago | 5 |
| ◆ Cadena de Ataque | Ruta guiada de extremo a extremo + RCE de cadena completa heredada, con evidencia | 2 |
| ◆ Evidencia del Equipo Azul | Detectar ataques y generar un informe GRC | 1 |
| 50 |