tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

CBC

Якщо cookie є тільки іменем користувача (або перша частина cookie є іменем користувача) і ви хочете видати себе за користувача "admin". Тоді ви можете створити ім'я користувача "bdmin" і bruteforce перший байт cookie.

CBC-MAC

Код автентифікації повідомлень з використанням ланцюга блоку шифрування (CBC-MAC) є методом, що використовується в криптографії. Він працює, беручи повідомлення і шифруючи його блок за блоком, де шифрування кожного блоку пов'язане з попереднім. Цей процес створює ланцюг блоків, що забезпечує, що зміна навіть одного біта оригінального повідомлення призведе до непередбачуваної зміни в останньому блоці зашифрованих даних. Щоб внести або скасувати таку зміну, потрібен ключ шифрування, що забезпечує безпеку.

Щоб обчислити CBC-MAC повідомлення m, шифрують m в режимі CBC з нульовим вектором ініціалізації і зберігають останній блок. Наступна фігура ілюструє обчислення CBC-MAC повідомлення, що складається з блоківhttps://wikimedia.org/api/rest_v1/media/math/render/svg/bbafe7330a5e40a04f01cc776c9d94fe914b17f5 з використанням секретного ключа k і блочного шифру E:

https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/CBC-MAC_structure_(en).svg/570px-CBC-MAC_structure_(en).svg.png

Уразливість

Зазвичай 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.

Резюме

  1. Отримайте підпис імені користувача Administ (m1), що є s1
  2. Отримайте підпис імені користувача rator\x00\x00\x00 XOR s1 XOR 0, що є s32**.**
  3. Встановіть 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