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.
Una aplicación vulnerable moderna y campo de entrenamiento cibernético para aprender seguridad web, API, nube, IA y equipo azul mediante cadenas de ataque prácticas.
╔═══════════════════════════════════════════════════════════════╗
║ ██████╗ ███████╗███╗ ██╗████████╗███████╗███████╗████████╗ ║
║ ██╔══██╗██╔════╝████╗ ██║╚══██╔══╝██╔════╝██╔════╝╚══██╔══╝ ║
║ ██████╔╝█████╗ ██╔██╗ ██║ ██║ █████╗ ███████╗ ██║ ║
║ ██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║ ██╔══╝ ╚════██║ ██║ ║
║ ██║ ███████╗██║ ╚████║ ██║ ███████╗███████║ ██║ ║
║ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚══════╝ ╚═╝ ║
║ CAMPO DE ENTRENAMIENTO CIBERNÉTICO MODERNO · 53 DESAFÍOS · 8 PISTAS ║
╚═══════════════════════════════════════════════════════════════╝
★ Dale una estrella a este repositorio si te resulta útil: es gratis y ayuda a otros a descubrir educación gratuita en seguridad.
PENTEST-LAB no es otra caja de una sola vulnerabilidad. Es un campo de entrenamiento cibernético completo que combina las perspectivas del atacante y del defensor con salida de evidencia estilo GRC:
[SYSTEM][USER][RETRIEVED][HISTORY], la salida generada, la
técnica de inyección detectada y los interruptores para cada mitigación.127.0.0.1, advierte en voz alta en 0.0.0.0, todos los
secretos son falsos y claramente marcados, los objetivos SSRF son un mock local en proceso (sin
salida real), sin objetivos externos.make verify-registry valida el registro de desafíos
(ids/banderas únicos, campos obligatorios, recursos, recuentos de pistas) para que el catálogo
se mantenga consistente.# 1. Una línea (instala dependencias, siembra 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 banderas capturadas / eventos / progreso de la cadena
make reset
# Refrescar datos de demostración sembrados
make seed
# Prueba de humo de rutas principales (inicia el laboratorio primero)
make test
# Validar el registro de desafíos (ids/banderas únicos, campos, recursos)
make verify-registry
# Demo de explotación segura solo local (5 desafíos)
python demo_exploit.py
| Pista | Qué aprendes | # |
|---|---|---|
| ◆ Pentest de Aplicaciones Web | SQLi, IDOR, subida de archivos, path traversal, bypass de WAF | 14 |
| ◆ Seguridad de API | BOLA, mass assignment, bypass de límite de tasa, webhooks, GraphQL, reflexión CORS, inyección NoSQL | 7 |
| ◆ Auth y Sesión | Confusión kid/alg de JWT, reutilización de refresh token, tokens de restablecimiento, fijación, MFA, envenenamiento de restablecimiento por host-header | 9 |
| ◆ Nube / DevOps | Fuga de .env, SSRF de metadatos, debug de docker, almacenamiento público, tokens de CI/CD | 5 |
| ◆ Seguridad de IA | inyección de prompts, inyección indirecta, fuga/poisoning de RAG, llamadas a herramientas, jailbreak multi-turno, bypass de filtro de salida y ejercicios de auditoría de tres niveles | 10 |
| ◆ 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 de Equipo Azul | Detecta ataques y genera un informe GRC | 1 |
| 53 |
Cada desafío tiene: id, título, pista, categoría, dificultad, objetivo, endpoint vulnerable, concepto de explotación, 3 pistas progresivas (vaga → específica → respuesta), bandera, remediación, notas de detección/evidencia, un dominio de control mapeado y una lista de recursos de aprender antes de resolver.
Haz clic en cualquier tarjeta de desafío para abrir el modal. Te ofrece:
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. el endpoint de debug divulga rutas
curl -s $B/api/attack-chain/leak # 2. secreto JWT falso filtrado (weak123)
# 3. forjar token de admin -> 4. escalar -> 5. leer registros falsos de clientes -> 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 acaba de realizar el atacante: eventos recientes, inicios de sesión fallidos, acceso sospechoso a API, subidas de archivos, intentos de SSRF, intentos de escalada de privilegios, banderas capturadas y progreso de la cadena de ataque - cada evento coloreado por severidad, las capturas de banderas marcadas con 🚩.
curl -s http://localhost:3000/api/blue-team/dashboard
Genera un informe a partir de tus banderas capturadas mapeando cada una a un hallazgo con severidad, endpoint afectado, evidencia, impacto empresarial, 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 \
-H 'Content-Type: application/json' -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 el aprendizaje de detección/GRC. No afirma cumplimiento con ningún estándar.
El repositorio no incluye capturas de pantalla ni un GIF grabado. Si creas
recursos de demostración locales, colócalos en docs/screenshots/ y documenta el
proceso de captura junto a ellos. El
docs/DEMO_WALKTHROUGH.md listo para presentar es el guion
de demostración mantenido.
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 imprime una advertencia en voz alta; la interfaz muestra un banner de peligro.├── start_lab.py # lanzador de un comando (deps + seed + run)
├── demo_exploit.py # demo de explotación segura solo local (5 desafíos)
├── docker-compose.yml # publicación solo 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 # app Express, enlace localhost, cableado de rutas
│ ├── challenges/registry.js # REGISTRO central de desafíos (53 desafíos)
│ ├── ai/ # simulador de IA TRANSPARENTE + almacén RAG (sin LLM externo)
│ ├── utils/events.js # almacén central de eventos + feed de Equipo Azul
│ ├── routes/ # rutas vulnerables + de modos (api, cloud, ai, shop, ...)
│ ├── scripts/ # init-db, seed, reset, test_routes
│ └── middleware/ # auth (seguro), auth.vulnerable, waf, security
├── solutions/ # writeups de explotación en Python
└── docs/ # guías de configuración, herramientas, demo y cadena de ataque
¿Encontraste un error o quieres añadir un desafío? Las PRs son bienvenidas.
backend/challenges/registry.js (única fuente 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 estés explícitamente autorizado a probar - aquí, eso significa este laboratorio local.
Si este laboratorio te ayudó a aprender algo nuevo: