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, HEADyOPTIONSya que las solicitudes que alteran el estado del servidor de origen generalmente no se almacenan en el cacheidentifica 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 anteriormenteWeb 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 %7Edepende 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.cssen 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-Cacheelimina 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