69 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cookie Tossing
{{#include ../../banners/hacktricks-training.md}}
### Açıklama
Eğer bir saldırgan **bir alt alan adını veya bir şirketin alanını kontrol edebiliyorsa ya da bir alt alan adında bir XSS bulursa** bu saldırıyı gerçekleştirebilir.
Cookies Hacking bölümünde belirtildiği gibi, bir **cookie bir alana (belirterek) ayarlandığında, o alan ve alt alanlarda kullanılacaktır.**
> [!CAUTION]
> Bu nedenle, **bir saldırgan belirli bir cookie'yi alan ve alt alanlara ayarlayabilecektir, bunu yaparak** `document.cookie="session=1234; Path=/app/login; domain=.example.com"`
Bu tehlikeli olabilir çünkü saldırgan:
- **Kurbanın cookie'sini saldırganın hesabına sabitleyebilir**, böylece kullanıcı fark etmezse, **saldırganın hesabında işlemleri gerçekleştirebilir** ve saldırgan bazı ilginç bilgilere ulaşabilir (kullanıcının platformdaki arama geçmişini kontrol etmek, kurbanın hesabında kredi kartı ayarlaması yapması...)
- Bunun bir örneği [burada bulunabilir](https://snyk.io/articles/hijacking-oauth-flows-via-cookie-tossing/) burada saldırgan, kurbanın **git reposuna erişim yetkisi vermek için kullanacağı belirli bölümlerde cookie'sini ayarlamıştır ama saldırganın hesabından** çünkü gerekli uç noktalarda cookie'lerini ayarlayacaktır.
- Eğer **cookie giriş yaptıktan sonra değişmezse**, saldırgan sadece **bir cookie'yi sabitleyebilir (session-fixation)**, kurban giriş yapana kadar bekleyebilir ve sonra **o cookie'yi kurban olarak giriş yapmak için kullanabilir**.
- Bazen, oturum cookie'leri değişse bile, saldırgan önceki cookie'yi kullanabilir ve yeni olanı da alabilir.
- Eğer **cookie bazı başlangıç değerleri ayarlıyorsa** (flask'ta olduğu gibi, **cookie** oturumun **CSRF token'ını** ayarlayabilir ve bu değer kurban giriş yaptıktan sonra korunur), **saldırgan bu bilinen değeri ayarlayabilir ve sonra bunu kötüye kullanabilir** (bu senaryoda, saldırgan daha sonra kullanıcının CSRF token'ını bildiği için bir CSRF isteği gerçekleştirmesini sağlayabilir).
- Değeri ayarlamak gibi, saldırgan ayrıca sunucu tarafından üretilen kimlik doğrulaması yapılmamış bir cookie alabilir, ondan CSRF token'ını alabilir ve kullanabilir.
### Cookie Sırası
Bir tarayıcı, aynı isimde iki cookie aldığında **kısmen aynı kapsamı etkileyen** (alan, alt alanlar ve yol) **tarayıcı, her iki cookie'nin değerini de** geçerli olduğunda istekte gönderecektir.
Kimin **en spesifik yolu** olduğu veya hangisinin **en eski olduğu** dikkate alınarak, tarayıcı **önce cookie'nin değerini ayarlayacak** ve sonra diğerinin değerini ayarlayacaktır, örneğin: `Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;`
Çoğu **web sitesi yalnızca ilk değeri kullanacaktır**. Bu nedenle, bir saldırgan bir cookie ayarlamak istiyorsa, başka bir cookie ayarlanmadan önce ayarlamak veya daha spesifik bir yol ile ayarlamak daha iyidir.
> [!WARNING]
> Ayrıca, **daha spesifik bir yolda cookie ayarlama yeteneği** çok ilginçtir çünkü **kurbanın cookie'si ile çalışmasını sağlayabilirsiniz, yalnızca kötü niyetli cookie'nin ayarlandığı spesifik yolda gönderilecektir.**
### Koruma Aşma
Bu saldırıya karşı olası bir koruma, **web sunucusunun aynı isimde ama iki farklı değere sahip iki cookie'yi kabul etmemesi** olacaktır.
Saldırganın kurbanın zaten verilmiş bir cookie'sini ayarladığı senaryoyu aşmak için, saldırgan bir **cookie taşması** oluşturabilir ve sonra, **geçerli cookie silindikten sonra, kötü niyetli olanı ayarlayabilir**.
{{#ref}}
cookie-jar-overflow.md
{{#endref}}
Başka bir yararlı **aşma** yöntemi, **cookie'nin adını URL kodlamaktır** çünkü bazı korumalar bir istekte aynı isimde 2 cookie kontrol eder ve ardından sunucu cookie'lerin adlarını çözecektir.
### Cookie Bomb
Bir Cookie Tossing saldırısı ayrıca bir **Cookie Bomb** saldırısı gerçekleştirmek için de kullanılabilir:
{{#ref}}
cookie-bomb.md
{{#endref}}
### Savunmalar
#### **Cookie adında `__Host` ön ekini kullanın**
- Eğer bir cookie adında bu ön ek varsa, **yalnızca** Set-Cookie direktifinde **güvenli olarak işaretlenmişse, güvenli bir kaynaktan gönderilmişse, Domain niteliğini içermiyorsa ve Path niteliği / olarak ayarlanmışsa kabul edilecektir.**
- **Bu, alt alanların bir cookie'yi ana alana zorlamasını engeller çünkü bu cookie'ler "alan kilitli" olarak görülebilir.**
### Referanslar
- [**@blueminimal**](https://twitter.com/blueminimal)
- [**https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers**](https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers)
- [**https://github.blog/2013-04-09-yummy-cookies-across-domains/**](https://github.blog/2013-04-09-yummy-cookies-across-domains/)
- [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F_wAzF4a7Xg)
{{#include ../../banners/hacktricks-training.md}}