hacktricks/cryptography/hash-length-extension-attack.md

3.8 KiB

{% hint style="success" %} Učite i vežbajte hakovanje AWS-a:HackTricks Obuka AWS Crveni Tim Stručnjak (ARTE)
Učite i vežbajte hakovanje GCP-a: HackTricks Obuka GCP Crveni Tim Stručnjak (GRTE)

Pomozite HackTricks
{% endhint %}

Rezime napada

Zamislite server koji potpisuje neke podatke tako što dodaje tajnu vrednost na neke poznate čiste tekstualne podatke, a zatim hešira te podatke. Ako znate:

  • Dužinu tajne (ovo takođe može biti probijeno iz datog opsega dužine)
  • Čiste tekstualne podatke
  • Algoritam (i ranjiv je na ovaj napad)
  • Padding je poznat
  • Obično se koristi podrazumevani, pa ako su ispunjeni i drugi 3 zahteva, i ovaj je
  • Padding varira u zavisnosti od dužine tajne+podataka, zbog čega je potrebna dužina tajne

Onda je moguće da napadač doda podatke i generiše validan potpis za prethodne podatke + dodate podatke.

Kako?

Osnovno, ranjivi algoritmi generišu hešove tako što prvo heširaju blok podataka, a zatim, iz prethodno kreiranog heša (stanja), dodaju sledeći blok podataka i heširaju ga.

Zamislite da je tajna "tajna" i podaci su "podaci", MD5 od "tajnapodaci" je 6036708eba0d11f6ef52ad44e8b74d5b.
Ako napadač želi da doda string "dodatak" može:

  • Generisati MD5 od 64 "A"
  • Promeniti stanje prethodno inicijalizovanog heša u 6036708eba0d11f6ef52ad44e8b74d5b
  • Dodati string "dodatak"
  • Završiti heš i rezultujući heš će biti validan za "tajna" + "podaci" + "padding" + "dodatak"

Alat

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

Reference

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

{% hint style="success" %} Učite i vežbajte hakovanje AWS-a:HackTricks Obuka AWS Crveni Tim Stručnjak (ARTE)
Učite i vežbajte hakovanje GCP-a: HackTricks Obuka GCP Crveni Tim Stručnjak (GRTE)

Pomozite HackTricks
{% endhint %}