<summary><strong>Μάθετε να χακάρετε το AWS από το μηδέν μέχρι τον ήρωα με το</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
*Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να**κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκερ τρικ σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
Τα cookies έρχονται με διάφορα χαρακτηριστικά που ελέγχουν τη συμπεριφορά τους στον περιηγητή του χρήστη. Εδώ έχουμε μια ανασκόπηση αυτών των χαρακτηριστικών με μια πιο παθητική φωνή:
Η ημερομηνία λήξης ενός cookie καθορίζεται από το χαρακτηριστικό `Expires`. Αντίστροφα, το χαρακτηριστικό `Max-age` ορίζει το χρόνο σε δευτερόλεπτα μέχρι το cookie να διαγραφεί. **Επιλέξτε το `Max-age` καθώς αντικατοπτρίζει πιο σύγχρονες πρακτικές.**
Οι φιλοξενούμενοι που λαμβάνουν ένα cookie καθορίζονται από το χαρακτηριστικό `Domain`. Από προεπιλογή, αυτό ορίζεται στον φιλοξενούντα που εξέδωσε το cookie, χωρίς να συμπεριλαμβάνει τα υποτομεία του. Ωστόσο, όταν το χαρακτηριστικό `Domain` ορίζεται ρητά, περιλαμβάνει επίσης τα υποτομεία. Αυτό καθιστά την καθορισμό του χαρακτηριστικού `Domain` μια λιγότερο περιοριστική επιλογή, χρήσιμη για περιπτώσεις όπου είναι απαραίτητο το κοινή χρήση των cookies σε υποτομεία. Για παράδειγμα, η ρύθμιση `Domain=mozilla.org` καθιστά τα cookies προσβάσιμα στα υποτομέα της όπως το `developer.mozilla.org`.
Μια συγκεκριμένη διαδρομή URL που πρέπει να υπάρχει στο αιτούμενο URL γιανα σταλεί η κεφαλίδα `Cookie` υποδεικνύεται από το χαρακτηριστικό `Path`. Αυτό το χαρακτηριστικό θεωρεί τον χαρακτήρα `/` ως διαχωριστικό καταλόγου, επιτρέποντας ταιριάσματα σε υποκαταλόγους επίσης.
Να θυμάστε, κατά τη διαμόρφωση των cookies, η κατανόηση αυτών των χαρακτηριστικών μπορεί να βοηθήσει να εξασφαλιστεί ότι θα συμπεριφέρονται όπως αναμένεται σε διαφορετικά σενάρια.
Πίνακας από [Invicti](https://www.netsparker.com/blog/web-security/same-site-cookie-attribute-prevent-cross-site-request-forgery/) και ελαφρώς τροποποιημένο.\
**\*Σημειώστε ότι από το Chrome80 (Φεβ/2019) η προεπιλεγμένη συμπεριφορά ενός cookie χωρίς το χαρακτηριστικό samesite** **θα είναι lax** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\
Σημειώστε ότι προσωρινά, μετά την εφαρμογή αυτής της αλλαγής, τα **cookies χωρίς πολιτική SameSite** στο Chrome θα **χειριστούν ως None** κατά τα **πρώτα 2 λεπτά και στη συνέχεια ως Lax για αιτήματα POST διασταυρούμενων τομέων κορυφαίου επιπέδου.**
*Αν η σελίδα **στέλνει τα cookies ως απάντηση** μιας αιτήσεως (για παράδειγμα σε μια σελίδα **PHPinfo**), είναι δυνατό να καταχραστείτε το XSS γιανα στείλετε μια αίτηση σε αυτή τη σελίδα και **να κλέψετε τα cookies** από την απάντηση (ελέγξτε ένα παράδειγμα στο [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/).
* Αυτό μπορεί να παρακαμφθεί με αιτήσεις **TRACE HTTP** καθώς η απάντηση από τον διακομιστή (εάν αυτή η μέθοδος HTTP είναι διαθέσιμη) θα αντανακλά τα cookies που στάλθηκαν. Αυτή η τεχνική ονομάζεται **Cross-Site Tracking**.
* Αυτή η τεχνική αποφεύγεται από τους **σύγχρονους περιηγητές μη επιτρέποντας την αποστολή ενός αιτήματος TRACE** από το JS. Ωστόσο, έχουν βρεθεί κάποιες παρακάμψεις σε αυτό σε συγκεκριμένο λογισμικό όπως η αποστολή `\r\nTRACE` αντί για`TRACE` στο IE6.0 SP2.
Ένας από τους τρόπους προστασίας των cookies που προσθέτουν το πρόθεμα `__Host-` είναι να αποτρέπουν την αντικατάστασή τους από υποτομείς. Αποτρέποντας, για παράδειγμα, τις επιθέσεις [**Cookie Tossing**](cookie-tossing.md). Στην ομιλία [**Cookie Crumbles: Αποκάλυψη Ευπάθειας Ακεραιότητας Συνεδρίας Ιστού**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**άρθρο**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) παρουσιάζεται ότι ήταν δυνατό να οριστούν cookies με πρόθεμα \_\_HOST- από υποτομές, με τον τρόπο του να εξαπατήσει τον αναλυτή, για παράδειγμα, προσθέτοντας "=" στην αρχή ή στην αρχή και στο τέλος...:
Ή στην PHP ήταν δυνατό να προστεθούν **άλλοι χαρακτήρες στην αρχή** του ονόματος του cookie που θα αντικαθίσταντο από χαρακτήρες κάτω παυλών, επιτρέποντας την αντικατάσταση των `__HOST-` cookies:
Τα ευαίσθητα δεδομένα που ενσωματώνονται σε cookies πρέπει πάντα να ελέγχονται προσεκτικά. Τα cookies που κωδικοποιούνται σε Base64 ή παρόμοιες μορφές μπορούν συχνά να αποκωδικοποιηθούν. Αυτή η ευπάθεια επιτρέπει στους επιτιθέμενους να τροποποιήσουν το περιεχόμενο του cookie και να υποδυθούν άλλους χρήστες κωδικοποιώντας τα τροποποιημένα τους δεδομένα πίσω στο cookie.
Αυτή η επίθεση περιλαμβάνει την κλοπή του cookie ενός χρήστη γιανα αποκτήσει μη εξουσιοδοτημένη πρόσβαση στον λογαριασμό του σε μια εφαρμογή. Χρησιμοποιώντας το κλεμμένο cookie, ένας επιτιθέμενος μπορεί να υποδυθεί τον νόμιμο χρήστη.
Σε αυτό το σενάριο, ένας επιτιθέμενος εξαπατά ένα θύμα να χρησιμοποιήσει ένα συγκεκριμένο cookie γιανα συνδεθεί. Αν η εφαρμογή δεν αναθέτει ένα νέο cookie κατά τη σύνδεση, ο επιτιθέμενος, έχοντας το αρχικό cookie, μπορεί να υποδυθεί το θύμα. Αυτή η τεχνική βασίζεται στο να συνδεθεί το θύμα με ένα cookie που παρέχεται από τον επιτιθέμενο.
Εδώ, ο επιτιθέμενος πείθει το θύμα να χρησιμοποιήσει το session cookie του επιτιθέμενου. Το θύμα, πιστεύοντας ότι έχει συνδεθεί στον δικό του λογαριασμό, θα εκτελέσει απροσεξίες στο πλαίσιο του λογαριασμού του επιτιθέμενου.
Τα JSON Web Tokens (JWT) που χρησιμοποιούνται σε cookies μπορεί επίσης να παρουσιάζουν ευπάθειες. Για λεπτομερείς πληροφορίες σχετικά με πιθανές ευπάθειες και πώς να τις εκμεταλλευτείτε, συνιστάται η πρόσβαση στο έγγραφο που συνδέεται με το hacking των JWT.
Αυτή η επίθεση αναγκάζει έναν συνδεδεμένο χρήστη να εκτελέσει μη επιθυμητες ενέργειες σε μια ιστοσελίδα στην οποία είναι επί του παρόντος πιστοποιημένος. Οι επιτιθέμενοι μπορούν να εκμεταλλευτούν cookies που στέλνονται αυτόματα με κάθε αίτηση στην ευάλωτη ιστοσελίδα.
(Ελέγξτε περαιτέρω λεπτομέρειες στην [αρχική έρευνα](https://blog.ankursundara.com/cookie-bugs/)) Οι περιηγητές επιτρέπουν τη δημιουργία cookies χωρίς όνομα, το οποίο μπορεί να επιδειχθεί μέσω JavaScript ως εξής:
Το αποτέλεσμα στην κεφαλίδα cookie που στάλθηκε είναι `a=v1; test value; b=v2;`. Ενδιαφέροντα, αυτό επιτρέπει την παρεμβολή στα cookies εάν ένα cookie με κενό όνομα έχει οριστεί, ενδεχομένως ελέγχοντας άλλα cookies με τον καθορισμό του κενού cookie σε μια συγκεκριμένη τιμή:
Στο Chrome, εάν ένα συντροφικό σημείο Unicode είναι μέρος ενός συνόλου cookie, το `document.cookie` γίνεται δλαλοποιημένο, επιστρέφοντας στη συνέχεια μια κενή συμβολοσειρά:
(Ελέγξτε περισσότερες λεπτομέρειες στην [αρχική έρευνα](https://blog.ankursundara.com/cookie-bugs/)) Πολλοί διακομιστές ιστού, συμπεριλαμβανομένων αυτών από Java (Jetty, TomCat, Undertow) και Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), χειρίζονται εσφαλμένα τις συμβολοσειρές cookie λόγω της ξεπερασμένης υποστήριξης του RFC2965. Διαβάζουν μια τιμή cookie που είναι σε διπλά εισαγωγικά ως μια μοναδική τιμή ακόμα κι αν περιλαμβάνει ερωτηματικά, τα οποία θα έπρεπε να χωρίζουν κανονικά τα ζεύγη κλειδιού-τιμής:
(Ελέγξτε λεπτομέρειες στην [αρχική έρευνα](https://blog.ankursundara.com/cookie-bugs/)) Η εσφαλμένη ανάλυση των cookies από διακομιστές, ειδικά Undertow, Zope, και αυτούς που χρησιμοποιούν τα `http.cookie.SimpleCookie` και `http.cookie.BaseCookie` της Python, δημιουργεί ευκαιρίες για επιθέσεις έγχυσης cookies. Αυτοί οι διακομιστές αποτυγχάνουν να ορθώς περιορίσουν την έναρξη νέων cookies, επιτρέποντας σε επιτιθέμενους να πλαστογραφήσουν cookies:
Αυτή η ευπάθεια είναι ιδιαίτερα επικίνδυνη σε web εφαρμογές που βασίζονται στην προστασία CSRF με βάση τα cookies, καθώς επιτρέπει σε επιτιθέμενους να εισάγουν πλαστογραφημένα cookies CSRF-token, πιθανώς παρακάμπτοντας μέτρα ασφαλείας. Το πρόβλημα επιδεινώνεται από τη χειριστική της Python για διπλότυπα ονόματα cookies, όπου η τελευταία εμφάνιση αντικαθιστά τις προηγούμενες. Επίσης, δημιουργεί ανησυχίες για τα cookies `__Secure-` και `__Host-` σε ανασφαλείς συμφωνίες και θα μπορούσε να οδηγήσει σε παρακάμψεις εξουσιοδότησης όταν τα cookies περνιούνται σε διακομιστές που είναι ευάλωτοι στην πλαστογράφηση.
* Ελέγξτε την επιλογή "**Να με θυμάσαι**" αν υπάρχει γιανα δείτε πώς λειτουργεί. Αν υπάρχει και είναι ευάλωτη, χρησιμοποιήστε πάντα το cookie του **να με θυμάσαι** χωρίς κανένα άλλο cookie.
* Ελέγξτε αν το προηγούμενο cookie λειτουργεί ακόμα αφού αλλάξετε τον κωδικό.
Αν το cookie παραμένει το ίδιο (ή σχεδόν) όταν συνδέεστε, αυτό πιθανότατα σημαίνει ότι το cookie σχετίζεται με κάποιο πεδίο του λογαριασμού σας (πιθανώς το όνομα χρήστη). Τότε μπορείτε:
* Δοκιμάστε να δημιουργήσετε πολλούς **λογαριασμούς** με πολύ **παρόμοια** ονόματα χρηστών και δοκιμάστε να**μαντέψετε** πώς λειτουργεί ο αλγόριθμος.
* Δοκιμάστε να**bruteforce το όνομα χρήστη**. Αν το cookie αποθηκεύει μόνο ως μέθοδος πιστοποίησης για το όνομα χρήστη σας, τότε μπορείτε να δημιουργήσετε ένα λογαριασμό με όνομα χρήστη "**Bmin**" και να**bruteforce** κάθε μοναδικό **bit** του cookie σας επειδή ένα από τα cookies που θα δοκιμάσετε θα είναι αυτό που ανήκει στον "**admin**".
Αν η επίθεση έχει πραγματοποιηθεί με επιτυχία, τότε θα μπορούσατε να δοκιμάσετε να κρυπτογραφήσετε μια συμβολοσειρά της επιλογής σας. Για παράδειγμα, αν θέλατε να**κρυπτογραφήσετε****user=administrator**
Ίσως ένα cookie μπορεί να έχει κάποια τιμή και να υπογράφεται χρησιμοποιώντας CBC. Στη συνέχεια, η ακεραιότητα της τιμής είναι η υπογραφή που δημιουργείται χρησιμοποιώντας CBC με την ίδια τιμή. Καθώς συνιστάται να χρησιμοποιείται ως IV ένα μηδενικό διάνυσμα, αυτός ο τύπος ελέγχου ακεραιότητας θα μπορούσε να είναι ευάλωτος.
3. Ορίστε στο cookie την τιμή **administrator+t'** (**t'** θα είναι μια έγκυρη υπογραφή του **(rator\x00\x00\x00 XOR t) XOR t** = **rator\x00\x00\x00**
Δημιουργήστε 2 χρήστες με σχεδόν τα ίδια δεδομένα (όνομα χρήστη, κωδικό πρόσβασης, email, κλπ.) και προσπαθήστε να ανακαλύψετε κάποιο πρότυπο μέσα στο δεδομένο cookie
Δημιουργήστε ένα χρήστη με το όνομα για παράδειγμα "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" και ελέγξτε αν υπάρχει κάποιο πρότυπο στο cookie (καθώς το ECB κρυπτογραφεί με τον ίδιο κλειδί κάθε block, τα ίδια κρυπτογραφημένα bytes μπορεί να εμφανιστούν αν το όνομα χρήστη είναι κρυπτογραφημένο).
Θα πρέπει να υπάρχει ένα πρότυπο (με το μέγεθος ενός χρησιμοποιούμενου block). Έτσι, γνωρίζοντας πώς κρυπτογραφούνται μια σειρά "a" μπορείτε να δημιουργήσετε ένα όνομα χρήστη: "a"\*(μέγεθος του block)+"admin". Στη συνέχεια, μπορείτε να διαγράψετε το κρυπτογραφημένο πρότυπο ενός block από το cookie. Και θα έχετε το cookie του ονόματος χρήστη "admin".
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
*Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να**κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.