Cipher Block Chaining CBC-MAC
Last updated
Last updated
Вивчайте та практикуйте взлом AWS: Навчання HackTricks AWS Red Team Expert (ARTE) Вивчайте та практикуйте взлом GCP: Навчання HackTricks GCP Red Team Expert (GRTE)
Якщо cookie - це тільки ім'я користувача (або перша частина cookie - це ім'я користувача) і ви хочете видачу себе за користувача "адміністратор". Тоді ви можете створити ім'я користувача "bdmin" і провести брутфорс першого байта cookie.
Шифрувальний код аутентифікації повідомлень з ланцюжком блоків (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, атака може бути дуже простою. Якщо cookie - це просто зашифроване ім'я користувача, для видачі себе за користувача "адміністратор" ви можете створити користувача "Адміністратор" і отримаєте його cookie. Тепер, якщо ви можете контролювати IV, ви можете змінити перший байт IV так, що IV[0] XOR "A" == IV'[0] XOR "a" і згенерувати cookie для користувача Адміністратор. Цей cookie буде дійсним для видачі себе за користувача адміністратор з початковим IV.
Додаткова інформація за посиланням https://en.wikipedia.org/wiki/CBC-MAC
Вивчайте та практикуйте взлом AWS: Навчання HackTricks AWS Red Team Expert (ARTE) Вивчайте та практикуйте взлом GCP: Навчання HackTricks GCP Red Team Expert (GRTE)