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

3.9 KiB

{% hint style="success" %} Impara e pratica l'hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)

Sostieni HackTricks
{% endhint %}

Riassunto dell'attacco

Immagina un server che sta firmando dei dati aggiungendo un segreto a dei dati in chiaro noti e poi facendo l'hash di quei dati. Se conosci:

  • La lunghezza del segreto (questo può essere anche forzato da un intervallo di lunghezza dato)
  • I dati in chiaro
  • L'algoritmo (e che è vulnerabile a questo attacco)
  • Il padding è noto
  • Di solito ne viene utilizzato uno predefinito, quindi se sono soddisfatte le altre 3 condizioni, anche questo lo è
  • Il padding varia a seconda della lunghezza del segreto+dati, ecco perché è necessaria la lunghezza del segreto

Allora, è possibile per un attaccante aggiungere dei dati e generare una firma valida per i dati precedenti + dati aggiunti.

Come?

Fondamentalmente gli algoritmi vulnerabili generano gli hash prima hashando un blocco di dati, e poi, dal hash creato precedentemente (stato), aggiungono il blocco successivo di dati e lo hashano.

Immagina che il segreto sia "segreto" e i dati siano "dati", l'MD5 di "segretodati" è 6036708eba0d11f6ef52ad44e8b74d5b.
Se un attaccante vuole aggiungere la stringa "aggiungi" può:

  • Generare un MD5 di 64 "A"
  • Cambiare lo stato dell'hash inizializzato precedentemente a 6036708eba0d11f6ef52ad44e8b74d5b
  • Aggiungere la stringa "aggiungi"
  • Concludere l'hash e l'hash risultante sarà un valido per "segreto" + "dati" + "padding" + "aggiungi"

Strumento

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

Riferimenti

Puoi trovare questo attacco ben spiegato in https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks

{% hint style="success" %} Impara e pratica l'hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)

Sostieni HackTricks
{% endhint %}