hacktricks/crypto-and-stego/hash-length-extension-attack.md

3.8 KiB

Hash Length Extension Attack

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Summary of the attack

Zamislite server koji potpisuje neke podatke dodajući tajnu nekim poznatim čistim tekstualnim podacima i zatim heširajući te podatke. Ako znate:

  • Dužinu tajne (to se može takođe bruteforce-ovati iz datog opsega dužine)
  • Čiste tekstualne podatke
  • Algoritam (i da je ranjiv na ovaj napad)
  • Padding je poznat
  • Obično se koristi podrazumevani, tako da ako su ispunjena druga 3 zahteva, ovo takođe jeste
  • Padding varira u zavisnosti od dužine tajne + podataka, zato je potrebna dužina tajne

Tada je moguće da napadač doda podatke i generiše važeći potpis za prethodne podatke + dodate podatke.

How?

U suštini, ranjivi algoritmi generišu heševe prvo heširajući blok podataka, a zatim, iz prethodno kreiranog heša (stanja), dodaju sledeći blok podataka i heširaju ga.

Zamislite da je tajna "secret" a podaci su "data", MD5 od "secretdata" je 6036708eba0d11f6ef52ad44e8b74d5b.
Ako napadač želi da doda string "append" može:

  • Generisati MD5 od 64 "A"
  • Promeniti stanje prethodno inicijalizovanog heša na 6036708eba0d11f6ef52ad44e8b74d5b
  • Dodati string "append"
  • Završiti heš i rezultantni heš će biti važeći za "secret" + "data" + "padding" + "append"

Tool

{% embed url="https://github.com/iagox86/hash_extender" %}

References

Možete pronaći ovaj napad dobro objašnjen na https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}