========================================================
 GHOSTFLIX - laboratorio de practicas de Burp Suite
========================================================

Que es esto
-----------
GhostFlix es una app web de streaming (ficticia) con 4 fallos de
seguridad metidos a proposito, para practicar con Burp Suite:

  1. Mass Assignment          -> POST /api/account/update
  2. Confianza en el cliente  -> GET /api/session + GET /api/stream/<id>
  3. API que expone de mas    -> GET /api/reviews/<id>
  4. Race Condition           -> POST /api/coupon/redeem

Corre en tu propio equipo (localhost). No necesita internet una vez
instalada, no envia datos a ningun sitio y no debe exponerse fuera
de tu maquina (no tiene ninguna proteccion real).


Requisitos
----------
  - Windows, macOS o Linux
  - Python 3.10 o superior instalado y accesible desde la terminal
    (compruebalo con:  python --version   o   python3 --version)
  - Unos 50 MB libres en disco (para el entorno virtual)
  - Ningun otro programa escuchando en el puerto 5000


Como desplegarlo
-----------------
1. Descomprime este ZIP en una carpeta de tu equipo.

2. Arranca el servidor:
     - Windows:      doble clic en "run.bat"
     - macOS/Linux:  abre una terminal en esta carpeta y ejecuta:
                        chmod +x run.sh
                        ./run.sh

   La primera vez tardara un poco: crea un entorno virtual Python
   (carpeta "venv") e instala Flask dentro de el. Las siguientes
   veces arranca en segundos.

3. Cuando veas el mensaje "Arrancando GhostFlix en
   http://127.0.0.1:5000", abre esa direccion en tu navegador
   (o en el navegador embebido de Burp) y crea una cuenta desde
   "Crear cuenta".

4. Deja la ventana de la terminal abierta mientras uses la app.
   Para detenerla, pulsa Ctrl+C en esa misma ventana.


Si algo falla
--------------
run.bat / run.sh estan pensados para NO fallar en silencio: si falta
Python, si no se puede crear el entorno virtual, si falla la
instalacion de Flask o si el propio servidor se cae, veras un
mensaje [ERROR] explicando que ha pasado y la ventana se quedara
abierta (con una pausa) para que puedas leerlo con calma en vez de
cerrarse sola.

Los casos mas frecuentes:
  - "No se ha encontrado python en el PATH"
      -> Instala Python desde https://www.python.org/downloads/
         y marca la casilla "Add python.exe to PATH" (Windows).
  - Fallo al arrancar el servidor / puerto ocupado
      -> Cierra cualquier otra cosa que use el puerto 5000, o edita
         PORT en app/app.py, o arranca con:
           Windows:      set PORT=5050 && run.bat
           macOS/Linux:  PORT=5050 ./run.sh


Reiniciar tu cuenta entre intentos
-----------------------------------
Cada reto se puede repetir sin reiniciar el servidor entero: con tu
cuenta logueada, visita:

    http://127.0.0.1:5000/reset

Esto devuelve tu cuenta a plan Free, pone los meses Premium a 0 y
vuelve a dejar tu cupon de bienvenida sin canjear.


Estructura del paquete
-----------------------
  app/              codigo de la aplicacion (backend Flask + paginas)
  requirements.txt  dependencias Python (solo Flask)
  run.bat / run.sh  arranque con comprobaciones de errores
  LEEME.txt         este archivo

El writeup con la solucion guiada de los 4 retos (con capturas de
Burp) se entrega aparte, no dentro de este ZIP.
