hacktricks/pentesting-web/uuid-insecurities.md

9.5 KiB
Raw Permalink Blame History

UUID Insecurities

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Basic Information

Τα Καθολικά Μοναδικά Αναγνωριστικά (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 δημιουργείται σχεδόν εντελώς τυχαία, παρέχοντας υψηλό επίπεδο ανωνυμίας αλλά με ελαφρύ κίνδυνο διπλοτύπων.

{% hint style="success" %} Note that the version and subversion of the UUID usually appears in the same possition inside the UUID. For example in:
12345678 - abcd - 1a56 - a539 - 103755193864
xxxxxxxx - xxxx - Mxxx - Nxxx - xxxxxxxxxxxx

  • Η θέση του M υποδεικνύει την έκδοση του UUID. Στο παραπάνω παράδειγμα, είναι UUID v1.
  • Η θέση του N υποδεικνύει την παραλλαγή του UUID. {% endhint %}

Sandwich attack

Η "Επίθεση Σάντουιτς" είναι ένας συγκεκριμένος τύπος επίθεσης που εκμεταλλεύεται την προβλεψιμότητα της γεννήτριας UUID v1 σε διαδικτυακές εφαρμογές, ιδιαίτερα σε χαρακτηριστικά όπως η επαναφορά κωδικών πρόσβασης. Το UUID v1 δημιουργείται με βάση τον χρόνο, τη σειρά ρολογιού και τη διεύθυνση MAC του κόμβου, γεγονός που μπορεί να το καθιστά κάπως προβλέψιμο αν ένας επιτιθέμενος μπορεί να αποκτήσει μερικά από αυτά τα UUIDs που δημιουργούνται κοντά χρονικά.

Example

Φανταστείτε μια διαδικτυακή εφαρμογή που χρησιμοποιεί UUID v1 για τη δημιουργία συνδέσμων επαναφοράς κωδικών πρόσβασης. Να πώς μπορεί ένας επιτιθέμενος να εκμεταλλευτεί αυτό για να αποκτήσει μη εξουσιοδοτημένη πρόσβαση:

  1. Αρχική Ρύθμιση:
  • Ο επιτιθέμενος έχει έλεγχο σε δύο λογαριασμούς email: `attacker1@acme.com` και `attacker2@acme.com`.
  • Ο λογαριασμός email του στόχου είναι `victim@acme.com`.
  1. Εκτέλεση:
  • Ο επιτιθέμενος ενεργοποιεί μια επαναφορά κωδικού πρόσβασης για τον πρώτο του λογαριασμό (`attacker1@acme.com`) και λαμβάνει έναν σύνδεσμο επαναφοράς κωδικού με ένα UUID, ας πούμε `99874128-7592-11e9-8201-bb2f15014a14`.
  • Αμέσως μετά, ο επιτιθέμενος ενεργοποιεί μια επαναφορά κωδικού για τον λογαριασμό του θύματος (`victim@acme.com`) και στη συνέχεια γρήγορα για τον δεύτερο λογαριασμό που ελέγχει ο επιτιθέμενος (`attacker2@acme.com`).
  • Ο επιτιθέμενος λαμβάνει έναν σύνδεσμο επαναφοράς για τον δεύτερο λογαριασμό με ένα UUID, ας πούμε `998796b4-7592-11e9-8201-bb2f15014a14`.
  1. Ανάλυση:
  • Ο επιτιθέμενος τώρα έχει δύο UUIDs που δημιουργήθηκαν κοντά χρονικά (`99874128` και `998796b4`). Δεδομένης της διαδοχικής φύσης των UUIDs που βασίζονται στον χρόνο, το UUID για τον λογαριασμό του θύματος θα πέσει πιθανώς μεταξύ αυτών των δύο τιμών.
  1. Επίθεση Brute Force:
  • Ο επιτιθέμενος χρησιμοποιεί ένα εργαλείο για να δημιουργήσει UUIDs μεταξύ αυτών των δύο τιμών και δοκιμάζει κάθε παραγόμενο UUID προσπαθώντας να αποκτήσει πρόσβαση στον σύνδεσμο επαναφοράς κωδικού (π.χ., `https://www.acme.com/reset/<generated-UUID>`).
  • Εάν η διαδικτυακή εφαρμογή δεν περιορίζει επαρκώς ή δεν αποκλείει τέτοιες προσπάθειες, ο επιτιθέμενος μπορεί γρήγορα να δοκιμάσει όλα τα πιθανά UUIDs στην περιοχή.
  1. Πρόσβαση Αποκτήθηκε:
  • Μόλις ανακαλυφθεί το σωστό UUID για τον σύνδεσμο επαναφοράς κωδικού του θύματος, ο επιτιθέμενος μπορεί να επαναφέρει τον κωδικό πρόσβασης του θύματος και να αποκτήσει μη εξουσιοδοτημένη πρόσβαση στον λογαριασμό τους.

Tools

  • Μπορείτε να εκτελέσετε την επίθεση σάντουιτς αυτόματα με το εργαλείο: https://github.com/Lupin-Holmes/sandwich
  • Μπορείτε να ανιχνεύσετε αυτούς τους τύπους UUIDs στο Burp Suite με την επέκταση UUID Detector.

References

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}