BBLABSBBLABS
LaboratoriosAprender desde 0FuncionesPreciosTestimoniosDetrás de BBLABS
  1. Inicio
  2. Labs
  3. Acceso al fichero privado de otra cuenta en un clon de Google Drive vía IDOR, Web Cache Deception y LFI
Media45 min

Acceso al fichero privado de otra cuenta en un clon de Google Drive vía IDOR, Web Cache Deception y LFI

Por @gorka

El fichero privado de una víctima se filtra por tres vías: IDOR en el visor por id, Web Cache Deception en el enlace de descarga y path traversal en el parámetro del renderizador de previsualización.

Este hackeo se reportó sin recompensa

185 visitas2 completadosActualizado nov 2026
Iniciar sesión para empezar

Aprende a encontrar este bug

Un hackeo real de HackerOne, reproducido para que lo practiques.

Crea tu cuenta y practica bugs reales que se pagaron. Descarga el entorno, encuéntralo y aprende la técnica exacta — tu camino a tu primer bounty.

650

hunters entrenando

50

labs de hackeos reales

380

completaciones

$12.000

pagados por estos bugs

40 flags capturadas esta semana
Crear cuenta
Ya tengo cuenta

Acceso a todos los labs · sin permanencia · cancela cuando quieras

Hackers que lo han resuelto· 2

espejoramirezhugo1
@espejoramirezhugoHace 12 días
kyzk32
@kyzk3Hace 28 días

Objetivos

1
Observar las peticiones que lanza el visor al abrir un fichero (ficha, renderizador y descarga).
2
IDOR: cambiar el id numérico del visor para leer el fichero privado de otra cuenta.
3
Descubrir que la descarga sí valida el acceso (403) pero el CDN cachea por extensión.
4
Web Cache Deception: que la víctima abra un enlace de descarga y leer su copia cacheada.
5
Path traversal: manipular el parámetro res del renderizador para salir del directorio.
6
Leer un fichero arbitrario del servidor (/etc/passwd) y el fichero privado de la víctima.
7
Capturar la flag: la frase de recuperación del fichero privado de la víctima.
8
Distinguir el camino seguro (enlace por token opaco) de las referencias por id.

Información

Plataforma
HackerOne
Dificultad
Media
Duración
45 min
Bounty
Sin recompensa
Completados
2
Creador
gorka@gorka
Actualizado
nov 2026

Descarga el entorno

Reprodúcelo y encuentra el bug tú mismo

Crear cuenta

Herramientas

curlBurp SuiteNavegador webPython

Prerequisitos

  • HTTP y APIs REST
  • Control de acceso por objeto
  • Cachés/CDN y rutas

Tags

IDORPath TraversalInformation DisclosureBAC

Logro que recibirás

Cuando resuelvas este lab desbloqueas este logro compartible

Cuando resuelvas este lab desbloqueas este logro compartible

Writeups de la comunidad

Gratis · sin cuenta

La checklist que repaso en cada objetivo nuevo

47 comprobaciones ordenadas por coste: primero lo que te puede meter en un lío, luego lo barato, y al final lo caro — que es donde están los bounties grandes. Te la mando al correo ahora mismo.

Te das de baja en un clic, desde cualquier correo.

Contenido del lab

Escenario

Drivia es un clon de Google Drive: subes, organizas, previsualizas, compartes y descargas ficheros. La víctima, Laura Giménez (victima@drivia.local), guarda un fichero privado con su frase de recuperación dentro de Mi unidad › Personal › Privado. Esa frase es la flag.

Tú eres el atacante attacker@drivia.local / password123. Consigue el contenido de ese fichero privado sin ser Laura. Hay tres vías independientes.

Qué tienes

  • Tu cuenta de atacante con tus propios ficheros (punto de partida, no es el fallo).
  • El visor de ficheros, la descarga, el compartir por correo/enlace y la previsualización.

