Web Cache Nedir? / Web Cache Poisoning Mantığı

Mr246

Üye
8 Ara 2022
103
39
WEB CACHE / WEB CACHE POISONING MANTIĞI


Gerçek hayatta terimler karşınıza Türkçe çıkmayacağı için terimleri direkt İngilizce kullandım.

Bölüm 1: Web Cache

Bir web sitesine gitmeye çalıştığımızda o sitenin barındığı sunucuya, web sitesinin içeriğine erişebilmek için istek yollarız ve sunucu her seferinde gitmek istediğimiz sayfayı gösterebilmek için arka planda sayısız işlem yapar. Aynı anda birçok kişi bir siteye girmek istediğinde sunucu üzerinde ağır bir yük oluşur. Bu yükü azaltmak için kullanıcı ile web sitesinin bulunduğu sunucu arasında "cache servisleri" denilen servisler kullanılır. Cache servisleri bir tür veritabanı gibi çalışır. Key(anahtar) verilir ve key'e karşılık gelen value(değer) alınır.

Cache için iki temel şeye ihtiyacımız var. Bunlardan biri key, diğeri value. Burada value web sitesinin içeriğidir.

Key ise aşağıdaki parçaların birleşmesiyle oluşur:

parça: protocol / domain / path / query string
örnek: http / xxx.com / home / ?haber=1


Parçaların birleşmesiyle oluşan yapı: http://www. xxx.com/home/?haber=1

Bunun için veritabanı gibi ayrı bir sunucu kullanmak maliyetleri yükselteceğinden tercih edilmez. Süreç in-memory ilerler. Bu, tutulan bilgilerin kaybedilme riskini arttırsa da cache kritik bir veri içermediğinden kaybedilmesi önemli değildir. Kolayca yeniden hesaplanabilir. Sürecin in-memory ilerlemesinin bir diğer avantajı da hızlı oluşudur.

Bir web sitesine erişmek istediğimde, gönderdiğimiz key, cache servisinde barındırılmıyorsa, cache servisi web sitesinin bulunduğu sunucuyla iletişime geçer ve gönderilen key'e karşılık gelen veriyi sunucudan ister. Bu istek sunucuya gönderilirken firewall gibi birçok kontrolden geçer. Sunucu, isteğe cevap verirken önce istenen verinin cache'e dönüştürülebilir olup olmadığını kontrol eder. Örneğin, private-key kişiye özel olduğundan cacheable bir veri değildir. Çünkü doğası gereği herkes için farklı bir değer vermesi gerekir. Bir verinin cacheable olup olmadığını belirtmek için header'lar kullanılır.​


Bölüm 2: Web Cache Poisoning Mantığı

Web sunucusuna yönlendirilen her yeni cache isteği için sunucunun bir cevap ürettiğini söylemiştik. Bu cevabın bir yerine zararlı kod yerleştirebilirsek bizden sonra bu key'i gönderen kişiler yüklediğimiz zararlı kod içeren siteye maruz kalacaktır.Bu verinin doğal olarak cacheable olması gerekir ki cache servislerinde barındırılabilsin.

Peki bir sorgu gönderdiğimizde, bunun arada cache'e dönüştürülüp dönüştürülmediğini nasıl anlayacağız? Cevap basit. Cache servisi kullanmanın avantajlarından biri de hız kazandırmasıydı. O zaman gönderdiğimiz sorguların geri dönüş hızını kontrol ederek bunu öğrenebilriz.

Örneğin, "http://www .xxx.com/?haber=lahmacuntarifiverbana" gibi daha önce kullanılmamış rastgele query string gönderdiğimizde ilk cevap 0.2 saniyede, aynı sorguyu tekrar gönderdiğimizde sonraki cevaplar 0.05 saniye gibi daha kısa bir sürede geliyorsa, orada bir cache servisi olduğunu söyleyebiliriz.

Bir diğer yöntemde ise gelen response incelenir. Cache servisi kullanan bir sitede response şu şekilde görünebilir:

HTTP/1.1 200
Content-Type: text/html
CF-Cache-Hit: OK veya MISS


Yukarıdaki örnekte "CF-Cache-Hit: OK" bölümü yerine "Cache: Yes" gibi aklınıza gelebilecek her şey olabilir. Burada önemli olan cache servisinin kullandığını anlayabileceğimiz bir veri olması. Bazı sistemlerde "Cache: zxc12esfadascz" gibi cache key verilebilir. Burada illa 200 almamıza gerek yok. 4xx gibi hata mesajlarına da poisoning uygulanabilir.

Key value ve unkey value dediğimiz iki değer tipi vardır. Key value dediklerimiz key oluşturulurken kullanılan değerlerdir. Unkey value ise tam tersi, key oluşturulurken kullanılmayan değerlerdir. Cache poisoning uygulanırken key value olan değerler üzerine gidilmez. Çünkü bunlar değişirse key de değişir. Örneğin query string değiştirilirse otomatik olarak key de değişecektir.​


Cache servislerinin yapısını anladıysanız bu saldırı türünün diğer saldırı tipleriyle birleştirilebileceğini fark etmişsinizdir. PortSwigger'da cache poisoning ile ilgili 16 farklı saldırı türü/lab bulunuyor. Bu lab'ların çözümlerinin hepsini bu konuda paylaşmam mümkün olmadığından konu altına gelen talep durumuna göre çözümleri Türkçe paylaşıp/paylaşmamaya karar vereceğim.

Göze hitap etmesi açısından görsel ekleyecektim ancak tasarım işlerini hiç sevmiyorum. Lab çözümlerini eklersem direkt ekran görüntüleriyle anlatım yapacağım.

kaynak: Mehmet D. İNCE "Web Security 0x1C | Web Cache Nedir? Web cache poisoning zafiyeti"​

 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.