Webinar’a Katılın | Siber Tehditlere Karşı Güçlü Koruma

Web Cache Poisoning Nedir?

Web Cache Poisoning; Türkçe karşılığı web önbellek zehirlenmesi olarak geçmektedir. Web önbelleklerin de değişiklik yaparak zararlı kod çalıştırmaya olanak sağlayan bir saldırı türüdür.

Bu saldırı türü sızma testlerinde çokca karşımıza çıkan bir saldırı türüdür.

Cache (Önbellek) Nedir?

Bir uygulamayı ilk açtığımızda yüklenen bütün veriler aslında önbelleğe yüklenir ardından siteyi ikinci kez açtığımızda ise hızlı bir şekilde karşımıza gelir işte önbelleğin aslında yaptığı iş budur.

Önbellek bizim verilerimizi depolayarak sonrasında yapacak olduğumuz işlemleri tahmin ederek biz işlem yapmadan karşımıza getirir.

İstemci tarafından yapılan isteklerin gelmesini beklemek daha sonra bu gelen isteklerin yanıtlarını kopyalayarak kaydetmektedir.

Önbellek Anahtarları

Bir önbellek karşı taraftan bir istek aldığı zaman daha önce den bu isteğin bir kopyasının olup olmadığına bakar. Eğer ki kopyasını bulursa kopya ile devam edip kullanıcıya döndürür. Bulamaz ise isteği kopyalayarak bir sonraki isteklerde aynı işlemi yapmamak için işlemi kolaylaştırır.

Aslında önbellek bu durumda isteklerin arasındaki bayt farkını karşılaştırmamaktadır. İsteklerde bulunan “Host” ve “Path” kısımları ile karşılaştırma yapmaktadır. Aslında burada bir farklı “User-Agent” yani tarayıcı bilgileri ile girdiğimizde farklı veriler ile karşılaşılabilir.

Önbellek aşağıdaki örnekte verilen kısımlara bakmaktadır.

Web Cache Poisoning Zafiyeti İstismar Örneği

Sızma testlerinde bolca karşılaştığımız bu zafiyetin istismar örneğini çözeceğiz.

Örneğimizi PortSwigger sitesi içerisinde “Web Cache Poisoning” başlığı altında bulabilirsiniz.

Soruyu okuduğumuzda bir kişinin devamlı ana sayfa üzerinde dolaştığını söylüyor ve bizden “alert(document.cookie)” betiğini karşı tarafta çalıştırmamız isteniyor.

“Access the lab” diyerek lab ortamımızı başlatıyoruz.

Ana sayfaya gelip “Burp Suite” aracım ile “Intercept” aktif ederek araya girdim ve “Repeater” kısmına attım. Attıktan sonra isteği bir kez gönderdim ve giden “Response” kısmında “X-Cache: miss” kısmı burada bir “Web Cache” olduğunu anlamına geliyor.

Aynı isteği bir kez daha gönderdiğimizde “hit” döndüğünü görebiliyoruz.

Path kısmını düzenledim ve tekrardan yolladım “Miss” döndü.

Bir sonraki isteğimizde “X-Forwarded-Host” kısmına herhangi bir web sitesi yazarak karşı tarafa yazdırabiliyor muyum diye baktığımızda “Response” kısmında script içinde döndüğünü görüyoruz.

Portswigger üzerinden “Exploit Server” kısmına giderek ayarlamalarımızı böyle yapıyoruz.

File kısmına “resources/js/trecking.js” Body kısmına ise “alert(document.cookie)” yazıyoruz.

Store deyip devam ettikten sonra “X-Forwarded-Host” kısmına “Exploit Server” URL’yi kopyalayıp yapıştırıyoruz ve Path kısmına yapmış olduğumuz değişikliği siliyoruz.

Send deyip isteğimizi yolladığımızda karşı tarafa “document.cookie” yazdırmış olduk ve labımızı çözdük.

 

Kategoriler Makaleler