Hash Length Extension Attack

Support HackTricks

Podsumowanie ataku

Wyobraź sobie serwer, który podpisuje jakieś dane, dodając sekret do znanych danych tekstowych i następnie haszując te dane. Jeśli wiesz:

  • Długość sekretu (można to również wywnioskować z podanego zakresu długości)

  • Dane tekstowe

  • Algorytm (i jest podatny na ten atak)

  • Padding jest znany

  • Zwykle używany jest domyślny, więc jeśli spełnione są pozostałe 3 wymagania, to również jest

  • Padding różni się w zależności od długości sekretu + danych, dlatego długość sekretu jest potrzebna

Wtedy możliwe jest, aby atakujący dodał dane i wygenerował ważny podpis dla poprzednich danych + dodanych danych.

Jak?

Zasadniczo podatne algorytmy generują hashe, najpierw haszując blok danych, a następnie, z wcześniej utworzonego hasha (stanu), dodają następny blok danych i haszują go.

Wyobraź sobie, że sekret to "secret", a dane to "data", MD5 "secretdata" to 6036708eba0d11f6ef52ad44e8b74d5b. Jeśli atakujący chce dodać ciąg "append", może:

  • Wygenerować MD5 64 "A"

  • Zmienić stan wcześniej zainicjowanego hasha na 6036708eba0d11f6ef52ad44e8b74d5b

  • Dodać ciąg "append"

  • Zakończyć haszowanie, a wynikowy hash będzie ważny dla "secret" + "data" + "padding" + "append"

Narzędzie

Referencje

Możesz znaleźć ten atak dobrze wyjaśniony w https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks

Support HackTricks

Last updated