Electronic Code Book (ECB)
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)
(ECB) Ηλεκτρονικό Βιβλίο Κωδικών - συμμετρικό σχήμα κρυπτογράφησης που αντικαθιστά κάθε μπλοκ του καθαρού κειμένου με το μπλοκ του κρυπτογραφημένου κειμένου. Είναι το απλούστερο σχήμα κρυπτογράφησης. Η κύρια ιδέα είναι να χωρίσουμε το καθαρό κείμενο σε μπλοκ N bit (εξαρτάται από το μέγεθος του μπλοκ των εισερχόμενων δεδομένων, αλγόριθμο κρυπτογράφησης) και στη συνέχεια να κρυπτογραφήσουμε (αποκρυπτογραφήσουμε) κάθε μπλοκ του καθαρού κειμένου χρησιμοποιώντας το μόνο κλειδί.
Η χρήση του ECB έχει πολλές επιπτώσεις στην ασφάλεια:
Μπλοκ από το κρυπτογραφημένο μήνυμα μπορούν να αφαιρεθούν
Μπλοκ από το κρυπτογραφημένο μήνυμα μπορούν να μετακινηθούν
Φανταστείτε ότι συνδέεστε σε μια εφαρμογή πολλές φορές και πάντα λαμβάνετε το ίδιο cookie. Αυτό συμβαίνει επειδή το cookie της εφαρμογής είναι <username>|<password>
.
Στη συνέχεια, δημιουργείτε δύο νέους χρήστες, και οι δύο με το ίδιο μακρύ κωδικό και σχεδόν το ίδιο όνομα χρήστη.
Ανακαλύπτετε ότι τα μπλοκ των 8B όπου οι πληροφορίες και των δύο χρηστών είναι οι ίδιες είναι ίσα. Στη συνέχεια, φαντάζεστε ότι αυτό μπορεί να συμβαίνει επειδή χρησιμοποιείται το ECB.
Όπως στο παρακάτω παράδειγμα. Παρατηρήστε πώς αυτά τα 2 αποκωδικοποιημένα cookies έχουν πολλές φορές το μπλοκ \x23U\xE45K\xCB\x21\xC8
.
Αυτό συμβαίνει επειδή το όνομα χρήστη και ο κωδικός πρόσβασης αυτών των cookies περιείχαν πολλές φορές το γράμμα "a" (για παράδειγμα). Τα μπλοκ που είναι διαφορετικά είναι μπλοκ που περιείχαν τουλάχιστον 1 διαφορετικό χαρακτήρα (ίσως το διαχωριστικό "|" ή κάποια απαραίτητη διαφορά στο όνομα χρήστη).
Τώρα, ο επιτιθέμενος χρειάζεται απλώς να ανακαλύψει αν η μορφή είναι <username><delimiter><password>
ή <password><delimiter><username>
. Για να το κάνει αυτό, μπορεί απλώς να δημιουργήσει αρκετά ονόματα χρήστη με παρόμοια και μακριά ονόματα χρήστη και κωδικούς πρόσβασης μέχρι να βρει τη μορφή και το μήκος του διαχωριστικού:
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
που δημιουργήθηκε προηγουμένως με το όνομα χρήστη που περιείχε μόνο a
.
Στη συνέχεια, μπορείτε να αφαιρέσετε το πρώτο μπλοκ των 8B και θα αποκτήσετε ένα έγκυρο cookie για το όνομα χρήστη admin
:
Σε πολλές βάσεις δεδομένων είναι το ίδιο να αναζητάς 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
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)