mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
41 lines
2.5 KiB
Markdown
41 lines
2.5 KiB
Markdown
# Hash Length Extension Attack
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
## Summary of the attack
|
||
|
||
Уявіть собі сервер, який **підписує** деякі **дані**, **додаючи** **секрет** до відомих відкритих текстових даних, а потім хешуючи ці дані. Якщо ви знаєте:
|
||
|
||
- **Довжину секрету** (це також можна перебрати з заданого діапазону довжин)
|
||
- **Відкриті текстові дані**
|
||
- **Алгоритм (і він вразливий до цієї атаки)**
|
||
- **Паддінг відомий**
|
||
- Зазвичай використовується стандартний, тому якщо виконуються інші 3 вимоги, це також так
|
||
- Паддінг варіюється в залежності від довжини секрету + даних, тому довжина секрету потрібна
|
||
|
||
Тоді зловмисник може **додати** **дані** і **згенерувати** дійсну **підпис** для **попередніх даних + доданих даних**.
|
||
|
||
### How?
|
||
|
||
В основному, вразливі алгоритми генерують хеші, спочатку **хешуючи блок даних**, а потім, **з** **раніше** створеного **хешу** (стану), вони **додають наступний блок даних** і **хешують його**.
|
||
|
||
Тоді уявіть, що секрет - "secret", а дані - "data", MD5 "secretdata" дорівнює 6036708eba0d11f6ef52ad44e8b74d5b.\
|
||
Якщо зловмисник хоче додати рядок "append", він може:
|
||
|
||
- Згенерувати MD5 з 64 "A"
|
||
- Змінити стан раніше ініціалізованого хешу на 6036708eba0d11f6ef52ad44e8b74d5b
|
||
- Додати рядок "append"
|
||
- Завершити хеш, і отриманий хеш буде **дійсним для "secret" + "data" + "padding" + "append"**
|
||
|
||
### **Tool**
|
||
|
||
{{#ref}}
|
||
https://github.com/iagox86/hash_extender
|
||
{{#endref}}
|
||
|
||
### References
|
||
|
||
Ви можете знайти цю атаку добре поясненою в [https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks)
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|