UUID Insecurities
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
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 генерується майже повністю випадковим чином, забезпечуючи високий рівень анонімності, але з невеликим ризиком дублікатів.
Зверніть увагу, що версія та підверсія 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-адреси вузла, що може зробити його дещо передбачуваним, якщо зловмисник може отримати деякі з цих UUID, згенерованих близько за часом.
Example
Уявіть веб-додаток, який використовує UUID v1 для генерації посилань на скидання паролів. Ось як зловмисник може експлуатувати це для отримання несанкціонованого доступу:
Initial Setup:
Зловмисник контролює два облікові записи електронної пошти: `attacker1@acme.com` та `attacker2@acme.com`.
Обліковий запис електронної пошти жертви — `victim@acme.com`.
Execution:
Зловмисник ініціює скидання пароля для свого першого облікового запису (`attacker1@acme.com`) і отримує посилання на скидання пароля з UUID, скажімо, `99874128-7592-11e9-8201-bb2f15014a14`.
Негайно після цього зловмисник ініціює скидання пароля для облікового запису жертви (`victim@acme.com`), а потім швидко для другого облікового запису, контрольованого зловмисником (`attacker2@acme.com`).
Зловмисник отримує посилання на скидання для другого облікового запису з UUID, скажімо, `998796b4-7592-11e9-8201-bb2f15014a14`.
Analysis:
Тепер зловмисник має два UUID, згенеровані близько за часом (`99874128` та `998796b4`). Враховуючи послідовний характер UUID на основі часу, UUID для облікового запису жертви, ймовірно, буде між цими двома значеннями.
Brute Force Attack:
Зловмисник використовує інструмент для генерації UUID між цими двома значеннями та тестує кожен згенерований UUID, намагаючись отримати доступ до посилання на скидання пароля (наприклад, `https://www.acme.com/reset/<generated-UUID>`).
Якщо веб-додаток не обмежує адекватно швидкість або не блокує такі спроби, зловмисник може швидко протестувати всі можливі UUID у діапазоні.
Access Gained:
Як тільки правильний UUID для посилання на скидання пароля жертви буде виявлено, зловмисник може скинути пароль жертви та отримати несанкціонований доступ до їх облікового запису.
Tools
Ви можете автоматично виконати атаку "sandwich" за допомогою інструмента: https://github.com/Lupin-Holmes/sandwich
Ви можете виявити такі UUID у Burp Suite за допомогою розширення UUID Detector.
References
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated