Web Cache Deception

web hacking

El engaño de caché web es una vulnerabilidad que permite a un atacante engañar a una caché web para que almacene contenido sensible y dinámico. Se debe a discrepancias (Diferencia, desigualdad que resulta de la comparación de las cosas entre sí.) entre la forma en que el servidor de caché y el servidor de origen gestionan las solicitudes. En un ataque de engaño de caché web, un atacante persuade a la víctima para que visite una URL maliciosa, lo que induce a su navegador a realizar una solicitud ambigua de contenido sensible. La caché malinterpreta esto como una solicitud de un recurso estático y almacena la respuesta. El atacante puede entonces solicitar la misma URL para acceder a la respuesta en caché, obteniendo acceso no autorizado a información privada.

  • el envenenamiento de la cache web y engaño de la cache web son ataques diferentes

la caché web almacena datos en un servidor para su reutilización futura. Cuando abres un sitio, la caché reúne todos los datos del sitio web, lo convierte en un archivo HTML y lo abre en tu navegador, La próxima vez que abras el mismo sitio, la caché cargará una copia. Esto ayuda al servidor a trabajar más rápido y a no sobrecargarse. Por supuesto, si el sitio web es actualizado, el proceso comenzará desde el principio. Dos cosas a tener en cuenta: primero, no todos los sitios web usan caché. En segundo lugar, la caché puede caducar o eliminarse manualmente.


Explotación básica

vamos a construir un ataque de engaño de chache web básico, el cual necesita los siguientes requisitos:

  • identificar un endpoint de destino que devuelva una respuesta dinámica con información confidencial. Revise sus respuestas en burpsuite, ya que es posible que parte de la información confidencial no sea visible en la pagina renderizada. Céntrese en endpoints que admitan GET, HEAD y OPTIONS ya que las solicitudes que alteran el estado del servidor de origen generalmente no se almacenan en el cache

  • identifica una desigualdad en como la cache y el servidor de origen analizan la ruta de la URL, esto podría ser una discrepancia en como : - asignar URL a recursos - Procesar caracteres delimitadores - Normalizar rutas

  • debemos crear una URL maliciosa que haga la discrepancia para engañar a la cache y almacene una respuesta dinámica. Cuando la victima accede a la URL su respuesta es almacenada en la cache. Podemos interceptar la respuesta en la cache de la misma URL para obtener la respuesta cache con los datos de la victima. Evítelo hacerlo en el navegador ya que algunas aplicaciones web redirigen a los usuarios sin inicio de sesión o invalidan datos locales, lo que podría ocultar la vulnerabilidad.

Ejemplo de explotación

https://example.com/secrets # url objetivo

https://example.com/secrets/wcd.css # al agregar esto el proxy cache podria pensar que es un contenido estatico, entonces el navegador nos mastraria la informacion que esta en secrets

# por lo tanto, la siguiente request que se haga a ese PATH devolvera la informacion de la persona que lo clickeo anteriormente

Web cache deception con delimitadores

  • lista de delimitadores

! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ %21 %22 %23 %24 %25 %26 %27 %28 %29 %2A %2B %2C %2D %2E %2F %3A %3B %3C %3D %3E %3F %40 %5B %5C %5D %5E %5F %60 %7B %7C %7D %7E

depende de las tecnologías del servidor como funciona cada uno

  • interceptamos la solicitud en el lugar donde hay información confidencial y vemos que no nos responde el string arbitrario, por lo que lo mandamos del repeater al intruder para probar los delimitadores

en el intruder seleccionamos la barra y damos a add para posteriormente agregar nuestra lista de posibles delimitadores, luego de eso vamos hasta abajo y quitamos el URL encode characters, los 200 significan que hubo éxito

entonces ahora agregamos el "estático" para el ataque

https://xxxxxxxxxxxxxx.web-security-academy.net/my-account?wcd.css

en este ejemplo, al usar el delimitador valido de ? puede que aun así no nos de la respuesta del X-CACHE por lo que debemos probar con cada delimitador que fue valido

en las extensiones como css o js también podemos usar ico o jpg por ejemplo, busca que extensiones se usan para los elementos estáticos y prueba con el intruder

consejos :

  • si el navegador nos dice un 404, debemos revisar el código porque puede haber datos sensibles en el cache

  • si te redirecciona automáticamente revisa en burpsuite si antes de la redireccion carga una respuesta desde el proxy cache

  • si la response no contiene headers de X-Cache elimina las cookies de sesión u otras que esten.

  • si queremos revisar si esta funcionando el ataque es preferible hacerlo desde una IP diferente porque tu IP podría estar cacheada

Last updated