Hash Length Extension Attack

Support HackTricks

Summary of the attack

Bir sunucunun bazı bilinen açık metin verilerine bir gizli ekleyerek imzaladığı bazı verileri hayal edin ve ardından bu verileri hash'lediğini düşünün. Eğer şunları biliyorsanız:

  • Gizlinin uzunluğu (bu, belirli bir uzunluk aralığından da brute force ile elde edilebilir)

  • Açık metin verisi

  • Algoritma (ve bu saldırıya karşı savunmasız)

  • Padding biliniyor

  • Genellikle varsayılan bir padding kullanılır, bu nedenle diğer 3 gereklilik karşılandığında bu da geçerlidir

  • Padding, gizli+veri uzunluğuna bağlı olarak değişir, bu yüzden gizlinin uzunluğu gereklidir

O zaman, bir saldırganın veri eklemesi ve önceki veri + eklenen veri için geçerli bir imza üretmesi mümkündür.

How?

Temelde, savunmasız algoritmalar hash'leri önce bir veri bloğunu hash'leyerek oluşturur ve ardından, önceden oluşturulmuş hash (durum) üzerinden bir sonraki veri bloğunu ekleyip hash'ler.

O zaman, gizli "secret" ve veri "data" ise, "secretdata"nın MD5'i 6036708eba0d11f6ef52ad44e8b74d5b'dir. Eğer bir saldırgan "append" dizesini eklemek isterse, şunları yapabilir:

  • 64 "A"nın MD5'ini oluştur

  • Önceden başlatılmış hash'in durumunu 6036708eba0d11f6ef52ad44e8b74d5b olarak değiştir

  • "append" dizesini ekle

  • Hash'i tamamla ve sonuçta elde edilen hash, "secret" + "data" + "padding" + "append" için geçerli olacaktır

Tool

References

Bu saldırıyı iyi bir şekilde açıklanmış olarak https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks adresinde bulabilirsiniz.

Support HackTricks

Last updated