========================================================
 GHOSTCART - laboratorio de practicas de Burp Suite
========================================================

Que es esto
-----------
GhostCart es una tienda de electronica (ficticia) con 5 fallos de
seguridad metidos a proposito, para practicar con Burp Suite:

  1. SQL Injection             -> POST /login
  2. IDOR - pedidos             -> GET  /orders/<id>
  3. IDOR - datos de usuario    -> GET  /api/users/<id>
  4. IDOR - resumen de checkout -> GET  /checkout/<id>/resumen
  5. Account Takeover           -> POST /reset-password/confirm

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. Tambien crea la base de datos
   "app/ghostcart.db" (SQLite) con datos de partida.

3. Cuando veas el mensaje "Arrancando GhostCart 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 el laboratorio entre intentos
----------------------------------------
Este laboratorio comparte una unica base de datos SQLite para todos
los retos. Para volver a dejarlo todo en su estado inicial (pedidos,
checkouts, tokens de reset y cuentas de partida) sin reiniciar el
servidor, visita:

    http://127.0.0.1:5000/reset

Esto reconstruye la base de datos desde cero y cierra tu sesion.


Estructura del paquete
-----------------------
  app/              codigo de la aplicacion (backend Flask + paginas)
                     (app/ghostcart.db se genera sola al primer arranque)
  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 5 retos (con capturas de
Burp) se entrega aparte, no dentro de este ZIP.
