Web Cache Poisoning

Gelişmiş saldırı tekniği ile web cache'leri hedef alarak kullanıcılara zararlı içerik sunma

"Cache zehirlenmesi, bir kez başarılı olduğunda binlerce kullanıcıyı etkileyebilir."

Web Cache Poisoning Nedir?

Web Cache Poisoning, saldırganın web sunucusu ve cache sisteminin davranışını istismar ederek, zararlı HTTP yanıtlarının diğer kullanıcılara sunulmasını sağlayan gelişmiş bir tekniktir.

Bu saldırı temel olarak iki aşamada gerçekleşir: İlk olarak, backend sunucudan zararlı payload içeren bir yanıt elde etme; ikinci olarak, bu yanıtın cache'lenmesini ve hedef kurbanların bu zararlı içeriği almasını sağlama.

Potansiyel Etkiler:
  • • XSS (Cross-Site Scripting) saldırıları
  • • JavaScript injection saldırıları
  • • Open redirection zafiyetleri
  • • Kullanıcı verilerinin çalınması
  • • Kimlik bilgilerinin ele geçirilmesi
2018
İlk Araştırma Yılı
Binlerce
Etkilenen Kullanıcı
Yüksek
Risk Seviyesi

Web Cache Nasıl Çalışır?

Cache sistemi, sunucu ile kullanıcı arasında yer alır ve belirli isteklerin yanıtlarını belirli bir süre saklar. Eğer sunucu her HTTP isteği için yeni yanıt göndermek zorunda kalsa, bu durum sunucuyu aşırı yükler ve latency sorunlarına neden olur.

1. Unkeyed Inputs Tespiti
Saldırgan, cache key'de yer almayan ancak backend sunucu tarafından işlenen HTTP header'larını ve parametrelerini tespit eder. Bu aşamada Param Miner gibi otomatik araçlar kullanılabilir.
2. Zararlı Yanıt Elde Etme
Tespit edilen unkeyed input'lar kullanılarak backend sunucudan zararlı payload içeren bir HTTP yanıtı elde edilir. Bu payload XSS, redirect veya JavaScript injection içerebilir.
3. Cache'leme
Zararlı içerikli yanıtın cache'lenmesi sağlanır. Bu, dosya uzantısı, content type, route, status code gibi faktörlere bağlı olabilir. Başarılı olduğunda tüm kurbanlar bu zararlı içeriği alır.

Unkeyed Inputs Tespiti

Unkeyed input'lar, cache poisoning saldırısının temel yapı taşlarıdır. Bu input'lar cache tarafından göz ardı edilir ancak backend sunucu tarafından işlenir.

// Manuel tespit yöntemi
GET / HTTP/1.1
Host: example.com
X-Test-Header: random_value_123
// Yanıtta random_value_123 varsa unkeyed!
Param Miner Aracı: Burp Suite eklentisi olan Param Miner, otomatik olarak unkeyed input'ları tespit eder. Built-in header listesi kullanarak sistematik testler yapar.
Dikkat: Canlı sistemlerde test yaparken, cache buster kullanarak sadece kendi isteklerinizin cache'lenmesini sağlayın. Aksi takdirde gerçek kullanıcılara zararlı içerik sunabilirsiniz.
Yaygın Unkeyed Headers
X-Forwarded-Host, X-Forwarded-Proto, X-Original-URL, X-Rewrite-URL, X-Host, CF-Connecting-IP, X-Real-IP ve daha birçok header unkeyed olabilir.

Zararlı Yanıt Elde Etme

Unkeyed input tespit edildikten sonra, bu input'un backend sunucu tarafından nasıl işlendiğini anlamak kritiktir. Eğer input yanıta yansıtılıyor veya dinamik veri üretmede kullanılıyorsa, cache poisoning için potansiyel giriş noktası olabilir.

// X-Forwarded-Host header ile saldırı
GET / HTTP/1.1
Host: example.com
X-Forwarded-Host: evil.com
// Yanıt
<script src="//evil.com/malicious.js"></script>
Saldırı Örnekleri:
  • • Host header manipulation ile XSS
  • • X-Original-URL ile path traversal
  • • X-Forwarded-Proto ile HTTPS bypass
  • • User-Agent reflection ile JavaScript injection
Payload Hazırlama
Payload'u hazırlarken, hem input validation bypass hem de output encoding bypass tekniklerini kullanmak gerekebilir. Context'e uygun payload seçimi kritiktir.

Zararlı Yanıtı Cache'leme

