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