Translated ['src/pentesting-web/domain-subdomain-takeover.md', 'src/pent

This commit is contained in:
Translator 2025-02-04 18:58:10 +00:00
parent f275c92f8e
commit 59ca3815fc
2 changed files with 70 additions and 28 deletions

View File

@ -39,7 +39,7 @@
## Exploiting a subdomain takeover
Η υποδοχή subdomain είναι ουσιαστικά DNS spoofing για ένα συγκεκριμένο domain σε όλο το διαδίκτυο, επιτρέποντας στους επιτιθέμενους να ορίσουν A records για ένα domain, οδηγώντας τους περιηγητές να εμφανίζουν περιεχόμενο από τον διακομιστή του επιτιθέμενου. Αυτή η **διαφάνεια** στους περιηγητές καθιστά τα domains επιρρεπή σε phishing. Οι επιτιθέμενοι μπορεί να χρησιμοποιήσουν [_typosquatting_](https://en.wikipedia.org/wiki/Typosquatting) ή [_Doppelganger domains_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger) για αυτό το σκοπό. Ιδιαίτερα ευάλωτα είναι τα domains όπου η διεύθυνση URL σε ένα phishing email φαίνεται νόμιμη, παραπλανώντας τους χρήστες και αποφεύγοντας τα φίλτρα spam λόγω της εγγενής εμπιστοσύνης του domain.
Η υποδοχή subdomain είναι ουσιαστικά DNS spoofing για ένα συγκεκριμένο domain σε όλο το διαδίκτυο, επιτρέποντας στους επιτιθέμενους να ορίσουν A records για ένα domain, οδηγώντας τους περιηγητές να εμφανίζουν περιεχόμενο από τον διακομιστή του επιτιθέμενου. Αυτή η **διαφάνεια** στους περιηγητές καθιστά τα domains επιρρεπή σε phishing. Οι επιτιθέμενοι μπορεί να χρησιμοποιήσουν [_typosquatting_](https://en.wikipedia.org/wiki/Typosquatting) ή [_Doppelganger domains_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger) για αυτό το σκοπό. Ιδιαίτερα ευάλωτα είναι τα domains όπου το URL σε ένα phishing email φαίνεται νόμιμο, εξαπατώντας τους χρήστες και αποφεύγοντας τα φίλτρα spam λόγω της εγγενής εμπιστοσύνης του domain.
Ελέγξτε αυτή την [ανάρτηση για περισσότερες λεπτομέρειες](https://0xpatrik.com/subdomain-takeover/)
@ -51,13 +51,29 @@
Η διαφάνεια του περιηγητή επεκτείνεται επίσης στην ασφάλεια των cookies, που διέπεται από πολιτικές όπως η [Same-origin policy](https://en.wikipedia.org/wiki/Same-origin_policy). Τα cookies, που χρησιμοποιούνται συχνά για τη διαχείριση συνεδριών και την αποθήκευση tokens σύνδεσης, μπορούν να εκμεταλλευτούν μέσω υποδοχής subdomain. Οι επιτιθέμενοι μπορούν να **συγκεντρώσουν session cookies** απλά κατευθύνοντας τους χρήστες σε ένα υποκατεστημένο subdomain, θέτοντας σε κίνδυνο τα δεδομένα και την ιδιωτικότητα των χρηστών.
### CORS Bypass
Είναι πιθανό ότι κάθε subdomain επιτρέπεται να έχει πρόσβαση σε CORS πόρους από το κύριο domain ή άλλα subdomains. Αυτό θα μπορούσε να εκμεταλλευτεί από έναν επιτιθέμενο για να **πρόσβαση σε ευαίσθητες πληροφορίες** εκμεταλλευόμενος CORS αιτήματα.
### CSRF - Same-Site Cookies bypass
Είναι πιθανό ότι το subdomain επιτρέπεται να στέλνει cookies στο domain ή άλλα subdomains που εμποδίζονται από το `Same-Site` χαρακτηριστικό των cookies. Ωστόσο, σημειώστε ότι οι anti-CSRF tokens θα αποτρέψουν αυτή την επίθεση αν έχουν υλοποιηθεί σωστά.
### OAuth tokens redirect
Είναι πιθανό ότι το υποκατεστημένο subdomain επιτρέπεται να χρησιμοποιηθεί στο `redirect_uri` URL μιας ροής OAuth. Αυτό θα μπορούσε να εκμεταλλευτεί από έναν επιτιθέμενο για να **κλέψει το OAuth token**.
### CSP Bypass
Είναι πιθανό ότι το υποκατεστημένο subdomain (ή κάθε subdomain) επιτρέπεται να χρησιμοποιηθεί για παράδειγμα το `script-src` του CSP. Αυτό θα μπορούσε να εκμεταλλευτεί από έναν επιτιθέμενο για να **εισάγει κακόβουλα scripts** και να εκμεταλλευτεί πιθανές ευπάθειες XSS.
### **Emails and Subdomain Takeover**
Μια άλλη πτυχή της υποδοχής subdomain περιλαμβάνει τις υπηρεσίες email. Οι επιτιθέμενοι μπορούν να χειριστούν **MX records** για να λαμβάνουν ή να στέλνουν emails από ένα νόμιμο subdomain, ενισχύοντας την αποτελεσματικότητα των επιθέσεων phishing.
Ένας άλλος τομέας της υποδοχής subdomain περιλαμβάνει τις υπηρεσίες email. Οι επιτιθέμενοι μπορούν να χειριστούν **MX records** για να λαμβάνουν ή να στέλνουν email από ένα νόμιμο subdomain, ενισχύοντας την αποτελεσματικότητα των επιθέσεων phishing.
### **Higher Order Risks**
Περαιτέρω κίνδυνοι περιλαμβάνουν την **υποδοχή NS record**. Αν ένας επιτιθέμενος αποκτήσει έλεγχο σε ένα NS record ενός domain, μπορεί δυνητικά να κατευθύνει ένα μέρος της κίνησης σε έναν διακομιστή υπό τον έλεγχό του. Αυτός ο κίνδυνος ενισχύεται αν ο επιτιθέμενος ορίσει έναν υψηλό **TTL (Time to Live)** για τα DNS records, παρατείνοντας τη διάρκεια της επίθεσης.
Περαιτέρω κίνδυνοι περιλαμβάνουν **NS record takeover**. Αν ένας επιτιθέμενος αποκτήσει έλεγχο σε ένα NS record ενός domain, μπορεί δυνητικά να κατευθύνει ένα μέρος της κίνησης σε έναν διακομιστή υπό τον έλεγχό του. Αυτός ο κίνδυνος ενισχύεται αν ο επιτιθέμενος ορίσει έναν υψηλό **TTL (Time to Live)** για τα DNS records, παρατείνοντας τη διάρκεια της επίθεσης.
### CNAME Record Vulnerability
@ -71,11 +87,12 @@
2. **Κατοχύρωση του ονόματος domain** - Καταχώρηση του πόρου με τον αντίστοιχο πάροχο cloud ή επαναγορά ενός ληγμένου domain.
3. **Τακτική παρακολούθηση για ευπάθειες** - Εργαλεία όπως το [aquatone](https://github.com/michenriksen/aquatone) μπορούν να βοηθήσουν στην αναγνώριση ευάλωτων domains. Οι οργανισμοί θα πρέπει επίσης να αναθεωρήσουν τις διαδικασίες διαχείρισης υποδομών τους, διασφαλίζοντας ότι η δημιουργία DNS records είναι το τελευταίο βήμα στη δημιουργία πόρων και το πρώτο βήμα στην καταστροφή πόρων.
Για τους παρόχους cloud, η επαλήθευση της ιδιοκτησίας του domain είναι κρίσιμη για την αποφυγή υποδοχής subdomain. Ορισμένοι, όπως [GitLab](https://about.gitlab.com/2018/02/05/gitlab-pages-custom-domain-validation/), έχουν αναγνωρίσει αυτό το ζήτημα και έχουν εφαρμόσει μηχανισμούς επαλήθευσης domain.
Για τους παρόχους cloud, η επαλήθευση της ιδιοκτησίας του domain είναι κρίσιμη για την αποτροπή υποδοχής subdomain. Ορισμένοι, όπως το [GitLab](https://about.gitlab.com/2018/02/05/gitlab-pages-custom-domain-validation/), έχουν αναγνωρίσει αυτό το ζήτημα και έχουν εφαρμόσει μηχανισμούς επαλήθευσης domain.
## References
- [https://0xpatrik.com/subdomain-takeover/](https://0xpatrik.com/subdomain-takeover/)
- [https://www.stratussecurity.com/post/subdomain-takeover-guide](https://www.stratussecurity.com/post/subdomain-takeover-guide)
- [https://www.hackerone.com/blog/guide-subdomain-takeovers-20](https://www.hackerone.com/blog/guide-subdomain-takeovers-20)
{{#include ../banners/hacktricks-training.md}}

View File

@ -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.\
Ένα 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/)).\
Σημειώστε ότι προσωρινά, μετά την εφαρμογή αυτής της αλλαγής, τα **cookies χωρίς πολιτική SameSite** **στο Chrome θα** **θεωρούνται ως None** κατά τη διάρκεια των **πρώτων 2 λεπτών και στη συνέχεια ως Lax για αιτήματα POST διασύνδεσης κορυφαίου επιπέδου.**
**\*Σημειώστε ότι από το 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/)).\
Σημειώστε ότι προσωρινά, μετά την εφαρμογή αυτής της αλλαγής, τα **cookies χωρίς πολιτική SameSite** **στο Chrome θα θεωρούνται** **ως None** κατά τη διάρκεια των **πρώτων 2 λεπτών και στη συνέχεια ως Lax για αιτήματα POST διασύνδεσης κορυφής.**
## Cookies Flags
@ -76,24 +76,24 @@ cookie-jar-overflow.md
## Cookies Prefixes
Τα cookies που προεξάγονται με `__Secure-` απαιτείται να ρυθμιστούν παράλληλα με τη σημαία `secure` από σελίδες που είναι ασφαλισμένες με HTTPS.
Τα cookies που προγραμματίζονται με `__Secure-` απαιτείται να ρυθμιστούν παράλληλα με τη σημαία `secure` από σελίδες που είναι ασφαλισμένες με HTTPS.
Για τα cookies που προεξάγονται με `__Host-`, πρέπει να πληρούνται αρκετές προϋποθέσεις:
Για τα cookies που προγραμματίζονται με `__Host-`, πρέπει να πληρούνται αρκετές προϋποθέσεις:
- Πρέπει να ρυθμιστούν με τη σημαία `secure`.
- Πρέπει να προέρχονται από μια σελίδα ασφαλισμένη με HTTPS.
- Απαγορεύεται να καθορίζουν ένα domain, αποτρέποντας τη μετάδοσή τους σε υποτομείς.
- Η διαδρομή για αυτά τα cookies πρέπει να είναι ρυθμισμένη σε `/`.
- Η διαδρομή για αυτά τα cookies πρέπει να ρυθμιστεί σε `/`.
Είναι σημαντικό να σημειωθεί ότι τα cookies που προεξάγονται με `__Host-` δεν επιτρέπεται να αποστέλλονται σε υπερτομείς ή υποτομείς. Αυτή η περιοριστική ρύθμιση βοηθά στην απομόνωση των cookies εφαρμογής. Έτσι, η χρήση του προθέματος `__Host-` για όλα τα cookies εφαρμογής μπορεί να θεωρηθεί καλή πρακτική για την ενίσχυση της ασφάλειας και της απομόνωσης.
Είναι σημαντικό να σημειωθεί ότι τα cookies που προγραμματίζονται με `__Host-` δεν επιτρέπεται να αποστέλλονται σε υπερτομείς ή υποτομείς. Αυτός ο περιορισμός βοηθά στην απομόνωση των cookies εφαρμογής. Έτσι, η χρήση του προθέματος `__Host-` για όλα τα 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>
Ή σε PHP ήταν δυνατόν να προστεθούν **άλλοι χαρακτήρες στην αρχή** του ονόματος του cookie που θα αντικαθίσταντο με χαρακτήρες υπογράμμισης, επιτρέποντας την επικάλυψη των cookies `__HOST-`:
Ή σε PHP ήταν δυνατόν να προστεθούν **άλλοι χαρακτήρες στην αρχή** του ονόματος cookie που θα **αντικαθίσταντο με χαρακτήρες υπογράμμισης**, επιτρέποντας την επικάλυψη των cookies `__HOST-`:
<figure><img src="../../images/image (7) (1) (1) (1) (1).png" alt="" width="373"><figcaption></figcaption></figure>
@ -107,7 +107,7 @@ cookie-jar-overflow.md
### Session Hijacking
Αυτή η επίθεση περιλαμβάνει την κλοπή ενός cookie χρήστη για να αποκτήσει μη εξουσιοδοτημένη πρόσβαση στον λογαριασμό τους σε μια εφαρμογή. Χρησιμοποιώντας το κλεμμένο cookie, ένας επιτιθέμενος μπορεί να προσποιηθεί τον νόμιμο χρήστη.
Αυτή η επίθεση περιλαμβάνει την κλοπή ενός cookie χρήστη για να αποκτήσει μη εξουσιοδοτημένη πρόσβαση στον λογαριασμό τους μέσα σε μια εφαρμογή. Χρησιμοποιώντας το κλεμμένο cookie, ένας επιτιθέμενος μπορεί να προσποιηθεί τον νόμιμο χρήστη.
### Session Fixation
@ -147,7 +147,7 @@ document.cookie = "a=v1"
document.cookie = "=test value;" // Setting an empty named cookie
document.cookie = "b=v2"
```
Το αποτέλεσμα στην αποστολή του cookie header είναι `a=v1; test value; b=v2;`. Ενδιαφέρον είναι ότι αυτό επιτρέπει τη χειραγώγηση των cookies αν έχει οριστεί ένα cookie με κενό όνομα, ελέγχοντας δυνητικά άλλα cookies ορίζοντας το κενό cookie σε μια συγκεκριμένη τιμή:
Το αποτέλεσμα στην κεφαλίδα cookie που στάλθηκε είναι `a=v1; test value; b=v2;`. Ενδιαφέρον είναι ότι αυτό επιτρέπει τη χειραγώγηση των cookies αν έχει οριστεί ένα cookie με κενό όνομα, ελέγχοντας δυνητικά άλλα cookies ορίζοντας το κενό cookie σε μια συγκεκριμένη τιμή:
```js
function setCookie(name, value) {
document.cookie = `${name}=${value}`
@ -155,11 +155,11 @@ document.cookie = `${name}=${value}`
setCookie("", "a=b") // Setting the empty cookie modifies another cookie's value
```
Αυτό οδηγεί στο να στέλνει ο περιηγητής ένα cookie header που ερμηνεύεται από κάθε web server ως ένα cookie με όνομα `a` και τιμή `b`.
Αυτό οδηγεί στο να στέλνει ο περιηγητής μια κεφαλίδα cookie που ερμηνεύεται από κάθε διακομιστή ιστού ως ένα cookie με όνομα `a` και τιμή `b`.
#### Chrome Bug: Πρόβλημα Unicode Surrogate Codepoint
#### Chrome Bug: Πρόβλημα Κωδικών Υποκαταστάσεων Unicode
Στο Chrome, αν ένα Unicode surrogate codepoint είναι μέρος ενός σετ cookie, το `document.cookie` γίνεται κατεστραμμένο, επιστρέφοντας μια κενή συμβολοσειρά στη συνέχεια:
Στο Chrome, αν ένας κωδικός υποκατάστασης Unicode είναι μέρος ενός σετ cookie, το `document.cookie` γίνεται κατεστραμμένο, επιστρέφοντας μια κενή συμβολοσειρά στη συνέχεια:
```js
document.cookie = "\ud800=meep"
```
@ -167,7 +167,7 @@ document.cookie = "\ud800=meep"
#### Cookie Smuggling λόγω προβλημάτων ανάλυσης
(Δείτε περισσότερες λεπτομέρειες στην[πρωτότυπη έρευνα](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/)) Πολλοί διακομιστές ιστού, συμπεριλαμβανομένων αυτών από Java (Jetty, TomCat, Undertow) και Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), χειρίζονται λανθασμένα τις συμβολοσειρές cookie λόγω παρωχημένης υποστήριξης RFC2965. Διαβάζουν μια τιμή cookie με διπλά εισαγωγικά ως μία μόνο τιμή, ακόμη και αν περιλαμβάνει ερωτηματικά, τα οποία κανονικά θα έπρεπε να διαχωρίζουν τα ζεύγη κλειδιού-τιμής:
```
RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
```
@ -179,26 +179,51 @@ RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
- Ο Zope αναζητά μια κόμμα για να αρχίσει την ανάλυση του επόμενου cookie.
- Οι κλάσεις cookie της Python αρχίζουν την ανάλυση σε έναν χαρακτήρα κενό.
Αυτή η ευπάθεια είναι ιδιαίτερα επικίνδυνη σε διαδικτυακές εφαρμογές που βασίζονται στην προστασία CSRF μέσω cookies, καθώς επιτρέπει στους επιτιθέμενους να εισάγουν παραποιημένα cookies CSRF-token, ενδεχομένως παρακάμπτοντας τα μέτρα ασφαλείας. Το πρόβλημα επιδεινώνεται από την επεξεργασία των διπλών ονομάτων cookie από την Python, όπου η τελευταία εμφάνιση υπερκαλύπτει τις προηγούμενες. Επίσης, εγείρει ανησυχίες για τα cookies `__Secure-` και `__Host-` σε ανασφαλείς περιβάλλοντες και θα μπορούσε να οδηγήσει σε παρακάμψεις εξουσιοδότησης όταν τα cookies μεταφέρονται σε διακομιστές backend που είναι ευάλωτοι σε παραποίηση.
Αυτή η ευπάθεια είναι ιδιαίτερα επικίνδυνη σε διαδικτυακές εφαρμογές που βασίζονται στην προστασία CSRF μέσω cookies, καθώς επιτρέπει στους επιτιθέμενους να εισάγουν παραποιημένα cookies CSRF-token, πιθανώς παρακάμπτοντας τα μέτρα ασφαλείας. Το πρόβλημα επιδεινώνεται από την επεξεργασία των διπλών ονομάτων cookie από την Python, όπου η τελευταία εμφάνιση υπερισχύει των προηγούμενων. Επίσης, εγείρει ανησυχίες για τα cookies `__Secure-` και `__Host-` σε ανασφαλείς συνθήκες και θα μπορούσε να οδηγήσει σε παρακάμψεις εξουσιοδότησης όταν τα cookies μεταφέρονται σε διακομιστές backend που είναι ευάλωτοι σε παραποίηση.
### Cookies $version και παρακάμψεις WAF
### Cookies $version
#### Παράκαμψη WAF
Σύμφωνα με [**αυτή την ανάρτηση**](https://portswigger.net/research/bypassing-wafs-with-the-phantom-version-cookie), μπορεί να είναι δυνατό να χρησιμοποιηθεί το χαρακτηριστικό cookie **`$Version=1`** για να κάνει το backend να χρησιμοποιήσει μια παλιά λογική για την ανάλυση του cookie λόγω του **RFC2109**. Επιπλέον, άλλες τιμές όπως **`$Domain`** και **`$Path`** μπορούν να χρησιμοποιηθούν για να τροποποιήσουν τη συμπεριφορά του backend με το cookie.
#### Ανάλυση παρακάμψεων τιμών με κωδικοποίηση παρατιθέμενης συμβολοσειράς
#### Επίθεση Sandwich Cookie
Αυτή η ανάλυση υποδεικνύει την αποσυμπίεση των κωδικοποιημένων τιμών μέσα στα cookies, έτσι ώστε το "\a" να γίνεται "a". Αυτό μπορεί να είναι χρήσιμο για την παράκαμψη WAFS καθώς:
Σύμφωνα με [**αυτή την ανάρτηση**](https://portswigger.net/research/stealing-httponly-cookies-with-the-cookie-sandwich-technique), είναι δυνατό να χρησιμοποιηθεί η τεχνική sandwich cookie για να κλέψετε HttpOnly cookies. Αυτές είναι οι απαιτήσεις και τα βήματα:
- Βρείτε ένα μέρος όπου ένα φαινομενικά άχρηστο **cookie ανακλάται στην απάντηση**
- **Δημιουργήστε ένα cookie που ονομάζεται `$Version`** με τιμή `1` (μπορείτε να το κάνετε αυτό σε μια επίθεση XSS από JS) με μια πιο συγκεκριμένη διαδρομή ώστε να πάρει την αρχική θέση (ορισμένα πλαίσια όπως η Python δεν χρειάζονται αυτό το βήμα)
- **Δημιουργήστε το cookie που ανακλάται** με μια τιμή που αφήνει **ανοιχτές διπλές εισαγωγές** και με μια συγκεκριμένη διαδρομή ώστε να τοποθετηθεί στη βάση δεδομένων cookie μετά το προηγούμενο (`$Version`)
- Στη συνέχεια, το νόμιμο cookie θα πάει επόμενο στη σειρά
- **Δημιουργήστε ένα ψεύτικο cookie που κλείνει τις διπλές εισαγωγές** μέσα στην τιμή του
Με αυτόν τον τρόπο, το cookie του θύματος παγιδεύεται μέσα στο νέο cookie έκδοσης 1 και θα ανακλάται όποτε ανακλάται. π.χ. από την ανάρτηση:
```javascript
document.cookie = `$Version=1;`;
document.cookie = `param1="start`;
// any cookies inside the sandwich will be placed into param1 value server-side
document.cookie = `param2=end";`;
```
### WAF bypasses
#### Cookies $version
Δείτε την προηγούμενη ενότητα.
#### Bypassing value analysis with quoted-string encoding
Αυτή η ανάλυση υποδεικνύει την αποσυμπίεση των τιμών που έχουν διαφύγει μέσα στα cookies, έτσι ώστε το "\a" να γίνεται "a". Αυτό μπορεί να είναι χρήσιμο για την παράκαμψη των WAFS όπως:
- `eval('test') => forbidden`
- `"\e\v\a\l\(\'\t\e\s\t\'\)" => allowed`
#### Ανάλυση παρακάμψεων λιστών αποκλεισμού ονομάτων cookie
#### Bypassing cookie-name blocklists
Στο RFC2109 αναφέρεται ότι μια **κόμμα μπορεί να χρησιμοποιηθεί ως διαχωριστικό μεταξύ των τιμών cookie**. Και επίσης είναι δυνατό να προστεθούν **κενά και ταμπς πριν και μετά το ίσον**. Επομένως, ένα 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 έχει αφαιρεθεί το κενό πριν και μετά το ίσον.
#### Ανάλυση παρακάμψεων τιμών με διαχωρισμό cookie
#### Bypassing value analysis with cookie splitting
Τέλος, διάφορες πίσω πόρτες θα συνδυάζουν σε μια συμβολοσειρά διαφορετικά cookies που περνούν σε διαφορετικούς επικεφαλής cookie όπως στο:
Τέλος, διάφορες πίσω πόρτες θα συνδυάζουν σε μια συμβολοσειρά διαφορετικά cookies που έχουν περαστεί σε διαφορετικούς επικεφαλίδες cookies όπως σε:
```
GET / HTTP/1.1
Host: example.com
@ -242,11 +267,11 @@ padbuster http://web.com/index.php u7bvLewln6PJPSAbMb5pFfnCHSEd6olf 8 -cookies a
padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6
7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2
```
Padbuster θα κάνει αρκετές προσπάθειες και θα σας ρωτήσει ποια είναι η συνθήκη σφάλματος (αυτή που δεν είναι έγκυρη).
Το Padbuster θα κάνει αρκετές προσπάθειες και θα σας ρωτήσει ποια είναι η συνθήκη σφάλματος (αυτή που δεν είναι έγκυρη).
Στη συνέχεια, θα ξεκινήσει την αποκρυπτογράφηση του cookie (μπορεί να διαρκέσει αρκετά λεπτά).
Εάν η επίθεση έχει εκτελεστεί με επιτυχία, τότε θα μπορούσατε να προσπαθήσετε να κρυπτογραφήσετε μια συμβολοσειρά της επιλογής σας. Για παράδειγμα, αν θέλατε να **κρυπτογραφήσετε** **user=administrator**.
Εάν η επίθεση έχει εκτελεστεί επιτυχώς, τότε θα μπορούσατε να προσπαθήσετε να κρυπτογραφήσετε μια συμβολοσειρά της επιλογής σας. Για παράδειγμα, αν θέλατε να **κρυπτογραφήσετε** **user=administrator**.
```
padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator
```