Guía paso a paso

  1. Recon. Abre uno de tus ficheros y mira el proxy: el visor lanza GET /api/files/:id (ficha + contenido), GET /api/files/:id/preview?res=<nombre> (renderizador) y el botón de descarga usa GET /api/files/:id/download/<nombre>. Ahí están las tres superficies.

  2. Vía 1 — IDOR. La ficha se pide por un id numérico correlativo y el endpoint no comprueba de quién es el fichero. Cambia el :id por uno que no sea tuyo (la respuesta trae owner_id, así sabes que es de otro) hasta leer el fichero de la víctima con la flag.

  3. Vía 2 — Web Cache Deception. La descarga sí valida el acceso (te da 403 sobre el fichero ajeno), pero delante hay un "CDN" que cachea por extensión estática ignorando cookies. La URL …/download/algo.png sigue sirviendo el fichero (path confusion) y se cachea. En el diálogo Compartir hay "Copiar enlace de descarga": pásaselo a la víctima; cuando ella lo abre (autenticada), su respuesta queda en la caché compartida (cabecera X-Cache: HIT) y tú la lees.

  4. Vía 3 — LFI / Path Traversal. El parámetro res del renderizador se une a la carpeta del fichero sin sanear. Previsualiza un fichero tuyo y pon res=../../../../etc/passwd (lectura arbitraria) o res=../<owner_id>/<file_id> para leer el fichero de la víctima (el owner_id y el file_id los sacas del IDOR).

  5. Captura la flag. Por cualquiera de las tres vías obtienes la frase de recuperación del fichero privado: FLAG{…}.

Canales de feedback (no vuelas a ciegas)

  • La respuesta de la ficha incluye owner_id: sabes cuándo estás leyendo el fichero de otra cuenta.
  • La descarga responde 403 a terceros y las cabeceras X-Cache/CF-Cache-Status te dicen si una URL vino de la caché.
  • El renderizador devuelve el contenido bruto del recurso que pidas en res, así ves de inmediato el efecto del traversal.

Decoys (descártalos por razonamiento)

  • El enlace por token opaco (/d/<token>) es el camino seguro: valida el token, no un id adivinable. No es la vía de ataque.
  • La lista de "Mi unidad" solo enseña tus ficheros: la app oculta los ajenos en el listado, pero la API del visor no los protege (ahí está el IDOR).
  • Necesitas un fichero tuyo como puerta al renderizador; el traversal ocurre en res, no en el :id.

La falla del laboratorio

Clases: IDOR / referencia directa a objeto insegura (CWE-639), Web Cache Deception (CWE-525) y Path Traversal (CWE-22), todas con divulgación de información (CWE-200). OWASP A01:2021 (Broken Access Control) + A05:2021 (Security Misconfiguration).

Las tres vías comparten la raíz: el servidor confía en algo que el atacante controla en lugar de comprobar la autorización por objeto en cada punto. El visor sirve por id sin verificar propiedad/compartición; el borde cachea por la forma de la URL sin variar por sesión; y el renderizador construye una ruta de disco a partir de la entrada del usuario. La defensa correcta: autorización a nivel de objeto en cada acceso (e identificadores opacos), cachear solo respuestas marcadas públicas variando por sesión, y nunca usar entrada del usuario como ruta (resolver y comprobar contención dentro del directorio permitido).

Laboratorio basado en la reproducción anonimizada (empresa ficticia Drivia) de técnicas reales de bug bounty sobre acceso a ficheros privados.

La comunidad

Esto no es una plataforma con usuarios.Es gente rompiendo lo mismo que tú.

Dentro se pregunta, se enseña lo que se ha encontrado y se resuelve en grupo lo que atascaría a cualquiera solo. Se entra gratis: sin cuenta, sin plan y sin dejar el correo.

Entrar a la comunidad de BBLABS en Discord
Entrar al Discord

Es gratis y abierto. No hace falta tener cuenta en BBLABS para entrar.

BBLABS LogoBBLABS

Laboratorios de hacking basados en hackeos reales. Aprende practicando sobre entornos vulnerables, con la resolución explicada paso a paso.

Producto

  • Funcionalidades
  • Precios
  • Labs
  • Aprender desde 0
  • Blog
  • Detrás de BBLABS

Legal

  • Términos
  • Privacidad
  • Cookies
  • Entrar
  • Crear cuenta

Para cualquier duda, bug, soporte o sugerencia puedes escribir a team@bblabs.es

© 2026 BBLABS. Todos los derechos reservados.