Translated ['src/pentesting-web/hacking-with-cookies/README.md'] to el

This commit is contained in:
Translator 2025-05-18 03:22:04 +00:00
parent f6941c93de
commit 430060e417

View File

@ -16,13 +16,13 @@
### Path ### Path
Ένας συγκεκριμένος διαδρομή URL που πρέπει να είναι παρών στο ζητούμενο URL για να σταλεί η κεφαλίδα `Cookie` υποδεικνύεται από το χαρακτηριστικό `Path`. Αυτό το χαρακτηριστικό θεωρεί τον χαρακτήρα `/` ως διαχωριστικό καταλόγου, επιτρέποντας αντιστοιχίες και σε υποκαταλόγους. Ένας συγκεκριμένος διαδρομή URL που πρέπει να είναι παρούσα στο ζητούμενο URL για να σταλεί η κεφαλίδα `Cookie` υποδεικνύεται από το χαρακτηριστικό `Path`. Αυτό το χαρακτηριστικό θεωρεί τον χαρακτήρα `/` ως διαχωριστικό καταλόγου, επιτρέποντας αντιστοιχίες και σε υποκαταλόγους.
### Ordering Rules ### Ordering Rules
Όταν δύο cookies φέρουν το ίδιο όνομα, το cookie που επιλέγεται για αποστολή βασίζεται σε: Όταν δύο cookies φέρουν το ίδιο όνομα, το cookie που επιλέγεται για αποστολή βασίζεται σε:
- Το cookie που ταιριάζει με τη μεγαλύτερη διαδρομή στο ζητούμενο URL. - Το cookie που ταιριάζει στη μεγαλύτερη διαδρομή στο ζητούμενο URL.
- Το πιο πρόσφατα ρυθμισμένο cookie αν οι διαδρομές είναι ταυτόσημες. - Το πιο πρόσφατα ρυθμισμένο cookie αν οι διαδρομές είναι ταυτόσημες.
### SameSite ### SameSite
@ -47,8 +47,8 @@
Table from [Invicti](https://www.netsparker.com/blog/web-security/same-site-cookie-attribute-prevent-cross-site-request-forgery/) and slightly modified.\ Table from [Invicti](https://www.netsparker.com/blog/web-security/same-site-cookie-attribute-prevent-cross-site-request-forgery/) and slightly modified.\
Ένα cookie με το χαρακτηριστικό _**SameSite**_ θα **μειώσει τις επιθέσεις CSRF** όπου απαιτείται μια συνδεδεμένη συνεδρία. Ένα cookie με το χαρακτηριστικό _**SameSite**_ θα **μειώσει τις επιθέσεις CSRF** όπου απαιτείται μια συνδεδεμένη συνεδρία.
**\*Σημειώστε ότι από το Chrome80 (φλεβ/2019) η προεπιλεγμένη συμπεριφορά ενός cookie χωρίς χαρακτηριστικό 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/)).\ **\*Σημειώστε ότι από το 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 χωρίς πολιτική SameSite** **στο Chrome θα** **θεωρούνται ως None** κατά τη διάρκεια των **πρώτων 2 λεπτών και στη συνέχεια ως Lax για αιτήματα POST διασύνδεσης κορυφαίου επιπέδου.**
## Cookies Flags ## Cookies Flags
@ -62,7 +62,7 @@ Table from [Invicti](https://www.netsparker.com/blog/web-security/same-site-cook
- Αυτό μπορεί να παρακαμφθεί με **TRACE** **HTTP** αιτήματα καθώς η απάντηση από τον διακομιστή (αν αυτή η μέθοδος HTTP είναι διαθέσιμη) θα αντικατοπτρίζει τα cookies που στάλθηκαν. Αυτή η τεχνική ονομάζεται **Cross-Site Tracking**. - Αυτό μπορεί να παρακαμφθεί με **TRACE** **HTTP** αιτήματα καθώς η απάντηση από τον διακομιστή (αν αυτή η μέθοδος HTTP είναι διαθέσιμη) θα αντικατοπτρίζει τα cookies που στάλθηκαν. Αυτή η τεχνική ονομάζεται **Cross-Site Tracking**.
- Αυτή η τεχνική αποφεύγεται από **σύγχρονους περιηγητές με το να μην επιτρέπουν την αποστολή ενός TRACE** αιτήματος από JS. Ωστόσο, έχουν βρεθεί ορισμένες παρακάμψεις σε συγκεκριμένο λογισμικό όπως η αποστολή `\r\nTRACE` αντί για `TRACE` στο IE6.0 SP2. - Αυτή η τεχνική αποφεύγεται από **σύγχρονους περιηγητές με το να μην επιτρέπουν την αποστολή ενός TRACE** αιτήματος από JS. Ωστόσο, έχουν βρεθεί ορισμένες παρακάμψεις σε συγκεκριμένο λογισμικό όπως η αποστολή `\r\nTRACE` αντί για `TRACE` στο IE6.0 SP2.
- Ένας άλλος τρόπος είναι η εκμετάλλευση ευπαθειών μηδενικής ημέρας στους περιηγητές. - Ένας άλλος τρόπος είναι η εκμετάλλευση ευπαθειών μηδενικής ημέρας στους περιηγητές.
- Είναι δυνατόν να **επικαλύψετε τα HttpOnly cookies** εκτελώντας μια επίθεση Cookie Jar overflow: - Είναι δυνατόν να **επικαλύψετε τα HttpOnly cookies** εκτελώντας μια επίθεση υπερχείλισης Cookie Jar:
{{#ref}} {{#ref}}
cookie-jar-overflow.md cookie-jar-overflow.md
@ -72,28 +72,28 @@ cookie-jar-overflow.md
### Secure ### Secure
Η αίτηση θα **στείλει** το cookie σε ένα HTTP αίτημα μόνο εάν η αίτηση μεταδίδεται μέσω ενός ασφαλούς καναλιού (συνήθως **HTTPS**). Η αίτηση θα **στείλει** το cookie μόνο σε μια HTTP αίτηση εάν η αίτηση μεταδίδεται μέσω ενός ασφαλούς καναλιού (συνήθως **HTTPS**).
## Cookies Prefixes ## Cookies Prefixes
Τα cookies που έχουν πρόθεμα `__Secure-` απαιτείται να ρυθμιστούν μαζί με τη σημαία `secure` από σελίδες που είναι ασφαλισμένες μέσω HTTPS. Τα cookies που αρχίζουν με `__Secure-` απαιτείται να ρυθμιστούν μαζί με τη σημαία `secure` από σελίδες που είναι ασφαλείς μέσω HTTPS.
Για τα cookies που έχουν πρόθεμα `__Host-`, πρέπει να πληρούνται αρκετές προϋποθέσεις: Για τα cookies που αρχίζουν με `__Host-`, πρέπει να πληρούνται αρκετές προϋποθέσεις:
- Πρέπει να ρυθμιστούν με τη σημαία `secure`. - Πρέπει να ρυθμιστούν με τη σημαία `secure`.
- Πρέπει να προέρχονται από μια σελίδα ασφαλισμένη μέσω HTTPS. - Πρέπει να προέρχονται από μια σελίδα ασφαλή μέσω HTTPS.
- Απαγορεύεται να καθορίζουν ένα domain, αποτρέποντας τη μετάδοσή τους σε υποτομείς. - Απαγορεύεται να καθορίζουν ένα domain, αποτρέποντας τη μετάδοσή τους σε υποτομείς.
- Η διαδρομή για αυτά τα cookies πρέπει να ρυθμιστεί σε `/`. - Η διαδρομή για αυτά τα cookies πρέπει να ρυθμιστεί σε `/`.
Είναι σημαντικό να σημειωθεί ότι τα cookies που έχουν πρόθεμα `__Host-` δεν επιτρέπεται να αποστέλλονται σε υπερτομείς ή υποτομείς. Αυτός ο περιορισμός βοηθά στην απομόνωση των cookies εφαρμογής. Έτσι, η χρήση του προθέματος `__Host-` για όλα τα cookies εφαρμογής μπορεί να θεωρηθεί καλή πρακτική για την ενίσχυση της ασφάλειας και της απομόνωσης. Είναι σημαντικό να σημειωθεί ότι τα cookies που αρχίζουν με `__Host-` δεν επιτρέπεται να αποστέλλονται σε υπερτομείς ή υποτομείς. Αυτός ο περιορισμός βοηθά στην απομόνωση των cookies εφαρμογής. Έτσι, η χρήση του προθέματος `__Host-` για όλα τα cookies εφαρμογής μπορεί να θεωρηθεί καλή πρακτική για την ενίσχυση της ασφάλειας και της απομόνωσης.
### Overwriting cookies ### Overwriting cookies
Έτσι, μία από τις προστασίες των cookies με πρόθεμα `__Host-` είναι να αποτρέπουν την επικάλυψή τους από υποτομείς. Αποτρέποντας για παράδειγμα [**Cookie Tossing attacks**](cookie-tossing.md). Στην ομιλία [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F_wAzF4a7Xg) ([**paper**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) παρουσιάζεται ότι ήταν δυνατόν να ρυθμιστούν cookies με πρόθεμα \_\_HOST- από υποτομέα, παραπλανώντας τον αναλυτή, για παράδειγμα, προσθέτοντας "=" στην αρχή ή στην αρχή και στο τέλος...: Έτσι, μία από τις προστασίες των cookies που αρχίζουν με `__Host-` είναι να αποτρέπουν την επικάλυψή τους από υποτομείς. Αποτρέποντας για παράδειγμα [**Cookie Tossing attacks**](cookie-tossing.md). Στην ομιλία [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F_wAzF4a7Xg) ([**paper**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) παρουσιάζεται ότι ήταν δυνατό να ρυθμιστούν cookies με πρόθεμα \_\_HOST- από υποτομέα, παραπλανώντας τον αναλυτή, για παράδειγμα, προσθέτοντας "=" στην αρχή ή στην αρχή και στο τέλος...:
<figure><img src="../../images/image (6) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../images/image (6) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ή σε PHP ήταν δυνατόν να προστεθούν **άλλοι χαρακτήρες στην αρχή** του ονόματος cookie που θα **αντικαθίσταντο με χαρακτήρες υπογράμμισης**, επιτρέποντας την επικάλυψη των `__HOST-` cookies: Ή σε PHP ήταν δυνατό να προστεθούν **άλλοι χαρακτήρες στην αρχή** του ονόματος cookie που θα αντικαθίσταντο με χαρακτήρες υπογράμμισης, επιτρέποντας την επικάλυψη των `__HOST-` cookies:
<figure><img src="../../images/image (7) (1) (1) (1) (1).png" alt="" width="373"><figcaption></figcaption></figure> <figure><img src="../../images/image (7) (1) (1) (1) (1).png" alt="" width="373"><figcaption></figcaption></figure>
@ -113,7 +113,7 @@ cookie-jar-overflow.md
Σε αυτό το σενάριο, ένας επιτιθέμενος παραπλανεί ένα θύμα να χρησιμοποιήσει ένα συγκεκριμένο cookie για να συνδεθεί. Αν η εφαρμογή δεν αναθέσει ένα νέο cookie κατά την είσοδο, ο επιτιθέμενος, που κατέχει το αρχικό cookie, μπορεί να προσποιηθεί το θύμα. Αυτή η τεχνική βασίζεται στο να συνδεθεί το θύμα με ένα cookie που παρέχεται από τον επιτιθέμενο. Σε αυτό το σενάριο, ένας επιτιθέμενος παραπλανεί ένα θύμα να χρησιμοποιήσει ένα συγκεκριμένο cookie για να συνδεθεί. Αν η εφαρμογή δεν αναθέσει ένα νέο cookie κατά την είσοδο, ο επιτιθέμενος, που κατέχει το αρχικό cookie, μπορεί να προσποιηθεί το θύμα. Αυτή η τεχνική βασίζεται στο να συνδεθεί το θύμα με ένα cookie που παρέχεται από τον επιτιθέμενο.
Αν βρείτε ένα **XSS σε έναν υποτομέα** ή ελέγχετε έναν υποτομέα, διαβάστε: Αν βρείτε ένα **XSS σε υποτομέα** ή ελέγχετε έναν υποτομέα, διαβάστε:
{{#ref}} {{#ref}}
cookie-tossing.md cookie-tossing.md
@ -123,7 +123,7 @@ cookie-tossing.md
Εδώ, ο επιτιθέμενος πείθει το θύμα να χρησιμοποιήσει το cookie συνεδρίας του επιτιθέμενου. Το θύμα, πιστεύοντας ότι είναι συνδεδεμένο στον δικό του λογαριασμό, θα εκτελέσει ακούσια ενέργειες στο πλαίσιο του λογαριασμού του επιτιθέμενου. Εδώ, ο επιτιθέμενος πείθει το θύμα να χρησιμοποιήσει το cookie συνεδρίας του επιτιθέμενου. Το θύμα, πιστεύοντας ότι είναι συνδεδεμένο στον δικό του λογαριασμό, θα εκτελέσει ακούσια ενέργειες στο πλαίσιο του λογαριασμού του επιτιθέμενου.
Αν βρείτε ένα **XSS σε έναν υποτομέα** ή ελέγχετε έναν υποτομέα, διαβάστε: Αν βρείτε ένα **XSS σε υποτομέα** ή ελέγχετε έναν υποτομέα, διαβάστε:
{{#ref}} {{#ref}}
cookie-tossing.md cookie-tossing.md
@ -137,7 +137,7 @@ cookie-tossing.md
### Cross-Site Request Forgery (CSRF) ### Cross-Site Request Forgery (CSRF)
Αυτή η επίθεση αναγκάζει έναν συνδεδεμένο χρήστη να εκτελέσει ανεπιθύμητες ενέργειες σε μια διαδικτυακή εφαρμογή στην οποία είναι αυτή τη στιγμή αυθεντικοποιημένος. Οι επιτιθέμενοι μπορούν να εκμεταλλευτούν τα cookies που αποστέλλονται αυτόματα με κάθε αίτημα προς τον ευάλωτο ιστότοπο. Αυτή η επίθεση αναγκάζει έναν συνδεδεμένο χρήστη να εκτελέσει ανεπιθύμητες ενέργειες σε μια διαδικτυακή εφαρμογή στην οποία είναι αυτή τη στιγμή αυθεντικοποιημένος. Οι επιτιθέμενοι μπορούν να εκμεταλλευτούν τα cookies που αποστέλλονται αυτόματα με κάθε αίτημα στον ευάλωτο ιστότοπο.
### Empty Cookies ### Empty Cookies
@ -167,11 +167,11 @@ document.cookie = "\ud800=meep"
#### Cookie Smuggling λόγω προβλημάτων ανάλυσης #### Cookie Smuggling λόγω προβλημάτων ανάλυσης
(Δείτε περισσότερες λεπτομέρειες στην [πρωτότυπη έρευνα](https://blog.ankursundara.com/cookie-bugs/)) Πολλοί web servers, συμπεριλαμβανομένων αυτών από Java (Jetty, TomCat, Undertow) και Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), χειρίζονται λανθασμένα τις συμβολοσειρές cookie λόγω παρωχημένης υποστήριξης RFC2965. Διαβάζουν μια διπλά εισαγωγική τιμή cookie ως μία μόνο τιμή, ακόμη και αν περιλαμβάνει ερωτηματικά, τα οποία κανονικά θα έπρεπε να διαχωρίζουν τα ζεύγη κλειδιού-τιμής: (Δείτε περισσότερες λεπτομέρειες στην [πρωτότυπη έρευνα](https://blog.ankursundara.com/cookie-bugs/)) Πολλοί διακομιστές ιστού, συμπεριλαμβανομένων αυτών από Java (Jetty, TomCat, Undertow) και Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), χειρίζονται λανθασμένα τις συμβολοσειρές cookie λόγω παρωχημένης υποστήριξης RFC2965. Διαβάζουν μια τιμή cookie με διπλά εισαγωγικά ως μία μόνο τιμή, ακόμη και αν περιλαμβάνει ερωτηματικά, τα οποία κανονικά θα έπρεπε να διαχωρίζουν τα ζεύγη κλειδιού-τιμής:
``` ```
RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end"; RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
``` ```
#### Ευπάθειες Εισαγωγής Cookies #### Ευπάθειες Εισαγωγής Cookie
(Δείτε περισσότερες λεπτομέρειες στην [πρωτότυπη έρευνα](https://blog.ankursundara.com/cookie-bugs/)) Η λανθασμένη ανάλυση των cookies από τους διακομιστές, ιδίως τους Undertow, Zope και αυτούς που χρησιμοποιούν το `http.cookie.SimpleCookie` και `http.cookie.BaseCookie` της Python, δημιουργεί ευκαιρίες για επιθέσεις εισαγωγής cookies. Αυτοί οι διακομιστές αποτυγχάνουν να καθορίσουν σωστά την αρχή νέων cookies, επιτρέποντας στους επιτιθέμενους να παραποιήσουν cookies: (Δείτε περισσότερες λεπτομέρειες στην [πρωτότυπη έρευνα](https://blog.ankursundara.com/cookie-bugs/)) Η λανθασμένη ανάλυση των cookies από τους διακομιστές, ιδίως τους Undertow, Zope και αυτούς που χρησιμοποιούν το `http.cookie.SimpleCookie` και `http.cookie.BaseCookie` της Python, δημιουργεί ευκαιρίες για επιθέσεις εισαγωγής cookies. Αυτοί οι διακομιστές αποτυγχάνουν να καθορίσουν σωστά την αρχή νέων cookies, επιτρέποντας στους επιτιθέμενους να παραποιήσουν cookies:
@ -179,7 +179,7 @@ RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
- Ο Zope αναζητά μια κόμμα για να αρχίσει την ανάλυση του επόμενου cookie. - Ο Zope αναζητά μια κόμμα για να αρχίσει την ανάλυση του επόμενου cookie.
- Οι κλάσεις cookie της Python αρχίζουν την ανάλυση σε έναν χαρακτήρα κενό. - Οι κλάσεις cookie της Python αρχίζουν την ανάλυση σε έναν χαρακτήρα κενό.
Αυτή η ευπάθεια είναι ιδιαίτερα επικίνδυνη σε διαδικτυακές εφαρμογές που βασίζονται στην προστασία CSRF μέσω cookies, καθώς επιτρέπει στους επιτιθέμενους να εισάγουν παραποιημένα cookies CSRF-token, ενδεχομένως παρακάμπτοντας τα μέτρα ασφαλείας. Το πρόβλημα επιδεινώνεται από την επεξεργασία των διπλών ονομάτων cookies από την Python, όπου η τελευταία εμφάνιση υπερκαλύπτει τις προηγούμενες. Επίσης, εγείρει ανησυχίες για τα cookies `__Secure-` και `__Host-` σε ανασφαλείς περιβάλλοντες και θα μπορούσε να οδηγήσει σε παρακάμψεις εξουσιοδότησης όταν τα cookies μεταφέρονται σε διακομιστές backend που είναι ευάλωτοι σε παραποίηση. Αυτή η ευπάθεια είναι ιδιαίτερα επικίνδυνη σε διαδικτυακές εφαρμογές που βασίζονται στην προστασία CSRF μέσω cookies, καθώς επιτρέπει στους επιτιθέμενους να εισάγουν παραποιημένα cookies CSRF-token, ενδεχομένως παρακάμπτοντας τα μέτρα ασφαλείας. Το πρόβλημα επιδεινώνεται από την επεξεργασία των διπλών ονομάτων cookie από την Python, όπου η τελευταία εμφάνιση υπερκαλύπτει τις προηγούμενες. Επίσης, εγείρει ανησυχίες για τα cookies `__Secure-` και `__Host-` σε ανασφαλείς συνθήκες και θα μπορούσε να οδηγήσει σε παρακάμψεις εξουσιοδότησης όταν τα cookies μεταφέρονται σε διακομιστές backend που είναι ευάλωτοι σε παραποίηση.
### Cookies $version ### Cookies $version
@ -189,15 +189,15 @@ RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
#### Επίθεση Sandwich Cookie #### Επίθεση Sandwich Cookie
Σύμφωνα με [**αυτή την ανάρτηση**](https://portswigger.net/research/stealing-httponly-cookies-with-the-cookie-sandwich-technique), είναι δυνατό να χρησιμοποιηθεί η τεχνική sandwich cookie για να κλέψει HttpOnly cookies. Αυτές είναι οι απαιτήσεις και τα βήματα: Σύμφωνα με [**αυτή την ανάρτηση**](https://portswigger.net/research/stealing-httponly-cookies-with-the-cookie-sandwich-technique), είναι δυνατό να χρησιμοποιηθεί η τεχνική sandwich cookie για να κλέψετε HttpOnly cookies. Αυτές είναι οι απαιτήσεις και τα βήματα:
- Βρείτε ένα μέρος όπου ένα φαινομενικά άχρηστο **cookie ανακλάται στην απόκριση** - Βρείτε ένα μέρος όπου ένα φαινομενικά άχρηστο **cookie ανακλάται στην απόκριση**
- **Δημιουργήστε ένα cookie που ονομάζεται `$Version`** με τιμή `1` (μπορείτε να το κάνετε αυτό σε μια επίθεση XSS από JS) με μια πιο συγκεκριμένη διαδρομή ώστε να πάρει την αρχική θέση (ορισμένα πλαίσια όπως η Python δεν χρειάζονται αυτό το βήμα) - **Δημιουργήστε ένα cookie που ονομάζεται `$Version`** με τιμή `1` (μπορείτε να το κάνετε αυτό σε μια επίθεση XSS από JS) με μια πιο συγκεκριμένη διαδρομή ώστε να πάρει την αρχική θέση (ορισμένα πλαίσια όπως η Python δεν χρειάζονται αυτό το βήμα)
- **Δημιουργήστε το cookie που ανακλάται** με μια τιμή που αφήνει **ανοιχτές διπλές εισαγωγές** και με μια συγκεκριμένη διαδρομή ώστε να τοποθετηθεί στη βάση δεδομένων cookies μετά το προηγούμενο (`$Version`) - **Δημιουργήστε το cookie που ανακλάται** με μια τιμή που αφήνει **ανοιχτές διπλές εισαγωγές** και με μια συγκεκριμένη διαδρομή ώστε να τοποθετηθεί στη βάση δεδομένων cookies μετά το προηγούμενο (`$Version`)
- Στη συνέχεια, το νόμιμο cookie θα πάει επόμενο στη σειρά - Στη συνέχεια, το νόμιμο cookie θα έρθει επόμενο στη σειρά
- **Δημιουργήστε ένα ψεύτικο cookie που κλείνει τις διπλές εισαγωγές** μέσα στην τιμή του - **Δημιουργήστε ένα ψεύτικο cookie που κλείνει τις διπλές εισαγωγές** μέσα στην τιμή του
Με αυτόν τον τρόπο, το cookie του θύματος παγιδεύεται μέσα στο νέο cookie έκδοση 1 και θα ανακλάται όποτε ανακλάται. Με αυτόν τον τρόπο, το cookie του θύματος παγιδεύεται μέσα στην νέα έκδοση cookie 1 και θα ανακλάται όποτε ανακλάται.
```javascript ```javascript
document.cookie = `$Version=1;`; document.cookie = `$Version=1;`;
document.cookie = `param1="start`; document.cookie = `param1="start`;
@ -212,18 +212,18 @@ document.cookie = `param2=end";`;
#### Bypassing value analysis with quoted-string encoding #### Bypassing value analysis with quoted-string encoding
Αυτή η ανάλυση υποδεικνύει την αποσυμπίεση των εκφρασμένων τιμών μέσα στα cookies, έτσι ώστε το "\a" να γίνεται "a". Αυτό μπορεί να είναι χρήσιμο για την παράκαμψη των WAFS όπως: Αυτή η ανάλυση υποδεικνύει την αποσυμπίεση των τιμών που έχουν διαφύγει μέσα στα cookies, έτσι ώστε το "\a" να γίνεται "a". Αυτό μπορεί να είναι χρήσιμο για την παράκαμψη των WAFS όπως:
- `eval('test') => forbidden` - `eval('test') => forbidden`
- `"\e\v\a\l\(\'\t\e\s\t\'\)" => allowed` - `"\e\v\a\l\(\'\t\e\s\t\'\)" => allowed`
#### Bypassing cookie-name blocklists #### Bypassing cookie-name blocklists
Στο RFC2109 αναφέρεται ότι μια **κόμμα μπορεί να χρησιμοποιηθεί ως διαχωριστικό μεταξύ των τιμών των cookies**. Επίσης, είναι δυνατή η προσθήκη **κενών και ταμπών πριν και μετά το ίσον**. Επομένως, ένα cookie όπως `$Version=1; foo=bar, abc = qux` δεν παράγει το cookie `"foo":"bar, admin = qux"` αλλά τα cookies `foo":"bar"` και `"admin":"qux"`. Παρατηρήστε πώς παράγονται 2 cookies και πώς το admin έχει αφαιρεθεί το κενό πριν και μετά το ίσον. Στο RFC2109 αναφέρεται ότι μια **κόμμα μπορεί να χρησιμοποιηθεί ως διαχωριστικό μεταξύ των τιμών των cookies**. Επίσης, είναι δυνατό να προστεθούν **κενά και ταμπς πριν και μετά το ίσον**. Επομένως, ένα cookie όπως `$Version=1; foo=bar, abc = qux` δεν παράγει το cookie `"foo":"bar, admin = qux"` αλλά τα cookies `foo":"bar"` και `"admin":"qux"`. Παρατηρήστε πώς παράγονται 2 cookies και πώς το admin έχει αφαιρεθεί το κενό πριν και μετά το ίσον.
#### Bypassing value analysis with cookie splitting #### Bypassing value analysis with cookie splitting
Τέλος, διάφορες πίσω πόρτες θα συνδυάζουν σε μια συμβολοσειρά διαφορετικά cookies που περνούν σε διαφορετικούς επικεφαλίδες cookie όπως σε: Τέλος, διάφορες πίσω πόρτες θα συνδυάζουν σε μια συμβολοσειρά διαφορετικά cookies που έχουν περάσει σε διαφορετικούς κεφαλίδες cookie όπως σε:
``` ```
GET / HTTP/1.1 GET / HTTP/1.1
Host: example.com Host: example.com
@ -247,13 +247,13 @@ Resulting cookie: name=eval('test//, comment') => allowed
- Ελέγξτε αν το cookie έχει οποιαδήποτε πληροφορία μέσα του και προσπαθήστε να το τροποποιήσετε. - Ελέγξτε αν το cookie έχει οποιαδήποτε πληροφορία μέσα του και προσπαθήστε να το τροποποιήσετε.
- Προσπαθήστε να δημιουργήσετε αρκετούς λογαριασμούς με σχεδόν το ίδιο όνομα χρήστη και ελέγξτε αν μπορείτε να δείτε ομοιότητες. - Προσπαθήστε να δημιουργήσετε αρκετούς λογαριασμούς με σχεδόν το ίδιο όνομα χρήστη και ελέγξτε αν μπορείτε να δείτε ομοιότητες.
- Ελέγξτε την επιλογή "**remember me**" αν υπάρχει για να δείτε πώς λειτουργεί. Αν υπάρχει και μπορεί να είναι ευάλωτη, χρησιμοποιήστε πάντα το cookie του **remember me** χωρίς κανένα άλλο cookie. - Ελέγξτε την επιλογή "**remember me**" αν υπάρχει για να δείτε πώς λειτουργεί. Αν υπάρχει και μπορεί να είναι ευάλωτη, χρησιμοποιήστε πάντα το cookie του **remember me** χωρίς κανένα άλλο cookie.
- Ελέγξτε αν το προηγούμενο cookie λειτουργεί ακόμα και μετά την αλλαγή του κωδικού. - Ελέγξτε αν το προηγούμενο cookie λειτουργεί ακόμα και μετά την αλλαγή του κωδικού πρόσβασης.
#### **Προχωρημένες επιθέσεις σε cookies** #### **Προχωρημένες επιθέσεις σε cookies**
Αν το cookie παραμένει το ίδιο (ή σχεδόν) όταν συνδέεστε, αυτό πιθανώς σημαίνει ότι το cookie σχετίζεται με κάποιο πεδίο του λογαριασμού σας (πιθανώς το όνομα χρήστη). Τότε μπορείτε να: Αν το cookie παραμένει το ίδιο (ή σχεδόν) όταν συνδέεστε, αυτό πιθανώς σημαίνει ότι το cookie σχετίζεται με κάποιο πεδίο του λογαριασμού σας (πιθανώς το όνομα χρήστη). Τότε μπορείτε:
- Προσπαθήσετε να δημιουργήσετε πολλούς **λογαριασμούς** με ονόματα χρήστη πολύ **παρόμοια** και να προσπαθήσετε να **μαντέψετε** πώς λειτουργεί ο αλγόριθμος. - Προσπαθήστε να δημιουργήσετε πολλούς **λογαριασμούς** με ονόματα χρήστη πολύ **παρόμοια** και προσπαθήστε να **μαντέψετε** πώς λειτουργεί ο αλγόριθμος.
- Προσπαθήστε να **bruteforce το όνομα χρήστη**. Αν το cookie αποθηκεύεται μόνο ως μέθοδος αυθεντικοποίησης για το όνομα χρήστη σας, τότε μπορείτε να δημιουργήσετε έναν λογαριασμό με το όνομα χρήστη "**Bmin**" και να **bruteforce** κάθε **bit** του cookie σας γιατί ένα από τα cookies που θα δοκιμάσετε θα είναι αυτό που ανήκει στον "**admin**". - Προσπαθήστε να **bruteforce το όνομα χρήστη**. Αν το cookie αποθηκεύεται μόνο ως μέθοδος αυθεντικοποίησης για το όνομα χρήστη σας, τότε μπορείτε να δημιουργήσετε έναν λογαριασμό με το όνομα χρήστη "**Bmin**" και να **bruteforce** κάθε **bit** του cookie σας γιατί ένα από τα cookies που θα δοκιμάσετε θα είναι αυτό που ανήκει στον "**admin**".
- Προσπαθήστε **Padding** **Oracle** (μπορείτε να αποκρυπτογραφήσετε το περιεχόμενο του cookie). Χρησιμοποιήστε **padbuster**. - Προσπαθήστε **Padding** **Oracle** (μπορείτε να αποκρυπτογραφήσετε το περιεχόμενο του cookie). Χρησιμοποιήστε **padbuster**.
@ -267,11 +267,11 @@ padbuster http://web.com/index.php u7bvLewln6PJPSAbMb5pFfnCHSEd6olf 8 -cookies a
padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6
7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2 7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2
``` ```
Το Padbuster θα κάνει αρκετές προσπάθειες και θα σας ρωτήσει ποια είναι η συνθήκη σφάλματος (αυτή που δεν είναι έγκυρη). Padbuster θα κάνει αρκετές προσπάθειες και θα σας ρωτήσει ποια είναι η συνθήκη σφάλματος (αυτή που δεν είναι έγκυρη).
Στη συνέχεια, θα ξεκινήσει την αποκρυπτογράφηση του cookie (μπορεί να διαρκέσει αρκετά λεπτά). Στη συνέχεια, θα αρχίσει να αποκρυπτογραφεί το cookie (μπορεί να διαρκέσει αρκετά λεπτά).
Εάν η επίθεση έχει εκτελεστεί επιτυχώς, τότε μπορείτε να προσπαθήσετε να κρυπτογραφήσετε μια συμβολοσειρά της επιλογής σας. Για παράδειγμα, αν θέλετε να **encrypt** **user=administrator** Εάν η επίθεση έχει εκτελεστεί με επιτυχία, τότε μπορείτε να προσπαθήσετε να κρυπτογραφήσετε μια συμβολοσειρά της επιλογής σας. Για παράδειγμα, αν θέλετε να **encrypt** **user=administrator**
``` ```
padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator
``` ```
@ -294,7 +294,7 @@ padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lB
**Πώς να ανιχνεύσετε και να επιτεθείτε:** **Πώς να ανιχνεύσετε και να επιτεθείτε:**
Δημιουργήστε 2 χρήστες με σχεδόν τα ίδια δεδομένα (όνομα χρήστη, κωδικό, email, κ.λπ.) και προσπαθήστε να ανακαλύψετε κάποιο μοτίβο μέσα στο δεδομένο cookie. Δημιουργήστε 2 χρήστες με σχεδόν τα ίδια δεδομένα (όνομα χρήστη, κωδικό πρόσβασης, email, κ.λπ.) και προσπαθήστε να ανακαλύψετε κάποιο μοτίβο μέσα στο δεδομένο cookie.
Δημιουργήστε έναν χρήστη που ονομάζεται για παράδειγμα "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" και ελέγξτε αν υπάρχει κάποιο μοτίβο στο cookie (καθώς το ECB κρυπτογραφεί με το ίδιο κλειδί κάθε μπλοκ, τα ίδια κρυπτογραφημένα bytes θα μπορούσαν να εμφανιστούν αν το όνομα χρήστη είναι κρυπτογραφημένο). Δημιουργήστε έναν χρήστη που ονομάζεται για παράδειγμα "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" και ελέγξτε αν υπάρχει κάποιο μοτίβο στο cookie (καθώς το ECB κρυπτογραφεί με το ίδιο κλειδί κάθε μπλοκ, τα ίδια κρυπτογραφημένα bytes θα μπορούσαν να εμφανιστούν αν το όνομα χρήστη είναι κρυπτογραφημένο).