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