tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
ECB
(ECB) Електронна кодова книга - симетрична схема шифрування, яка замінює кожен блок відкритого тексту на блок шифротексту. Це найпростіша схема шифрування. Основна ідея полягає в тому, щоб розділити відкритий текст на блоки по N біт (залежить від розміру блоку вхідних даних, алгоритму шифрування) і потім зашифрувати (розшифрувати) кожен блок відкритого тексту, використовуючи єдиний ключ.
Використання ECB має кілька наслідків для безпеки:
- Блоки з зашифрованого повідомлення можуть бути видалені
- Блоки з зашифрованого повідомлення можуть бути переміщені
Виявлення вразливості
Уявіть, що ви кілька разів входите в додаток і завжди отримуєте один і той же cookie. Це відбувається тому, що cookie додатка є <username>|<password>
.
Потім ви генеруєте нових користувачів, обидва з однаковим довгим паролем і майже однаковим іменем користувача.
Ви виявляєте, що блоки по 8B, де інформація обох користувачів однакова, є однаковими. Потім ви уявляєте, що це може бути через те, що використовується ECB.
Як у наступному прикладі. Зверніть увагу, як ці 2 декодовані cookie мають кілька разів блок \x23U\xE45K\xCB\x21\xC8
.
\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9
\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9
Це пов'язано з тим, що ім'я користувача та пароль цих куків містили кілька разів літеру "a" (наприклад). Блоки, які є різними, - це блоки, які містили принаймні 1 різний символ (можливо, роздільник "|" або деяка необхідна різниця в імені користувача).
Тепер зловмиснику потрібно лише виявити, чи формат є <username><delimiter><password>
або <password><delimiter><username>
. Для цього він може просто згенерувати кілька імен користувачів з схожими та довгими іменами користувачів і паролями, поки не знайде формат і довжину роздільника:
Довжина імені користувача: | Довжина пароля: | Довжина імені користувача + пароля: | Довжина кука (після декодування): |
---|---|---|---|
2 | 2 | 4 | 8 |
3 | 3 | 6 | 8 |
3 | 4 | 7 | 8 |
4 | 4 | 8 | 16 |
7 | 7 | 14 | 16 |
Використання вразливості
Видалення цілих блоків
Знаючи формат кука (<username>|<password>
), щоб видати себе за ім'я користувача admin
, створіть нового користувача з ім'ям aaaaaaaaadmin
і отримайте куки та декодуйте їх:
\x23U\xE45K\xCB\x21\xC8\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4
Ми можемо побачити шаблон \x23U\xE45K\xCB\x21\xC8
, створений раніше з ім'ям користувача, яке містило лише a
.
Тоді ви можете видалити перший блок 8B, і ви отримаєте дійсний cookie для імені користувача admin
:
\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4
Переміщення блоків
У багатьох базах даних однаково шукати WHERE username='admin';
або WHERE username='admin ';
(Зверніть увагу на додаткові пробіли)
Отже, ще один спосіб видати себе за користувача admin
полягає в тому, щоб:
- Згенерувати ім'я користувача, яке:
len(<username>) + len(<delimiter) % len(block)
. З розміром блоку8B
ви можете згенерувати ім'я користувача, яке називається:username
, з роздільником|
частина<username><delimiter>
створить 2 блоки по 8B. - Потім згенерувати пароль, який заповнить точну кількість блоків, що містять ім'я користувача, за яким ми хочемо видати себе, і пробіли, наприклад:
admin
Кука цього користувача буде складатися з 3 блоків: перші 2 - це блоки імені користувача + роздільник, а третій - це пароль (який підробляє ім'я користувача): username |admin
Тоді просто замініть перший блок на останній, і ви будете видавати себе за користувача admin
: admin |username
Посилання
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.