D P U S E C

Web Cache Poisoning

Günümüzde, internet üzerinde gezinirken hızlı sayfa yüklemeleri ve akıcı bir kullanıcı deneyimi bekliyoruz. Bu beklentilerimizi karşılamak amacıyla, web siteleri genellikle web önbellekleme tekniklerini kullanır. Ancak, bu tekniklerin yanlış bir şekilde kullanılması veya kötü niyetli saldırılarla hedef alınması durumunda, karşımıza “Web Önbellek Zehirlenmesi” gibi ciddi güvenlik sorunları çıkabilir.

Cache Nedir ?

Genel anlamda cache (ön bellekleme), sık kullanılan verilerin veya işlemlerin daha hızlı erişilebilir olması amacıyla geçici bir depolama alanına kopyalanmasıdır. Bu, genellikle tekrar eden taleplere daha hızlı yanıt verebilmek için kullanılır. Bu ön bellekleme sistemi bilgisayar sistemlerinde performansı arttırmak, hızı optimize etmek ve işlem yükünü hafifletmek için kullanılır.

Tarayıcı önbelleği nedir ve nasıl çalışır ?

Bir kullanıcı bir web sayfasını her yüklediğinde, tarayıcısının bu web sayfasını görüntülemek için oldukça fazla veri indirmesi gerekir. Sayfa yükleme sürelerini kısaltmak için tarayıcılar, web sayfasında görünen içeriğin çoğunu önbelleğe alır ve web sayfası içeriğinin bir kopyasını cihazın sabit sürücüsüne kaydeder. Bu şekilde, kullanıcı sayfayı bir sonraki yüklediğinde içeriğin çoğu zaten yerel olarak depolanır ve sayfa çok daha hızlı yüklenir. Tarayıcılar bu kopyaları TTL (Time To Live ) süresi dolana kadar tarayıcının önbelleğinde kalır.

Server Cache Nedir ?



Web sunucuları sıklıkla ziyaret edilen sayfalarını cache sunucuları içerisinde tutar. Bu cache sunucuları genellikle ana sunucuların önünde olurlar. Web sayfasını ziyaret etmek isteyen kullanıcılar aslında ana sunucuya gitmeyip cache sunucusundan içeriğini alır. Bu sayede; Sunucunun işlem yükü ciddi ölçüde azaltılmış(sayfalar tekrar tekrar oluşturulmaz), kullanıcıya hızlı bir dönüş yapılmış ve Bant Genişliği Tasarrufu sağlanmış olur.

Bir isteğin Ana sunucudan mı yoksa Cache sunucudan mı gelidiğini nasıl anlarız ?

Bu durumu genellikle HTTP response başlıklarında görebiliriz görebiliriz.
  • Age: Bu başlık varsa ve değeri sıfırdan büyükse, bu yanıtın önbellekten geldiği anlamına gelir.
  • X-Cache: HIT Yapılan bir önceki isteğin yanıtının önbellekten geldiğini belirtir.
  • X-Cache: MISS Yapılan isteğin yanıtının önbellekten gelmediğini belirtir.
  • Fakat web sunucusu bu bilgeri HTTP response içerisinde göstermeyebilir. Bu durumda yapılan ilk istek ile son isteğin zaman farkına bakar, ciddi bir zaman farkı var ise gelen içeriğin Cache sunucudan geldiğini varsayabiliriz.

    Bir Web Sunucusu Sayfalarını Nasıl Önbelleğe alır ?

    Önbelleğe alınacak veri için “key” ve “value” değerleri vardır. Key değeri, ilgili sayfanın REQUEST başlıklarına göre hazırlanmış bir anahtardır. Cache sunucu kendisine gelen isteklerde bu key değerini görmez ise kullanıcının farklı bir sayfayı istediğini anlar ve isteği ana sunucuya gönderir.

    Hangi Sayfalar Cache Sunucusunda saklanmaz ?

    Kişiye özel veya spesifik kullanıcı sayfalarının önbellekte saklanması uygun değildir. Örneğin bir e-ticaret sitesinin “kullanıcı bilgilerim” kısmı cache sunucuda saklamak mantıksız olacaktır. Bu sayfa bize özel olup başka kullanıcıların görmemesi gerekir.

    Web Cache Poisoning Nedir ?

    Eğer bir kullanıcı tarayıcısında çalışan bir XSS kodunu başarılı bir şekilde bir sayfaya enjekte ederse ve bu sayfa önbelleklenirse, önbellekte saklanan bu zararlı kod, sayfayı sonraki kullanıcılara gösterildiğinde çalışacaktır. Bu, önceki bir XSS saldırısının, önbellek zehirlenmesi yoluyla diğer kullanıcılara bulaşan bir Stored XSS haline gelir. Genellikle saldırganlar HTTP REQUSTLERİN başlıklarını hedef alırlar. Buradaki parametreleri deneyerek kendi payloadlarını web sayfasının içinde ararlar. Bunlara “X-Forwarded-Host” ,”X-Forwarded-Scheme“, “Pragma: x-get-cache-key” başlıkları örnek olarak verilebilir. Daha sonra saldırgan bu zararlı sayfayı cache server içerisine HIT ettirmeye çalışır. Saldırgan başarılı olduğu taktirde zararlı web sayfasına erişim sağlayan herkeste zararlı kodlar çalışacaktır.

    KAYNAKÇA

    https://www.cloudflare.com/learning/cdn/what-is-caching/
    https://portswigger.net/web-security/web-cache-poisoning
    https://aws.amazon.com/tr/caching
    Sosyal Medyada Paylaş

    Leave A Comment