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.
CBC
Якщо cookie є тільки іменем користувача (або перша частина cookie є іменем користувача) і ви хочете видати себе за користувача "admin". Тоді ви можете створити ім'я користувача "bdmin" і bruteforce перший байт cookie.
CBC-MAC
Код автентифікації повідомлень з використанням ланцюга блоку шифрування (CBC-MAC) є методом, що використовується в криптографії. Він працює, беручи повідомлення і шифруючи його блок за блоком, де шифрування кожного блоку пов'язане з попереднім. Цей процес створює ланцюг блоків, що забезпечує, що зміна навіть одного біта оригінального повідомлення призведе до непередбачуваної зміни в останньому блоці зашифрованих даних. Щоб внести або скасувати таку зміну, потрібен ключ шифрування, що забезпечує безпеку.
Щоб обчислити CBC-MAC повідомлення m, шифрують m в режимі CBC з нульовим вектором ініціалізації і зберігають останній блок. Наступна фігура ілюструє обчислення CBC-MAC повідомлення, що складається з блоків з використанням секретного ключа k і блочного шифру E:
Уразливість
Зазвичай 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
Що можливо обчислити без знання ключа шифрування.
Уявіть, що ви шифруєте ім'я Administrator в 8байтових блоках:
Administ
rator\00\00\00
Ви можете створити ім'я користувача Administ (m1) і отримати підпис (s1).
Потім ви можете створити ім'я користувача, яке є результатом rator\00\00\00 XOR s1
. Це згенерує E(m2 XOR s1 XOR 0)
, що є s32.
Тепер ви можете використовувати s32 як підпис повного імені Administrator.
Резюме
- Отримайте підпис імені користувача Administ (m1), що є s1
- Отримайте підпис імені користувача rator\x00\x00\x00 XOR s1 XOR 0, що є s32**.**
- Встановіть cookie на s32, і це буде дійсний cookie для користувача Administrator.
Атака на контроль IV
Якщо ви можете контролювати використовуваний IV, атака може бути дуже простою.
Якщо cookie є просто зашифрованим іменем користувача, щоб видати себе за користувача "administrator", ви можете створити користувача "Administrator" і отримати його cookie.
Тепер, якщо ви можете контролювати IV, ви можете змінити перший байт IV так, щоб IV[0] XOR "A" == IV'[0] XOR "a" і згенерувати cookie для користувача Administrator. Цей cookie буде дійсним для імітування користувача administrator з початковим IV.
Посилання
Більше інформації на https://en.wikipedia.org/wiki/CBC-MAC
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.