📸 GhostGram
GhostGram es una red social de fotos de juguete al estilo Instagram: perfiles públicos y privados, publicaciones con foto y descripción, comentarios y mensajes directos. Corre en local (python app/app.py), usa SQLite real por debajo y no depende de ningún servicio externo.
A diferencia de otros laboratorios de la serie — donde los retos son variaciones del mismo patrón repetido —, aquí cada reto es un fallo conceptualmente distinto. El segundo en particular (Web Cache Deception) es, con diferencia, el menos intuitivo: no basta con cambiar un número en la URL, hace falta entender que hay una caché de por medio que ninguno de los dos actores controla.
A explotar un IDOR clásico sobre la vista previa de publicaciones privadas, a entender qué es una Web Cache Deception y por qué una URL con extensión de imagen puede hacer que un proxy cachee una respuesta que no debería compartirse nunca entre usuarios, y a encadenar un XSS almacenado en comentarios hasta el robo de la cookie de sesión de otra persona.
Se practica en local contra tu propia instancia (127.0.0.1). Necesitarás una segunda sesión (incógnito) con una cuenta semilla para hacer de «víctima». Usa /reset para devolver base de datos y caché a su estado inicial.
La vista previa de una publicación privada filtra datos que solo deberían verse tras aceptar seguir a esa cuenta.
Una URL con pinta de imagen estática hace que un proxy intermedio guarde en caché una respuesta privada — y la sirva después a cualquiera.
Un comentario sin sanear ejecuta JavaScript en el navegador de quien lo lee, robando la cookie de sesión de la víctima.