# 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}}