hacktricks/pentesting-web/uuid-insecurities.md

93 lines
8.8 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
Універсально унікальні ідентифікатори (UUID) — це **128-бітні числа, які використовуються для унікальної ідентифікації інформації** в комп'ютерних системах. UUID є необхідними в додатках, де потрібні унікальні ідентифікатори без центральної координації. Вони зазвичай використовуються як ключі бази даних і можуть посилатися на різні елементи, такі як документи та сесії.
UUID розроблені так, щоб бути унікальними та **важкими для вгадування**. Вони структуровані у специфічному форматі, поділеному на п'ять груп, представлених як 32 шістнадцяткові цифри. Існують різні версії UUID, кожна з яких має різні цілі:
* **UUID v1** є заснованим на часі, включаючи мітку часу, послідовність годинника та ідентифікатор вузла (MAC-адресу), але може потенційно розкрити інформацію про систему.
* **UUID v2** подібний до v1, але включає модифікації для локальних доменів (не широко використовується).
* **UUID v3 і v5** генерують UUID, використовуючи хеш-значення з простору імені та імені, при цьому v3 використовує MD5, а v5 використовує SHA-1.
* **UUID v4** генерується майже повністю випадковим чином, забезпечуючи високий рівень анонімності, але з невеликим ризиком дублікатів.
{% hint style="success" %}
Зверніть увагу, що версія та підверсія UUID зазвичай з'являються в одному й тому ж місці всередині UUID. Наприклад у:\
12345678 - abcd - 1a56 - a539 - 103755193864\
xxxxxxxx - xxxx - Mxxx - Nxxx - xxxxxxxxxxxx
* **Позиція M** вказує на **версію** UUID. У наведеному вище прикладі це UUID v**1**.
* **Позиція N** вказує на варіант UUID.
{% endhint %}
## Sandwich attack
"Sandwich Attack" — це специфічний тип атаки, який **експлуатує передбачуваність генерації UUID v1 у веб-додатках**, особливо в таких функціях, як скидання паролів. UUID v1 генерується на основі часу, послідовності годинника та MAC-адреси вузла, що може зробити його дещо передбачуваним, якщо зловмисник може отримати деякі з цих UUID, згенерованих близько за часом.
### Example
Уявіть веб-додаток, який використовує UUID v1 для генерації посилань на скидання паролів. Ось як зловмисник може експлуатувати це для отримання несанкціонованого доступу:
1. **Initial Setup**:
* Зловмисник контролює два облікові записи електронної пошти: \`attacker1@acme.com\` та \`attacker2@acme.com\`.
* Обліковий запис електронної пошти жертви — \`victim@acme.com\`.
2. **Execution**:
* Зловмисник ініціює скидання пароля для свого першого облікового запису (\`attacker1@acme.com\`) і отримує посилання на скидання пароля з UUID, скажімо, \`99874128-7592-11e9-8201-bb2f15014a14\`.
* Негайно після цього зловмисник ініціює скидання пароля для облікового запису жертви (\`victim@acme.com\`), а потім швидко для другого облікового запису, контрольованого зловмисником (\`attacker2@acme.com\`).
* Зловмисник отримує посилання на скидання для другого облікового запису з UUID, скажімо, \`998796b4-7592-11e9-8201-bb2f15014a14\`.
3. **Analysis**:
* Тепер зловмисник має два UUID, згенеровані близько за часом (\`99874128\` та \`998796b4\`). Враховуючи послідовний характер UUID на основі часу, UUID для облікового запису жертви, ймовірно, буде між цими двома значеннями.
4. **Brute Force Attack:**
* Зловмисник використовує інструмент для генерації UUID між цими двома значеннями та тестує кожен згенерований UUID, намагаючись отримати доступ до посилання на скидання пароля (наприклад, \`https://www.acme.com/reset/\<generated-UUID>\`).
* Якщо веб-додаток не обмежує адекватно швидкість або не блокує такі спроби, зловмисник може швидко протестувати всі можливі UUID у діапазоні.
5. **Access Gained:**
* Як тільки правильний UUID для посилання на скидання пароля жертви буде виявлено, зловмисник може скинути пароль жертви та отримати несанкціонований доступ до їх облікового запису.
### Tools
* Ви можете автоматично виконати атаку "sandwich" за допомогою інструмента: [**https://github.com/Lupin-Holmes/sandwich**](https://github.com/Lupin-Holmes/sandwich)
* Ви можете виявити такі UUID у 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 %}