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

4 KiB

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Resumen del ataque

Imagina un servidor que está firmando algunos datos añadiendo un secreto a algunos datos de texto claro conocidos y luego hasheando esos datos. Si conoces:

  • La longitud del secreto (esto también puede ser forzado bruscamente desde un rango de longitud dado)
  • Los datos de texto claro
  • El algoritmo (y es vulnerable a este ataque)
  • El padding es conocido
  • Usualmente se utiliza uno por defecto, así que si se cumplen los otros 3 requisitos, este también se cumple
  • El padding varía dependiendo de la longitud del secreto+datos, por eso se necesita la longitud del secreto

Entonces, es posible para un atacante añadir datos y generar una firma válida para los datos previos + datos añadidos.

¿Cómo?

Básicamente los algoritmos vulnerables generan los hashes primero hasheando un bloque de datos, y luego, desde el hash previamente creado (estado), añaden el siguiente bloque de datos y lo hashean.

Entonces, imagina que el secreto es "secret" y los datos son "data", el MD5 de "secretdata" es 6036708eba0d11f6ef52ad44e8b74d5b.
Si un atacante quiere añadir la cadena "append", puede:

  • Generar un MD5 de 64 "A"s
  • Cambiar el estado del hash previamente inicializado a 6036708eba0d11f6ef52ad44e8b74d5b
  • Añadir la cadena "append"
  • Finalizar el hash y el hash resultante será un válido para "secret" + "data" + "padding" + "append"

Herramienta

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

Referencias

Puedes encontrar este ataque bien explicado en https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks: