tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
ECB
(ECB) Ηλεκτρονικό Βιβλίο Κωδικών - συμμετρικό σχήμα κρυπτογράφησης που αντικαθιστά κάθε μπλοκ του καθαρού κειμένου με το μπλοκ του κρυπτογραφημένου κειμένου. Είναι το απλούστερο σχήμα κρυπτογράφησης. Η κύρια ιδέα είναι να χωρίσετε το καθαρό κείμενο σε μπλοκ N bit (εξαρτάται από το μέγεθος του μπλοκ των εισερχόμενων δεδομένων, αλγόριθμο κρυπτογράφησης) και στη συνέχεια να κρυπτογραφήσετε (αποκρυπτογραφήσετε) κάθε μπλοκ του καθαρού κειμένου χρησιμοποιώντας το μόνο κλειδί.
Η χρήση του ECB έχει πολλές επιπτώσεις στην ασφάλεια:
- Μπλοκ από το κρυπτογραφημένο μήνυμα μπορούν να αφαιρεθούν
- Μπλοκ από το κρυπτογραφημένο μήνυμα μπορούν να μετακινηθούν
Ανίχνευση της ευπάθειας
Φανταστείτε ότι συνδέεστε σε μια εφαρμογή πολλές φορές και πάντα λαμβάνετε το ίδιο cookie. Αυτό συμβαίνει επειδή το cookie της εφαρμογής είναι <username>|<password>
.
Στη συνέχεια, δημιουργείτε δύο νέους χρήστες, και οι δύο με το ίδιο μακρύ κωδικό πρόσβασης και σχεδόν το ίδιο όνομα χρήστη.
Ανακαλύπτετε ότι τα μπλοκ των 8B όπου οι πληροφορίες και των δύο χρηστών είναι οι ίδιες είναι ίσα. Στη συνέχεια, φαντάζεστε ότι αυτό μπορεί να συμβαίνει επειδή χρησιμοποιείται το ECB.
Όπως στο παρακάτω παράδειγμα. Παρατηρήστε πώς αυτά τα 2 αποκωδικοποιημένα cookies έχουν πολλές φορές το μπλοκ \x23U\xE45K\xCB\x21\xC8
.
\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9
\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9
Αυτό συμβαίνει επειδή το όνομα χρήστη και ο κωδικός πρόσβασης αυτών των cookies περιείχαν πολλές φορές το γράμμα "a" (για παράδειγμα). Οι μπλοκ που είναι διαφορετικοί είναι μπλοκ που περιείχαν τουλάχιστον 1 διαφορετικό χαρακτήρα (ίσως το διαχωριστικό "|" ή κάποια απαραίτητη διαφορά στο όνομα χρήστη).
Τώρα, ο επιτιθέμενος χρειάζεται απλώς να ανακαλύψει αν η μορφή είναι <username><delimiter><password>
ή <password><delimiter><username>
. Για να το κάνει αυτό, μπορεί απλώς να δημιουργήσει αρκετά ονόματα χρήστη με παρόμοια και μακριά ονόματα χρήστη και κωδικούς πρόσβασης μέχρι να βρει τη μορφή και το μήκος του διαχωριστικού:
Μήκος ονόματος χρήστη: | Μήκος κωδικού πρόσβασης: | Μήκος ονόματος χρήστη+Κωδικού πρόσβασης: | Μήκος cookie (μετά την αποκωδικοποίηση): |
---|---|---|---|
2 | 2 | 4 | 8 |
3 | 3 | 6 | 8 |
3 | 4 | 7 | 8 |
4 | 4 | 8 | 16 |
7 | 7 | 14 | 16 |
Εκμετάλλευση της ευπάθειας
Αφαίρεση ολόκληρων μπλοκ
Γνωρίζοντας τη μορφή του cookie (<username>|<password>
), προκειμένου να προσποιηθεί το όνομα χρήστη admin
, δημιουργήστε έναν νέο χρήστη με το όνομα aaaaaaaaadmin
και αποκτήστε το cookie και αποκωδικοποιήστε το:
\x23U\xE45K\xCB\x21\xC8\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4
Μπορούμε να δούμε το μοτίβο \x23U\xE45K\xCB\x21\xC8
που δημιουργήθηκε προηγουμένως με το όνομα χρήστη που περιείχε μόνο a
.
Στη συνέχεια, μπορείτε να αφαιρέσετε το πρώτο μπλοκ των 8B και θα αποκτήσετε ένα έγκυρο cookie για το όνομα χρήστη admin
:
\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4
Μετακίνηση μπλοκ
Σε πολλές βάσεις δεδομένων είναι το ίδιο να αναζητάς WHERE username='admin';
ή WHERE username='admin ';
(Σημειώστε τα επιπλέον κενά)
Έτσι, ένας άλλος τρόπος για να προσποιηθείς τον χρήστη admin
θα ήταν να:
- Δημιουργήσεις ένα όνομα χρήστη που:
len(<username>) + len(<delimiter) % len(block)
. Με μέγεθος μπλοκ8B
μπορείς να δημιουργήσεις ένα όνομα χρήστη που ονομάζεται:username
, με τον διαχωριστή|
το κομμάτι<username><delimiter>
θα δημιουργήσει 2 μπλοκ των 8Bs. - Στη συνέχεια, να δημιουργήσεις έναν κωδικό πρόσβασης που θα γεμίσει έναν ακριβή αριθμό μπλοκ που περιέχουν το όνομα χρήστη που θέλουμε να προσποιηθούμε και κενά, όπως:
admin
Το cookie αυτού του χρήστη θα αποτελείται από 3 μπλοκ: τα πρώτα 2 είναι τα μπλοκ του ονόματος χρήστη + διαχωριστής και το τρίτο από τον κωδικό πρόσβασης (ο οποίος προσποιείται το όνομα χρήστη): username |admin
Στη συνέχεια, απλώς αντικατέστησε το πρώτο μπλοκ με το τελευταίο και θα προσποιείσαι τον χρήστη admin
: admin |username
Αναφορές
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.