Cookie Tossing
Περιγραφή
Αν ένας επιτιθέμενος μπορεί να ελέγχει ένα υποτομέα ή τον τομέα μιας εταιρείας ή βρίσκει ένα XSS σε έναν υποτομέα θα μπορεί να πραγματοποιήσει αυτήν την επίθεση.
Όπως αναφέρθηκε στην ενότητα Hacking με Cookies, όταν ένα cookie ορίζεται σε έναν τομέα (καθορίζοντάς τον) θα χρησιμοποιηθεί στον τομέα και τους υποτομείς.
Συνεπώς, ένας επιτιθέμενος θα μπορεί να ορίσει στον τομέα και τους υποτομείς ένα συγκεκριμένο cookie κάνοντας κάτι σαν document.cookie="session=1234; Path=/app/login; domain=.example.com"
Αυτό μπορεί να είναι επικίνδυνο καθώς ο επιτιθέμενος μπορεί:
Να σταθεροποιήσει το cookie του θύματος στον λογαριασμό του επιτιθέμενου έτσι αν ο χρήστης δεν το παρατηρήσει, θα εκτελέσει τις ενέργειες στον λογαριασμό του επιτιθέμενου και ο επιτιθέμενος μπορεί να αποκτήσει κάποιες ενδιαφέρουσες πληροφορίες (ελέγξτε το ιστορικό των αναζητήσεων του χρήστη στην πλατφόρμα, το θύμα μπορεί να έχει ορίσει την πιστωτική του κάρτα στον λογαριασμό...)
Αν το cookie δεν αλλάζει μετά την σύνδεση, ο επιτιθέμενος μπορεί απλά να σταθεροποιήσει ένα cookie (session-fixation), να περιμένει μέχρι το θύμα συνδεθεί και μετά να χρησιμοποιήσει αυτό το cookie για να συνδεθεί ως το θύμα.
Μερικές φορές, ακόμα κι αν τα cookies συνεδρίας αλλάζουν, ο επιτιθέμενος μπορεί να χρησιμοποιήσει το προηγούμενο και θα λάβει επίσης το νέο.
Αν το cookie ορίζει μια αρχική τιμή (όπως στο flask όπου το cookie μπορεί να ορίσει το CSRF token της συνεδρίας και αυτή η τιμή θα διατηρηθεί μετά τη σύνδεση του θύματος), ο επιτιθέμενος μπορεί να ορίσει αυτήν την γνωστή τιμή και μετά να την καταχραστεί (σε αυτό το σενάριο, ο επιτιθέμενος μπορεί στη συνέχεια να κάνει τον χρήστη να κάνει ένα αίτημα CSRF καθώς γνωρίζει το CSRF token).
Όπως και με την ορισμό της τιμής, ο επιτιθέμενος θα μπορούσε επίσης να λάβει ένα μη εξουσιοδοτημένο cookie που δημιουργήθηκε από τον διακομιστή, να λάβει το CSRF token από αυτό και να το χρησιμοποιήσει.
Ταξινόμηση Cookies
Όταν ένας περιηγητής λαμβάνει δύο cookies με το ίδιο όνομα επηρεάζοντας μερικώς τον ίδιο πεδίο εφαρμογής (τομέας, υποτομείς και διαδρομή), ο περιηγητής θα στείλει και τις δύο τιμές του cookie όταν και οι δύο είναι έγκυρες για το αίτημα.
Ανάλογα με τον πιο συγκεκριμένο δρόμο ή ποιος είναι παλαιότερος, ο περιηγητής θα ορίσει πρώτα την τιμή του cookie και μετά την τιμή του άλλου όπως σε: Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;
Το περισσότερα websites θα χρησιμοποιήσουν μόνο την πρώτη τιμή. Έτσι, αν ένας επιτιθέμενος θέλει να ορίσει ένα cookie είναι καλύτερο να το ορίσει πριν οριστεί ένα άλλο ή να το ορίσει με έναν πιο συγκεκριμένο δρόμο.
Επιπλέον, η δυνατότητα ορισμού ενός cookie σε έναν πιο συγκεκριμένο δρόμο είναι πολύ ενδιαφέρουσα καθώς θα μπορείτε να κάνετε το θύμα να λειτουργεί με το cookie του εκτός από τον συγκεκριμένο δρόμο όπου το κακόβουλο cookie που ορίστηκε θα σταλεί πριν.
Παράκαμψη Προστασίας
Η πιθανή προστασία ενάντια σε αυτήν την επίθεση θα μπορούσε να είναι ότι ο web διακομιστής δεν θα δέχεται αιτήματα με δύο cookies με το ίδιο όνομα αλλά δύο διαφορετικές τιμές.
Για να παρακάμψει το σενάριο όπου ο επιτιθέμενος ορίζει ένα cookie μετά το ότι το θύμα έχει ήδη λάβει το cookie, ο επιτιθέμενος θα μπορούσε να προκαλέσει ένα cookie overflow και μετά, αφού το νόμιμο cookie διαγραφεί, να ορίσει το κακόβουλο.
pageCookie Jar OverflowΜια άλλη χρήσιμη παράκαμψη θα μπορούσε να είναι να κωδικοποιήσετε το όνομα του cookie όπως κάποιες προστασίες ελέγχουν για 2 cookies με το ίδιο όνομα σε ένα αίτημα και τότε ο διακομιστής θα αποκωδικοποιήσει τα ονόματα των cookies.
Cookie Bomb
Μια επίθεση Cookie Tossing μπορεί επίσης να χρησιμοποιηθεί για να πραγματοποιήσει μια επίθεση Cookie Bomb:
pageCookie BombΆμυνες
Χρησιμοποιήστε το πρόθεμα __Host
στο όνομα του cookie
__Host
στο όνομα του cookieΑν ένα όνομα cookie έχει αυτό το πρόθεμα, θα γίνει δεκτό μόνο σε μια οδηγία Set-Cookie αν είναι σημειωμένο ως Secure, στάλθηκε από μια ασφαλή προέλευση, δεν περιλαμβάνει το χαρακτηριστικό Domain, και έχει το χαρακτηριστικό Path ορισμένο σε /
Αυτό εμποδίζει τους υποτομείς από το να επιβάλουν ένα cookie στον κορυφαίο τομέα καθώς αυτά τα cookies μπορούν να θεωρηθούν "κλειδωμένα στον τομέα"
Αναφορές
[https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers](https://speakerdeck.com/filedescriptor/the
Last updated