Zararlı payload'u içeren yanıtın cache'lenmesi, saldırının en kritik aşamasıdır. Cache'leme davranışı birçok faktöre bağlı olarak değişebilir.

Cache'lemeyi Etkileyen Faktörler:
  • • HTTP Status Code (200, 301, 404, vb.)
  • • Content-Type Header
  • • Cache-Control Directives
  • • File Extension
  • • Request Method
  • • Response Size
// Cache-friendly yanıt
HTTP/1.1 200 OK
Content-Type: text/html
Cache-Control: max-age=3600
Content-Length: 1234
Cache TTL
Cache'lenme süresi (TTL) saldırının etkisini belirler. Kısa TTL'ler sürekli re-poisoning gerektirir, uzun TTL'ler ise uzun süreli etki sağlar.

Yaygın Zaafiyetler

Web cache poisoning zafiyetleri, cache tasarım hatalarından veya yanlış implementasyonlardan kaynaklanabilir.

Cache Design Flaws:
  • • Host Header Injection
  • • HTTP Header Injection
  • • HTTP Method Override
  • • Normalize edilmeyen cache keys
Implementation Flaws:
  • • CDN-specific header abuse
  • • Keyed port manipulation
  • • Fat GET request handling
  • • Internal header exposure
CDN Specific Issues
CloudFlare, Fastly, AWS CloudFront gibi CDN'ler kendilerine özel header'lar kullanır. Bu header'lar bazen unkeyed olabilir ve saldırı vektörü oluşturabilir.

Örnek Saldırı Senaryosu

Praktik bir cache poisoning saldırısının adım adım uygulanması:

// 1. Keşif aşaması
GET / HTTP/1.1
Host: target.com
X-Forwarded-Host: test123.com
// 2. Yanıt analizi
<link href="//test123.com/style.css">
// X-Forwarded-Host yanıta yansıyor!
// 3. Saldırı payload'u
GET / HTTP/1.1
Host: target.com
X-Forwarded-Host: evil.com
// 4. Cache'lenen zararlı yanıt
<link href="//evil.com/malicious.css">
// Artık tüm ziyaretçiler evil.com'u yükleyecek
Saldırının Sonucu: Ana sayfa ziyaret eden tüm kullanıcılar, saldırganın kontrolündeki evil.com domain'inden CSS dosyası yükleyecek. Bu dosya zararlı JavaScript kodu içerebilir.

Önleme Yöntemleri

Web cache poisoning saldırılarına karşı korunmak için çeşitli önlemler alınabilir.

Temel Koruma Stratejileri:
  • • Gereksiz header'ları devre dışı bırakma
  • • Input validation ve sanitization
  • • Strict cache key configuration
  • • WAF kurallarının güncellenmesi
  • • Static content'e cache'i sınırlama
İleri Düzey Koruma:
  • • Request rewriting yerine exclusion
  • • Fat GET request'leri reddetme
  • • Third-party header audit
  • • Cache behavior monitoring
Cache Configuration
Cache konfigürasyonunda, performans ihtiyacından dolayı bir şeyi cache key'den çıkaracaksan, bunun yerine request'i yeniden yaz. Bu, güvenlik riskini azaltır.

Tespit ve Analiz

Web cache poisoning saldırılarını tespit etmek ve analiz etmek için çeşitli araçlar ve teknikler kullanılabilir.

Param Miner
Burp Extension
Manual
Header Testing
Log Analysis
Cache Behavior
// Cache poison tespiti
curl -H "X-Test: poison" https://target.com/
curl https://target.com/ # İkinci istek
# İkinci istekte de "poison" görünüyorsa cache'lenmiş
Monitoring
Sürekli monitoring ile anormal cache davranışları, beklenmedik header'lar ve suspicious request pattern'lar tespit edilebilir.

Güvenlik Farkındalığı

Web cache poisoning, modern web uygulamalarının karşılaştığı en sofistike saldırı türlerinden biridir. Tek bir başarılı saldırı, binlerce kullanıcıyı etkileyebilir ve kalıcı hasara yol açabilir.

Önemli Hatırlatmalar
Etik Kullanım: Bu bilgiler sadece eğitim ve savunma amaçlıdır
Yasal Sorumluluk: İzinsiz test yapmayın
Sürekli Öğrenme: Cache teknolojileri sürekli gelişiyor
Savunma Odaklı: Saldırıları anla, savunma geliştir

"Güvenlik, sürekli bir süreçtir, bir hedef değil."