Cookie Tossing
Reading time: 4 minutes
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
Opis
Jeśli atakujący może kontrolować subdomenę lub domenę firmy lub znajdzie XSS w subdomenie, będzie w stanie przeprowadzić ten atak.
Jak wskazano w sekcji Hacking Cookies, gdy ciasteczko jest ustawione na domenę (określając ją), będzie używane w domenie i subdomenach.
caution
Dlatego atakujący będzie mógł ustawić na domenie i subdomenach konkretne ciasteczko, robiąc coś takiego jak document.cookie="session=1234; Path=/app/login; domain=.example.com"
Może to być niebezpieczne, ponieważ atakujący może być w stanie:
- Utrwalić ciasteczko ofiary na koncie atakującego, więc jeśli użytkownik nie zauważy, wykona działania na koncie atakującego, a atakujący może uzyskać interesujące informacje (sprawdzić historię wyszukiwań użytkownika na platformie, ofiara może ustawić swoją kartę kredytową na koncie...)
- Jeśli ciasteczko nie zmienia się po zalogowaniu, atakujący może po prostu utrwalić ciasteczko (session-fixation), poczekać, aż ofiara się zaloguje, a następnie użyć tego ciasteczka, aby zalogować się jako ofiara.
- Czasami, nawet jeśli ciasteczka sesyjne się zmieniają, atakujący używa poprzedniego i również otrzyma nowe.
- Jeśli ciasteczko ustawia jakąś wartość początkową (jak w flask, gdzie ciasteczko może ustawić token CSRF sesji, a ta wartość będzie utrzymywana po zalogowaniu ofiary), atakujący może ustawić tę znaną wartość, a następnie ją wykorzystać (w tym scenariuszu atakujący może zmusić użytkownika do wykonania żądania CSRF, ponieważ zna token CSRF).
- Tak samo jak ustawienie wartości, atakujący mógłby również uzyskać nieautoryzowane ciasteczko generowane przez serwer, uzyskać z niego token CSRF i go użyć.
Kolejność Ciasteczek
Gdy przeglądarka otrzymuje dwa ciasteczka o tej samej nazwie częściowo wpływające na ten sam zakres (domena, subdomeny i ścieżka), przeglądarka wyśle obie wartości ciasteczka, gdy obie są ważne dla żądania.
W zależności od tego, kto ma najbardziej specyficzną ścieżkę lub które z nich jest najstarsze, przeglądarka ustawi wartość ciasteczka najpierw, a następnie wartość drugiego, jak w: Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;
Większość stron internetowych użyje tylko pierwszej wartości. Dlatego, jeśli atakujący chce ustawić ciasteczko, lepiej ustawić je przed ustawieniem innego lub ustawić je z bardziej specyficzną ścieżką.
warning
Ponadto, możliwość ustawienia ciasteczka w bardziej specyficznej ścieżce jest bardzo interesująca, ponieważ będziesz mógł sprawić, że ofiara będzie pracować ze swoim ciasteczkiem, z wyjątkiem specyficznej ścieżki, gdzie ustawione zostanie złośliwe ciasteczko, które zostanie wysłane wcześniej.
Ominięcie Ochrony
Możliwą ochroną przed tym atakiem byłoby to, że serwer WWW nie zaakceptuje żądań z dwoma ciasteczkami o tej samej nazwie, ale z dwoma różnymi wartościami.
Aby obejść scenariusz, w którym atakujący ustawia ciasteczko po tym, jak ofiara już otrzymała ciasteczko, atakujący mógłby spowodować przepełnienie ciasteczka, a następnie, gdy legitne ciasteczko zostanie usunięte, ustawić złośliwe.
{{#ref}} cookie-jar-overflow.md {{#endref}}
Innym użytecznym obejściem mogłoby być zakodowanie URL nazwy ciasteczka, ponieważ niektóre zabezpieczenia sprawdzają dwa ciasteczka o tej samej nazwie w żądaniu, a następnie serwer zdekoduje nazwy ciasteczek.
Bombardowanie Ciasteczek
Atak Cookie Tossing może być również użyty do przeprowadzenia ataku Cookie Bomb:
{{#ref}} cookie-bomb.md {{#endref}}
Ochrona
Użyj prefiksu __Host
w nazwie ciasteczka
- Jeśli nazwa ciasteczka ma ten prefiks, zostanie zaakceptowana w dyrektywie Set-Cookie tylko wtedy, gdy jest oznaczona jako Secure, została wysłana z bezpiecznego źródła, nie zawiera atrybutu Domain i ma atrybut Path ustawiony na /
- To zapobiega subdomenom wymuszającym ciasteczko na domenę główną, ponieważ te ciasteczka mogą być postrzegane jako "zablokowane na domenie"
Referencje
- @blueminimal
- https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers
- https://github.blog/2013-04-09-yummy-cookies-across-domains/
- Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.