Ghost Academy
🛒 LABORATORIO PRÁCTICO · IDOR Y CONTROL DE ACCESO ← Volver al curso de Burp

🛒 GhostCart

“Un atacante sin cuenta se cuela dentro, y una vez dentro descubre que casi cualquier identificador de la tienda se puede leer sin comprobar de quién es.”
LEAK!
🎯 En qué consiste

GhostCart es una tienda de electrónica de juguete (portátiles, componentes, periféricos), deliberadamente vulnerable, con base de datos SQLite real por debajo — aquí la inyección SQL del primer reto es genuina, no simulada. Corre en local (python app/app.py) y no depende de ningún servicio externo.

Los cinco retos encadenan un mismo hilo argumental: entrar sin credenciales válidas (reto 1), descubrir que pedidos, perfiles y checkouts ajenos se leen cambiando un número en la URL (retos 2 a 4), y terminar secuestrando la cuenta de otra persona por completo (reto 5).

★★★☆☆Media
5Retos
IDOR / AuthCategoría
:5000Puerto local
🧠 Qué aprenderás

A reconocer una inyección SQL real en un formulario de login, y sobre todo a interiorizar el patrón IDOR (Insecure Direct Object Reference): cualquier endpoint que reciba un identificador en la URL o el cuerpo debe comprobar que ese recurso pertenece a quien lo pide — no solo que quien lo pide esté logueado. Cierra con un Account Takeover completo explotando un fallo en la confirmación de reseteo de contraseña.

⚠️ Antes de empezar

Se practica en local contra tu propia instancia (127.0.0.1). Usa /reset en cualquier momento para devolver toda la base de datos a su estado inicial.


🕹️ Retos de este laboratorio
Reto 1 · 💉
SQL Injection

El formulario de login no sanea su entrada: una inyección clásica basta para entrar sin conocer ninguna contraseña.

Reto 2 · 📦
IDOR sobre pedidos

Cambiando el identificador del pedido en la URL se lee el pedido de cualquier otro cliente de la tienda.

Reto 3 · 👤
IDOR sobre usuarios

La misma falta de comprobación de propiedad, esta vez sobre los datos de perfil de otros usuarios.

Reto 4 · 🧾
IDOR sobre checkouts

El resumen de un checkout ajeno — con datos de pago y envío — se lee igual que el propio.

Reto 5 · 🔓
Account Takeover

El paso final de confirmación del reseteo de contraseña no comprueba que el token pertenezca a la cuenta indicada.


🚀 Empieza aquí
📦 Descargar laboratorio GhostCart.zip · para montarlo en tu máquina 📖 Ver write-up completo contiene la solución de los 5 retos — spoiler