68 lines
4.4 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}}
### Description
Ako napadač može **kontrolisati poddomen ili domen kompanije ili pronađe XSS u poddomeni**, moći će da izvede ovaj napad.
Kao što je navedeno u sekciji Hacking Cookies, kada je **kolačić postavljen na domen (specifikujući ga), koristiće se u domenu i poddomenima.**
> [!CAUTION]
> Stoga, **napadač će moći da postavi specifičan kolačić na domen i poddomene radeći nešto poput** `document.cookie="session=1234; Path=/app/login; domain=.example.com"`
Ovo može biti opasno jer napadač može:
- **Fiksirati kolačić žrtve na napadačev račun**, tako da ako korisnik ne primeti, **izvršiće radnje na napadačevom računu** i napadač može dobiti neke zanimljive informacije (proveriti istoriju pretraga korisnika na platformi, žrtva može postaviti svoju kreditnu karticu na račun...)
- Ako se **kolačić ne menja nakon prijavljivanja**, napadač može samo **fiksirati kolačić (session-fixation)**, čekati dok se žrtva prijavi i zatim **iskoristiti taj kolačić da se prijavi kao žrtva**.
- Ponekad, čak i ako se kolačići sesije menjaju, napadač koristi prethodni i takođe će dobiti novi.
- Ako **kolačić postavlja neku početnu vrednost** (kao u flasku gde **kolačić** može **postaviti** **CSRF token** sesije i ova vrednost će se održati nakon što se žrtva prijavi), **napadač može postaviti ovu poznatu vrednost i zatim je zloupotrebiti** (u tom scenariju, napadač može naterati korisnika da izvrši CSRF zahtev jer zna CSRF token).
- Baš kao što postavlja vrednost, napadač bi takođe mogao dobiti neautentifikovani kolačić generisan od strane servera, dobiti CSRF token iz njega i iskoristiti ga.
### Cookie Order
Kada pregledač primi dva kolačića sa istim imenom **delimično utičući na istu oblast** (domen, poddomeni i putanja), **pregledač će poslati obe vrednosti kolačića** kada su obe važeće za zahtev.
U zavisnosti od toga ko ima **najspecifičniju putanju** ili koji je **najstariji**, pregledač će **prvo postaviti vrednost kolačića** a zatim vrednost drugog kao u: `Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;`
Većina **vеб сајтова ће користити само прву вредност**. Затим, ако нападач жели да постави колачић, боље је да га постави пре него што буде постављен други или da ga postavi sa specifičnijom putanjom.
> [!WARNING]
> Štaviše, sposobnost da **postavite kolačić na specifičniju putanju** je veoma zanimljiva jer ćete moći da naterate **žrtvu da radi sa svojim kolačićem osim na specifičnoj putanji gde će zlonamerni kolačić biti poslat pre**.
### Protection Bypass
Moguća zaštita protiv ovog napada bi bila da **web server ne prihvata zahteve sa dva kolačića istog imena ali sa dva različita vrednosti**.
Da bi zaobišao scenario u kojem napadač postavlja kolačić nakon što je žrtvi već dodeljen kolačić, napadač bi mogao izazvati **kolačić prelivanje** i zatim, kada se **legitiman kolačić obriše, postaviti zlonamerni**.
{{#ref}}
cookie-jar-overflow.md
{{#endref}}
Još jedan koristan **zaobilazni put** mogao bi biti da **URL kodira ime kolačića** jer neka zaštita proverava 2 kolačića sa istim imenom u zahtevu i zatim server dekodira imena kolačića.
### Cookie Bomb
Napad Cookie Tossing se takođe može koristiti za izvođenje **Cookie Bomb** napada:
{{#ref}}
cookie-bomb.md
{{#endref}}
### Defense**s**
#### **Koristite prefiks `__Host` u imenu kolačića**
- Ako ime kolačića ima ovaj prefiks, **biće prihvaćeno** u Set-Cookie direktivi samo ako je označeno kao Secure, poslato sa sigurnog izvora, ne uključuje atribut Domain, i ima atribut Path postavljen na /
- **Ovo sprečava poddomene da primoraju kolačić na vršni domen jer se ovi kolačići mogu smatrati "zaključanim na domen"**
### References
- [**@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}}