hacktricks/pentesting-web/uuid-insecurities.md

93 lines
9.5 KiB
Markdown
Raw Normal View History

# UUID Insecurities
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% 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 v**1**.
* Η **θέση του 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\`.
2. **Εκτέλεση**:
* Ο επιτιθέμενος ενεργοποιεί μια επαναφορά κωδικού πρόσβασης για τον πρώτο του λογαριασμό (\`attacker1@acme.com\`) και λαμβάνει έναν σύνδεσμο επαναφοράς κωδικού με ένα UUID, ας πούμε \`99874128-7592-11e9-8201-bb2f15014a14\`.
* Αμέσως μετά, ο επιτιθέμενος ενεργοποιεί μια επαναφορά κωδικού για τον λογαριασμό του θύματος (\`victim@acme.com\`) και στη συνέχεια γρήγορα για τον δεύτερο λογαριασμό που ελέγχει ο επιτιθέμενος (\`attacker2@acme.com\`).
* Ο επιτιθέμενος λαμβάνει έναν σύνδεσμο επαναφοράς για τον δεύτερο λογαριασμό με ένα UUID, ας πούμε \`998796b4-7592-11e9-8201-bb2f15014a14\`.
3. **Ανάλυση**:
* Ο επιτιθέμενος τώρα έχει δύο UUIDs που δημιουργήθηκαν κοντά χρονικά (\`99874128\` και \`998796b4\`). Δεδομένης της διαδοχικής φύσης των UUIDs που βασίζονται στον χρόνο, το UUID για τον λογαριασμό του θύματος θα πέσει πιθανώς μεταξύ αυτών των δύο τιμών.
4. **Επίθεση Brute Force:**
* Ο επιτιθέμενος χρησιμοποιεί ένα εργαλείο για να δημιουργήσει UUIDs μεταξύ αυτών των δύο τιμών και δοκιμάζει κάθε παραγόμενο UUID προσπαθώντας να αποκτήσει πρόσβαση στον σύνδεσμο επαναφοράς κωδικού (π.χ., \`https://www.acme.com/reset/\<generated-UUID>\`).
* Εάν η διαδικτυακή εφαρμογή δεν περιορίζει επαρκώς ή δεν αποκλείει τέτοιες προσπάθειες, ο επιτιθέμενος μπορεί γρήγορα να δοκιμάσει όλα τα πιθανά UUIDs στην περιοχή.
5. **Πρόσβαση Αποκτήθηκε:**
* Μόλις ανακαλυφθεί το σωστό UUID για τον σύνδεσμο επαναφοράς κωδικού του θύματος, ο επιτιθέμενος μπορεί να επαναφέρει τον κωδικό πρόσβασης του θύματος και να αποκτήσει μη εξουσιοδοτημένη πρόσβαση στον λογαριασμό τους.
### Tools
* Μπορείτε να εκτελέσετε την επίθεση σάντουιτς αυτόματα με το εργαλείο: [**https://github.com/Lupin-Holmes/sandwich**](https://github.com/Lupin-Holmes/sandwich)
* Μπορείτε να ανιχνεύσετε αυτούς τους τύπους UUIDs στο Burp Suite με την επέκταση [**UUID Detector**](https://portswigger.net/bappstore/65f32f209a72480ea5f1a0dac4f38248).
## References
* [https://versprite.com/blog/universally-unique-identifiers/](https://versprite.com/blog/universally-unique-identifiers/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}