Skip to content

black4ninja/taller-seguridad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hack the Campus — Taller CTF de Seguridad Web

Portal interno del Club de Ciberseguridad. Deliberadamente vulnerable. Tu misión: identificar y remediar las 6 vulnerabilidades clasificadas bajo STRIDE en 1:30 horas.


Reglas de la competencia

  1. Individual. Clonas este repo, arreglas las vulnerabilidades en tu copia local.
  2. 1:30 horas desde el banderazo.
  3. Gana quien primero tenga los 6 tests de npm test en verde.
  4. Validación: al terminar, levanta la mano y muestra al profesor/TA la salida de npm test. No hay defensa oral.
  5. No edites los archivos en tests/security/ — hay un test meta que detecta modificaciones.
  6. Entregable paralelo: llenar docs/STRIDE.md con el mapeo vuln → letra STRIDE → control NIST 800-53 → commit que la arregló.

Si es tu primera vez: empieza por V0

Antes de atacar V1..V6, lee docs/WALKTHROUGH.md. Es una vuln extra (V0) resuelta paso a paso que te muestra el loop completo: detectar → clasificar con STRIDE → mapear a NIST → implementar fix → validar → documentar. Los 8 pasos de V0 son los mismos que vas a repetir para las 6 vulns del reto.

Setup (minuto 0-10)

git clone <este-repo> hack-the-campus
cd hack-the-campus
npm install
npm start      # arranca en http://localhost:3000

Si npm install falla compilando better-sqlite3: necesitas toolchain nativo.

  • macOS: xcode-select --install
  • Linux (Debian/Ubuntu): sudo apt install build-essential python3
  • Windows: npm install --global windows-build-tools (PowerShell admin) o Visual Studio con "Desktop development with C++".

Luego rm -rf node_modules && npm install.

Cuentas de prueba: neo/matrix · trinity/zion · admin/admin123

Corre los tests para ver el baseline rojo:

npm test

Deberías ver 7 bloques de tests fallando (V0 + V1..V6). Cada uno corresponde a una vulnerabilidad STRIDE.

Si npm test parece colgarse sin salida: es síntoma de V5 (ReDoS). La regex catastrófica no es interrumpible por Jest. Workaround mientras lo arreglas:

npm test -- --testPathIgnorePatterns=V5

Una vez hayas aplicado el fix de V5, corre npm test completo para cerrar.

Herramientas de análisis (el "MobSF" para web)

Así como MobSF escanea apps móviles, para web usamos tres herramientas complementarias. Revisa docs/GUIA_HERRAMIENTAS.md para comandos y tips.

Herramienta Tipo Qué detecta en este repo
OWASP ZAP DAST (caja negra) Headers faltantes, stack traces, cookies inseguras
Semgrep SAST (análisis de código) SQLi, secretos hardcodeados, regex peligrosas
npm audit SCA (dependencias) Paquete vulnerable en package.json
npm run scan:audit      # dependencias
npm run scan:semgrep    # código (requiere Docker)
npm run scan:zap        # app corriendo (requiere Docker + npm start en otra terminal)

Para competir alcanza con correr al menos 1 de los 3. Los 3 son ideales pedagógicamente, pero si el tiempo aprieta prioriza: npm audit (10s) > Semgrep (1 min) > ZAP (2-3 min).

Las vulnerabilidades

Cada letra de STRIDE tiene una vulnerabilidad plantada. Los tests son la especificación del fix.

Test STRIDE Hint
V0_walkthrough.test.js Tampering (XSS) ruta /status · ejemplo resuelto en docs/WALKTHROUGH.md
V1_spoofing.test.js Spoofing login, cookies, rate limit
V2_tampering.test.js Tampering búsqueda del foro
V3_repudiation.test.js Repudiation tabla audit
V4_disclosure.test.js Information Disclosure descarga de archivos
V5_dos.test.js Denial of Service upload + validador de email
V6_elevation.test.js Elevation of Privilege rutas /admin

V0 cuenta igual que las otras para tener los tests en verde, pero viene con guía completa — úsala para calibrar.

Docs

Stack

Node.js 20+ · Express · EJS · better-sqlite3 (in-memory) · Arquitectura MVC + servicios.


Follow the white rabbit.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors