Labs de Cache Deception

Web Cache Deception

¿Qué es Cache Deception?

El Web Cache Deception engaña a una caché para que almacene una página dinámica y autenticada de la víctima creyendo que es un recurso estático. Añadiendo una extensión estática o un delimitador a la URL, el origin sirve los datos privados y la caché los guarda; luego el atacante los recupera sin sesión.

¿Por qué practicar Cache Deception?

Casi toda app moderna vive detrás de una CDN, y la discrepancia entre cómo el origin y la caché interpretan una URL es sorprendentemente fácil de provocar. Un solo enlace trucado puede filtrar la sesión, la API key o los datos personales de la víctima a cualquiera. Bounties típicos: $1,000-$10,000.

¿Qué aprenderás con los labs de Cache Deception?

Aprenderás a localizar contenido dinámico y autenticado, engañar a la caché con una extensión estática o un delimitador, confirmar el HIT sobre la ruta trucada, forzar que la respuesta privada de la víctima quede cacheada, y recuperarla desde una sesión anónima.

Tipos de Cache Deception que cubrimos

  • Path confusion

    Añades /nonexistent.css a una URL dinámica y autenticada: el origin la sirve (ignora el sufijo) pero la caché la guarda por parecer un fichero estático.

  • Trucos de delimitador

    Usas delimitadores (;, %00, %23, %3F) que el origin y la caché interpretan distinto para que la caché vea una extensión estática y el origin la página real.

  • Abuso de extensión estática

    La caché cachea por extensión (.js, .css, .jpg) sin mirar Cache-Control; fuerzas esa extensión sobre una respuesta privada.

¿Cómo encontrar y explotar Cache Deception?

Playbook práctico — del recon a la prueba de concepto.

  1. 1

    Encontrar contenido dinámico autenticado

    Localiza páginas que devuelven datos personales del usuario logueado: perfil, ajustes, API key, saldo, tokens.

    GET /account/profile   →   datos personales ligados a la sesión
  2. 2

    Engañar a la caché con una extensión estática

    Añade un sufijo que parezca un recurso estático. El servidor sirve la página real; la caché la trata como fichero cacheable.

    GET /account/profile/nonexistent.css
  3. 3

    Confirmar el cacheo

    Pide dos veces la ruta trucada y mira las cabeceras de caché; un HIT sobre esa ruta indica que la respuesta privada quedó guardada.

    curl -sI https://target/account/profile/x.css | grep -iE 'x-cache|cf-cache-status|age'
  4. 4

    Forzar el cacheo de datos privados

    Haz que la víctima, con su sesión activa, visite tu URL trucada para que su respuesta personal quede en la caché compartida.

    Enlace enviado a la víctima: https://target/account/profile/pwn.css
  5. 5

    Recuperarlos sin sesión

    Pide la misma URL trucada desde una sesión anónima; la caché te devuelve los datos privados de la víctima sin necesidad de su cookie.

    curl https://target/account/profile/pwn.css   (sin cookie → datos de la víctima)

Preguntas frecuentes

¿Qué es el Web Cache Deception?

Es un ataque en el que se engaña a una caché (CDN o proxy) para que almacene una página dinámica y autenticada de la víctima creyendo que es un recurso estático. El atacante induce el cacheo de esos datos privados y luego los recupera desde una sesión sin autenticar.

¿Cómo se explota el Web Cache Deception?

Se añade una extensión estática o un delimitador a una URL con datos personales (por ejemplo /account/profile/x.css). El origin ignora el sufijo y sirve la página real, mientras la caché la guarda por parecer estática. Si se logra que la víctima cargue esa URL logueada, su respuesta queda cacheada y el atacante la lee sin sesión.

¿Cómo encontrar Web Cache Deception en bug bounty?

Identifica páginas autenticadas con datos sensibles y prueba a añadir /algo.css, /algo.js u otros sufijos y delimitadores. Comprueba con las cabeceras de caché (X-Cache, cf-cache-status, Age) si la ruta trucada devuelve un HIT; si es así, verifica que un usuario anónimo obtiene los datos privados.

¿Cómo prevenir el Web Cache Deception?

Cachea solo por Content-Type real y por reglas explícitas, no por la extensión de la URL; marca las respuestas personales con Cache-Control: private/no-store; normaliza y valida las rutas en el origin (rechaza sufijos inexistentes) y alinea la interpretación de la URL entre la CDN y el back-end.

¿Diferencia entre Web Cache Deception y Web Cache Poisoning?

En el Cache Deception el atacante engaña a la caché para que guarde la página privada de la VÍCTIMA y luego la lee él (robo de datos de la víctima). En el Cache Poisoning el atacante envenena una respuesta con un payload para que se sirva a TODOS los usuarios (impacto sobre terceros). Son vectores opuestos sobre la misma capa de caché.

hunters entrenando
650

hunters entrenando

labs de reportes reales
50

labs de reportes reales

completaciones
380

completaciones

en bounties practicados
$200.000

en bounties practicados

40 flags capturadas esta semana·Reportes reales de HackerOne · Bugcrowd · Intigriti·Sin permanencia·Academy gratis
BBLabs · bug bounty en español

Practica Cache Deception en labs reales

Cada lab de Cache Deception replica un reporte real de bug bounty que se pagó. Crea tu cuenta gratis, empieza por la Academy y pasa a los labs cuando quieras.

Sin tarjeta · Academy gratis · cancela cuando quieras