UUID Insecurities
Reading time: 5 minutes
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.
Basic Information
Τα Universally Unique Identifiers (UUIDs) είναι 128-bit αριθμοί που χρησιμοποιούνται για να προσδιορίζουν μοναδικά πληροφορίες σε υπολογιστικά συστήματα. Τα UUIDs είναι απαραίτητα σε εφαρμογές όπου απαιτούνται μοναδικοί αναγνωριστές χωρίς κεντρικό συντονισμό. Χρησιμοποιούνται συνήθως ως κλειδιά βάσης δεδομένων και μπορούν να αναφέρονται σε διάφορα στοιχεία όπως έγγραφα και συνεδρίες.
Τα UUIDs έχουν σχεδιαστεί για να είναι μοναδικά και δύσκολα να μαντευτούν. Είναι δομημένα σε μια συγκεκριμένη μορφή, χωρισμένα σε πέντε ομάδες που αντιπροσωπεύονται ως 32 δεκαεξαδικοί ψηφία. Υπάρχουν διαφορετικές εκδόσεις UUIDs, καθεμία από τις οποίες εξυπηρετεί διαφορετικούς σκοπούς:
- UUID v1 είναι βασισμένο στον χρόνο, ενσωματώνοντας το χρονικό σήμα, τη σειρά ρολογιού και το ID κόμβου (διεύθυνση MAC), αλλά μπορεί να εκθέσει πληροφορίες του συστήματος.
- UUID v2 είναι παρόμοιο με το v1 αλλά περιλαμβάνει τροποποιήσεις για τοπικούς τομείς (δεν χρησιμοποιείται ευρέως).
- UUID v3 και v5 δημιουργούν UUIDs χρησιμοποιώντας τιμές hash από το namespace και το όνομα, με το v3 να χρησιμοποιεί MD5 και το v5 να χρησιμοποιεί SHA-1.
- UUID v4 δημιουργείται σχεδόν εντελώς τυχαία, παρέχοντας υψηλό επίπεδο ανωνυμίας αλλά με ελαφρύ κίνδυνο διπλοτύπων.
tip
Σημειώστε ότι η έκδοση και η υποέκδοση του UUID συνήθως εμφανίζονται στην ίδια θέση μέσα στο UUID. Για παράδειγμα σε:
12345678 - abcd - 1a56 - a539 - 103755193864
xxxxxxxx - xxxx - Mxxx - Nxxx - xxxxxxxxxxxx
- Η θέση του M υποδεικνύει την έκδοση του UUID. Στο παραπάνω παράδειγμα, είναι UUID v1.
- Η θέση του N υποδεικνύει την παραλλαγή του UUID.
Sandwich attack
Η "Sandwich Attack" είναι ένας συγκεκριμένος τύπος επίθεσης που εκμεταλλεύεται την προβλεψιμότητα της γεννήτριας UUID v1 σε διαδικτυακές εφαρμογές, ιδιαίτερα σε χαρακτηριστικά όπως η επαναφορά κωδικών πρόσβασης. Το UUID v1 δημιουργείται με βάση τον χρόνο, τη σειρά ρολογιού και τη διεύθυνση MAC του κόμβου, γεγονός που μπορεί να το καθιστά κάπως προβλέψιμο αν ένας επιτιθέμενος μπορεί να αποκτήσει μερικά από αυτά τα UUIDs που δημιουργούνται κοντά στον χρόνο.
Example
Φανταστείτε μια διαδικτυακή εφαρμογή που χρησιμοποιεί UUID v1 για τη δημιουργία συνδέσμων επαναφοράς κωδικών πρόσβασης. Να πώς μπορεί ένας επιτιθέμενος να εκμεταλλευτεί αυτό για να αποκτήσει μη εξουσιοδοτημένη πρόσβαση:
- Αρχική Ρύθμιση:
- Ο επιτιθέμενος έχει έλεγχο σε δύο λογαριασμούς email: `attacker1@acme.com` και `attacker2@acme.com`.
- Ο λογαριασμός email του στόχου είναι `victim@acme.com`.
- Εκτέλεση:
- Ο επιτιθέμενος ενεργοποιεί μια επαναφορά κωδικού πρόσβασης για τον πρώτο του λογαριασμό (`attacker1@acme.com`) και λαμβάνει έναν σύνδεσμο επαναφοράς κωδικού με ένα UUID, ας πούμε `99874128-7592-11e9-8201-bb2f15014a14`.
- Αμέσως μετά, ο επιτιθέμενος ενεργοποιεί μια επαναφορά κωδικού για τον λογαριασμό του θύματος (`victim@acme.com`) και στη συνέχεια γρήγορα για τον δεύτερο λογαριασμό που ελέγχει ο επιτιθέμενος (`attacker2@acme.com`).
- Ο επιτιθέμενος λαμβάνει έναν σύνδεσμο επαναφοράς για τον δεύτερο λογαριασμό με ένα UUID, ας πούμε `998796b4-7592-11e9-8201-bb2f15014a14`.
- Ανάλυση:
- Ο επιτιθέμενος έχει τώρα δύο UUIDs που δημιουργήθηκαν κοντά στον χρόνο (`99874128` και `998796b4`). Δεδομένης της διαδοχικής φύσης των UUIDs που βασίζονται στον χρόνο, το UUID για τον λογαριασμό του θύματος θα πέσει πιθανώς μεταξύ αυτών των δύο τιμών.
- Επίθεση Brute Force:
- Ο επιτιθέμενος χρησιμοποιεί ένα εργαλείο για να δημιουργήσει UUIDs μεταξύ αυτών των δύο τιμών και δοκιμάζει κάθε παραγόμενο UUID προσπαθώντας να αποκτήσει πρόσβαση στον σύνδεσμο επαναφοράς κωδικού (π.χ. `https://www.acme.com/reset/<generated-UUID>`).
- Εάν η διαδικτυακή εφαρμογή δεν περιορίζει επαρκώς ή δεν αποκλείει τέτοιες προσπάθειες, ο επιτιθέμενος μπορεί γρήγορα να δοκιμάσει όλα τα πιθανά UUIDs στην περιοχή.
- Πρόσβαση Κερδισμένη:
- Μόλις ανακαλυφθεί το σωστό UUID για τον σύνδεσμο επαναφοράς κωδικού του θύματος, ο επιτιθέμενος μπορεί να επαναφέρει τον κωδικό πρόσβασης του θύματος και να αποκτήσει μη εξουσιοδοτημένη πρόσβαση στον λογαριασμό τους.
Tools
- Μπορείτε να εκτελέσετε την επίθεση sandwich αυτόματα με το εργαλείο: https://github.com/Lupin-Holmes/sandwich
- Μπορείτε να ανιχνεύσετε αυτούς τους τύπους UUIDs στο Burp Suite με την επέκταση UUID Detector.
References
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.