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

CBC

Αν το cookie είναι μόνο το όνομα χρήστη (ή το πρώτο μέρος του cookie είναι το όνομα χρήστη) και θέλεις να προσποιηθείς το όνομα χρήστη "admin". Τότε, μπορείς να δημιουργήσεις το όνομα χρήστη "bdmin" και να bruteforce το πρώτο byte του cookie.

CBC-MAC

Cipher block chaining message authentication code (CBC-MAC) είναι μια μέθοδος που χρησιμοποιείται στην κρυπτογραφία. Λειτουργεί παίρνοντας ένα μήνυμα και κρυπτογραφώντας το μπλοκ προς μπλοκ, όπου η κρυπτογράφηση κάθε μπλοκ συνδέεται με το προηγούμενο. Αυτή η διαδικασία δημιουργεί μια αλυσίδα μπλοκ, διασφαλίζοντας ότι η αλλαγή ακόμη και ενός μόνο bit του αρχικού μηνύματος θα οδηγήσει σε μια απρόβλεπτη αλλαγή στο τελευταίο μπλοκ των κρυπτογραφημένων δεδομένων. Για να γίνει ή να αντιστραφεί μια τέτοια αλλαγή, απαιτείται το κλειδί κρυπτογράφησης, διασφαλίζοντας την ασφάλεια.

Για να υπολογίσεις το CBC-MAC του μηνύματος m, κρυπτογραφείς το m σε λειτουργία CBC με μηδενικό αρχικοποιητικό διανύσμα και κρατάς το τελευταίο μπλοκ. Η παρακάτω εικόνα σκιαγραφεί τον υπολογισμό του CBC-MAC ενός μηνύματος που αποτελείται από μπλοκhttps://wikimedia.org/api/rest_v1/media/math/render/svg/bbafe7330a5e40a04f01cc776c9d94fe914b17f5 χρησιμοποιώντας ένα μυστικό κλειδί k και έναν μπλοκ κρυπτογράφο E:

https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/CBC-MAC_structure_(en).svg/570px-CBC-MAC_structure_(en).svg.png

Vulnerability

Με το CBC-MAC συνήθως το IV που χρησιμοποιείται είναι 0.
Αυτό είναι ένα πρόβλημα γιατί 2 γνωστά μηνύματα (m1 και m2) ανεξάρτητα θα δημιουργήσουν 2 υπογραφές (s1 και s2). Έτσι:

  • E(m1 XOR 0) = s1
  • E(m2 XOR 0) = s2

Τότε ένα μήνυμα που αποτελείται από τα m1 και m2 που συνδυάζονται (m3) θα δημιουργήσει 2 υπογραφές (s31 και s32):

  • E(m1 XOR 0) = s31 = s1
  • E(m2 XOR s1) = s32

Το οποίο είναι δυνατό να υπολογιστεί χωρίς να γνωρίζεις το κλειδί της κρυπτογράφησης.

Φαντάσου ότι κρυπτογραφείς το όνομα Administrator σε 8bytes μπλοκ:

  • Administ
  • rator\00\00\00

Μπορείς να δημιουργήσεις ένα όνομα χρήστη που ονομάζεται Administ (m1) και να ανακτήσεις την υπογραφή (s1).
Τότε, μπορείς να δημιουργήσεις ένα όνομα χρήστη που είναι το αποτέλεσμα του rator\00\00\00 XOR s1. Αυτό θα δημιουργήσει E(m2 XOR s1 XOR 0) που είναι s32.
Τώρα, μπορείς να χρησιμοποιήσεις το s32 ως την υπογραφή του πλήρους ονόματος Administrator.

Summary

  1. Πάρε την υπογραφή του ονόματος χρήστη Administ (m1) που είναι s1
  2. Πάρε την υπογραφή του ονόματος χρήστη rator\x00\x00\x00 XOR s1 XOR 0 που είναι s32**.**
  3. Ρύθμισε το cookie σε s32 και θα είναι ένα έγκυρο cookie για τον χρήστη Administrator.

Attack Controlling IV

Αν μπορείς να ελέγξεις το χρησιμοποιούμενο IV, η επίθεση μπορεί να είναι πολύ εύκολη.
Αν το cookie είναι απλώς το όνομα χρήστη που έχει κρυπτογραφηθεί, για να προσποιηθείς τον χρήστη "administrator" μπορείς να δημιουργήσεις τον χρήστη "Administrator" και θα πάρεις το cookie του.
Τώρα, αν μπορείς να ελέγξεις το IV, μπορείς να αλλάξεις το πρώτο Byte του IV έτσι ώστε IV[0] XOR "A" == IV'[0] XOR "a" και να αναγεννήσεις το cookie για τον χρήστη Administrator. Αυτό το cookie θα είναι έγκυρο για να προσποιηθείς τον χρήστη administrator με το αρχικό IV.

References

Περισσότερες πληροφορίες στο https://en.wikipedia.org/wiki/CBC-MAC

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