IDF Cyber Academy
← Web Application Security

Módulo 03 de 4 · Lab · 75 min

Lab: API Security con VAmPI

Opción principal

GitHub Codespaces

Entorno en la nube con Docker incluido. Solo requiere una cuenta de GitHub y consume la cuota gratuita personal de Codespaces. El puerto 5000 se reenvía de forma privada.

Alternativa

Docker local

Con Docker instalado, un solo comando levanta el lab en http://127.0.0.1:5000/ui/ (enlazado a 127.0.0.1, nunca expuesto a la red).

git clone https://github.com/idefensechile/lab-vampi.git && cd lab-vampi && docker compose up -d

Detener: docker compose down

Ficha completa del lab: VAmPI

VAmPI es una API REST (Flask) que implementa a propósito vulnerabilidades del OWASP API Security Top 10. Tras levantarla en el puerto 5000, inicializar la base de datos:

curl http://127.0.0.1:5000/createdb

La especificación OpenAPI se explora en http://127.0.0.1:5000/ui/.

Retos propuestos

  1. Excessive Data Exposure (API3): listar usuarios con el endpoint de debug y observar qué campos devuelve.
    curl http://127.0.0.1:5000/users/v1/_debug
    
  2. Mass Assignment (API6): registrar un usuario que quede como administrador.
    curl -X POST http://127.0.0.1:5000/users/v1/register \
      -H 'Content-Type: application/json' \
      -d '{"username":"alumno","password":"Alumno123","email":"a@lab.local","admin":true}'
    
  3. BOLA (API1): con un token propio, leer el secret de un libro que pertenece a otro usuario (GET /books/v1/{book_title}).
  4. SQL Injection (API8): probar comillas en GET /users/v1/{username}.
  5. User enumeration y falta de rate limiting (API2/API4): comparar las respuestas de login para usuarios existentes e inexistentes.

Modo seguro

VAmPI arranca en modo vulnerable (vulnerable=1). Cambiar a vulnerable=0 en el docker-compose.yml permite comparar cada respuesta con la versión corregida.