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

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

By @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.

This hack was reported with no reward

184 views2 completedUpdated Oct 2026
Log in to start

Learn to find this bug

A real HackerOne hack, reproduced for you to practice.

Create your account and practice real bugs that got paid. Download the environment, find it and learn the exact technique — your path to your first bounty.

650

hunters training

50

labs from real hacks

380

completions

$12,000

paid out for these bugs

40 flags captured this week
Create account
I already have an account

Access to all labs · no commitment · cancel anytime

Hackers who solved it· 2

espejoramirezhugo1
@espejoramirezhugo12 days ago
kyzk32
@kyzk328 days ago

Objectives

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.

Information

Platform
HackerOne
Difficulty
Medium
Duration
45 min
Bounty
Sin recompensa
Completed
2
Creator
gorka@gorka
Updated
Oct 2026

Download the environment

Reproduce it and find the bug yourself

Create account

Tools

curlBurp SuiteNavegador webPython

Prerequisites

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

Tags

IDORPath TraversalInformation DisclosureBAC

Achievement you'll earn

Solve this lab to unlock this shareable achievement

Solve this lab to unlock this shareable achievement

Community writeups

Free · no account

The checklist I run on every new target

47 checks ordered by cost: first what can get you in trouble, then the cheap stuff, and finally the expensive stuff — which is where the big bounties are. I'll send it to your inbox right now.

Unsubscribe in one click, from any email.

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.

The community

This isn't a platform with users.It's people breaking the same things you are.

Inside people ask, share what they found and solve together what would block anyone on their own. It's free to join: no account, no plan, no email required.

Join the BBLABS community on Discord
Join the Discord

Free and open. You don't need a BBLABS account to join.

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.