Cookie Tossing
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Εάν ένας επιτιθέμενος μπορεί να ελέγξει ένα υποτομέα ή το τομέα μιας εταιρείας ή βρει ένα XSS σε έναν υποτομέα, θα είναι σε θέση να εκτελέσει αυτή την επίθεση.
Όπως αναφέρθηκε στην ενότητα Χάκινγκ Cookies, όταν ένα cookie ορίζεται σε έναν τομέα (καθορίζοντάς τον) θα χρησιμοποιείται στον τομέα και στους υποτομείς.
Επομένως, ένας επιτιθέμενος θα είναι σε θέση να ορίσει σε τον τομέα και στους υποτομείς ένα συγκεκριμένο cookie κάνοντας κάτι όπως document.cookie="session=1234; Path=/app/login; domain=.example.com"
Αυτό μπορεί να είναι επικίνδυνο καθώς ο επιτιθέμενος μπορεί να είναι σε θέση να:
Σταθεροποιήσει το cookie του θύματος στον λογαριασμό του επιτιθέμενου έτσι ώστε αν ο χρήστης δεν το παρατηρήσει, θα εκτελεί τις ενέργειες στον λογαριασμό του επιτιθέμενου και ο επιτιθέμενος μπορεί να αποκτήσει κάποιες ενδιαφέρουσες πληροφορίες (να ελέγξει την ιστορία των αναζητήσεων του χρήστη στην πλατφόρμα, το θύμα μπορεί να έχει ορίσει την πιστωτική του κάρτα στον λογαριασμό...)
Εάν το cookie δεν αλλάξει μετά την είσοδο, ο επιτιθέμενος μπορεί απλά να σταθεροποιήσει ένα cookie (session-fixation), να περιμένει μέχρι το θύμα να συνδεθεί και στη συνέχεια να χρησιμοποιήσει αυτό το cookie για να συνδεθεί ως το θύμα.
Μερικές φορές, ακόμη και αν τα session cookies αλλάζουν, ο επιτιθέμενος χρησιμοποιεί το προηγούμενο και θα λάβει και το νέο.
Εάν το cookie ορίζει κάποια αρχική τιμή (όπως στο flask όπου το cookie μπορεί να ορίσει το CSRF token της συνεδρίας και αυτή η τιμή θα διατηρηθεί μετά την είσοδο του θύματος), ο επιτιθέμενος μπορεί να ορίσει αυτή τη γνωστή τιμή και στη συνέχεια να την εκμεταλλευτεί (σε αυτό το σενάριο, ο επιτιθέμενος μπορεί να κάνει τον χρήστη να εκτελέσει ένα CSRF αίτημα καθώς γνωρίζει το CSRF token).
Ακριβώς όπως η ρύθμιση της τιμής, ο επιτιθέμενος θα μπορούσε επίσης να αποκτήσει ένα μη αυθεντικοποιημένο cookie που δημιουργήθηκε από τον διακομιστή, να αποκτήσει το CSRF token από αυτό και να το χρησιμοποιήσει.
Όταν ένας περιηγητής λαμβάνει δύο cookies με το ίδιο όνομα που επηρεάζουν μερικώς την ίδια εμβέλεια (τομέας, υποτομείς και διαδρομή), ο περιηγητής θα στείλει και τις δύο τιμές του cookie όταν και οι δύο είναι έγκυρες για το αίτημα.
Ανάλογα με το ποιος έχει την πιο συγκεκριμένη διαδρομή ή ποιο είναι το παλαιότερο, ο περιηγητής θα ορίσει πρώτα την τιμή του cookie και στη συνέχεια την τιμή του άλλου όπως στο: Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;
Οι περισσότερες ιστοσελίδες θα χρησιμοποιούν μόνο την πρώτη τιμή. Έτσι, αν ένας επιτιθέμενος θέλει να ορίσει ένα cookie είναι καλύτερα να το ορίσει πριν οριστεί κάποιο άλλο ή να το ορίσει με μια πιο συγκεκριμένη διαδρομή.
Επιπλέον, η δυνατότητα ρύθμισης ενός cookie σε μια πιο συγκεκριμένη διαδρομή είναι πολύ ενδιαφέρουσα καθώς θα μπορείτε να κάνετε τον θύμα να εργάζεται με το cookie του εκτός από την συγκεκριμένη διαδρομή όπου το κακόβουλο cookie θα έχει οριστεί πριν.
Μια πιθανή προστασία κατά αυτής της επίθεσης θα ήταν ότι ο διακομιστής ιστού δεν θα αποδέχεται αιτήματα με δύο cookies με το ίδιο όνομα αλλά με δύο διαφορετικές τιμές.
Για να παρακάμψει το σενάριο όπου ο επιτιθέμενος ορίζει ένα cookie αφού το θύμα έχει ήδη λάβει το cookie, ο επιτιθέμενος θα μπορούσε να προκαλέσει μια υπερχείλιση cookie και στη συνέχεια, μόλις το νόμιμο cookie διαγραφεί, να ορίσει το κακόβουλο.
Cookie Jar OverflowΜια άλλη χρήσιμη παράκαμψη θα μπορούσε να είναι να κωδικοποιήσει τη διεύθυνση URL το όνομα του cookie καθώς κάποιες προστασίες ελέγχουν για 2 cookies με το ίδιο όνομα σε ένα αίτημα και στη συνέχεια ο διακομιστής θα αποκωδικοποιήσει τα ονόματα των cookies.
Μια επίθεση Cookie Tossing μπορεί επίσης να χρησιμοποιηθεί για να εκτελέσει μια Cookie Bomb επίθεση:
Cookie Bomb__Host
στο όνομα του cookieΕάν ένα όνομα cookie έχει αυτό το πρόθεμα, θα γίνεται αποδεκτό μόνο σε μια οδηγία Set-Cookie εάν είναι επισημασμένο ως Secure, έχει σταλεί από μια ασφαλή προέλευση, δεν περιλαμβάνει χαρακτηριστικό Domain και έχει το χαρακτηριστικό Path ορισμένο σε /
Αυτό αποτρέπει τους υποτομείς από το να επιβάλλουν ένα cookie στον κορυφαίο τομέα καθώς αυτά τα cookies μπορούν να θεωρηθούν ως "κλειδωμένα σε τομέα"
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)