7.6 KiB
{% hint style="success" %}
Вивчайте та практикуйте взлом AWS: Навчання HackTricks AWS Red Team Expert (ARTE)
Вивчайте та практикуйте взлом GCP: Навчання HackTricks GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами на Twitter 🐦 @hacktricks_live.
- Поширюйте хакерські трюки, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
CBC
Якщо cookie - це тільки ім'я користувача (або перша частина cookie - це ім'я користувача) і ви хочете видачу себе за користувача "адміністратор". Тоді ви можете створити ім'я користувача "bdmin" і провести брутфорс першого байта cookie.
CBC-MAC
Код аутентифікації повідомлення з ланцюжком шифрування блоків (CBC-MAC) - це метод, що використовується в криптографії. Він працює шляхом шифрування повідомлення блок за блоком, де шифрування кожного блоку пов'язане з попереднім. Цей процес створює ланцюжок блоків, забезпечуючи, що зміна навіть одного біта в оригінальному повідомленні призведе до непередбачуваної зміни останнього блоку зашифрованих даних. Для внесення або скасування такої зміни потрібний ключ шифрування, що забезпечує безпеку.
Для обчислення CBC-MAC повідомлення m, його шифрують в режимі CBC з нульовим вектором ініціалізації та зберігають останній блок. Наступна фігура наводить обчислення CBC-MAC повідомлення, що складається з блоків за допомогою секретного ключа k та блочного шифру E:
Вразливість
З CBC-MAC зазвичай використовується IV рівний 0.
Це проблема, оскільки 2 відомі повідомлення (m1
та m2
) незалежно генеруватимуть 2 підписи (s1
та s2
). Таким чином:
E(m1 XOR 0) = s1
E(m2 XOR 0) = s2
Тоді повідомлення, що складається з m1 та m2, об'єднані (m3), згенерують 2 підписи (s31 та s32):
E(m1 XOR 0) = s31 = s1
E(m2 XOR s1) = s32
Це можливо обчислити, не знаючи ключ шифрування.
Уявіть, що ви шифруєте ім'я Адміністратор у блоках 8 байтів:
Administ
rator\00\00\00
Ви можете створити ім'я користувача Administ (m1) та отримати підпис (s1).
Потім ви можете створити ім'я користувача, яке дорівнює результату rator\00\00\00 XOR s1
. Це згенерує E(m2 XOR s1 XOR 0)
, яке є s32.
тепер ви можете використовувати s32 як підпис повного імені Адміністратор.
Резюме
- Отримайте підпис імені користувача Administ (m1), який дорівнює s1
- Отримайте підпис імені користувача rator\x00\x00\x00 XOR s1 XOR 0, який дорівнює s32**.**
- Встановіть cookie на s32 і він буде дійсним cookie для користувача Адміністратор.
Керування атакою IV
Якщо ви можете контролювати використаний IV, атака може бути дуже простою.
Якщо cookie - це просто зашифроване ім'я користувача, для видачі себе за користувача "адміністратор" ви можете створити користувача "Адміністратор" і отримаєте його cookie.
Тепер, якщо ви можете контролювати IV, ви можете змінити перший байт IV так, що IV[0] XOR "A" == IV'[0] XOR "a" і згенерувати cookie для користувача Адміністратор. Цей cookie буде дійсним для видачі себе за користувача адміністратор з початковим IV.
Посилання
Додаткова інформація за посиланням https://en.wikipedia.org/wiki/CBC-MAC
{% hint style="success" %}
Вивчайте та практикуйте взлом AWS: Навчання HackTricks AWS Red Team Expert (ARTE)
Вивчайте та практикуйте взлом GCP: Навчання HackTricks GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами на Twitter 🐦 @hacktricks_live.
- Поширюйте хакерські трюки, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.