Web Cache Poisoning

Web Cache Poisoning Nedir?

Web cache poisoning, bir saldırganın bir web sunucusunun ve cache'in davranışını istismar ederek diğer kullanıcılara zararlı bir HTTP yanıtı göndermesini sağlayan gelişmiş bir tekniktir.

Temel olarak, Web cache poisoning iki aşamadan oluşur. İlk olarak, saldırganın back-end sunucudan bir tür tehlikeli payload içeren bir yanıtı nasıl ortaya çıkaracağını bulması gerekir. Başarılı olduklarında, yanıtlarının önbelleğe alındığından ve daha sonra hedeflenen kurbanlara sunulduğundan emin olmaları gerekir.

Zehirlenmiş bir web önbelleği, XSS, JavaScript injection, open redirection gibi güvenlik açıklarından yararlanarak çok sayıda farklı saldırıyı dağıtmak için potansiyel olarak yıkıcı bir araç olabilir.

Saldırı Yöntemleri

Cache Kontrolü

Bu saldırının yapılabilmesi için sayfanın cachelendiğini kontrol etmemiz gerekli. Bunu burp pasif taramada gösterir. Aynı zamanda response içinde aşağıdaki gibi headerlar var ise anlayabiliriz.

# Cache'e Yükleme
Age: 0
X-Cache: miss

# Cache'ten Alma
Age: 1
X-Cache: hit

Parametre Kontrolü

Param miner eklentisinin guess everything! seçeneği ile hangi başlık veya parametre yansıyor öğrenebiliriz.

Eğer cookieler yanıtta yansıyorsa xss tetiklenebilir.

Cookie: fehost=prod-cache-01

X-Forwarded-Host ile Poisoning

X-Forwarded-Host: example.com

X-Original-URL ile Poisoning

Eğer bu başlık ile cache tetiklenmiyorsa kullanıcıları istediğimiz url'e yönlendirebiliriz.

X-Original-URL: /foo\bar

X-Forwarded-Host ve X-Forwarded-Scheme ile Poisoning

X-Forwarded-Scheme: nothttps
X-Forwarded-Host: example.com

URL Parametresi ile Poisoning

Eğer url parametresi sayfada yansıyorsa fakat cache mekanizmasını etkilemiyorsa cache poisoning yapılabilir.

Parametre Gizleme

Eğer bir isteğe parametre eklediğinde cache etkileniyorsa & karakteri ; karakterini kullanarak eklemeyi deneyebiliriz.

https://example.com?q=foobar;x=payload

Parametreyi Body'de Gönderme

Eğer bir parametre URL parametresi olarak gönderildiğinde cache tetikleniyorsa aynı parametreyi body'de göndererek cache tetiklenmemesini sağlayabiliriz.

GET /?page=main

GET /?page=main

page=payload

URL Normalization

Normalde encode edildiği için çalışmayan bir xss payload cache edildikten sonra gösterildiğinde tetiklenebilir. Çünkü bazen cache mekanizması URL decode yapabilir.

Araçlar

Burp Param Miner : https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943

Last updated