mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
69 lines
4.9 KiB
Markdown
69 lines
4.9 KiB
Markdown
# 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}}
|