mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
41 lines
1.9 KiB
Markdown
41 lines
1.9 KiB
Markdown
# Hash Length Extension Attack
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|
|
|
|
## Riepilogo dell'attacco
|
|
|
|
Immagina un server che **firma** alcuni **dati** **aggiungendo** un **segreto** a dei dati di testo chiaro noti e poi hashando quei dati. Se conosci:
|
|
|
|
- **La lunghezza del segreto** (questo può essere anche forzato a bruteforce da un intervallo di lunghezza dato)
|
|
- **I dati di testo chiaro**
|
|
- **L'algoritmo (e è vulnerabile a questo attacco)**
|
|
- **Il padding è noto**
|
|
- Di solito viene utilizzato un padding predefinito, quindi se gli altri 3 requisiti sono soddisfatti, 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** **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, **dallo** **hash** **precedentemente** creato (stato), **aggiungono il prossimo blocco di dati** e **lo hashano**.
|
|
|
|
Poi, immagina che il segreto sia "secret" e i dati siano "data", l'MD5 di "secretdata" è 6036708eba0d11f6ef52ad44e8b74d5b.\
|
|
Se un attaccante vuole aggiungere la stringa "append" può:
|
|
|
|
- Generare un MD5 di 64 "A"
|
|
- Cambiare lo stato dell'hash precedentemente inizializzato a 6036708eba0d11f6ef52ad44e8b74d5b
|
|
- Aggiungere la stringa "append"
|
|
- Completare l'hash e l'hash risultante sarà un **valido per "secret" + "data" + "padding" + "append"**
|
|
|
|
### **Strumento**
|
|
|
|
{{#ref}}
|
|
https://github.com/iagox86/hash_extender
|
|
{{#endref}}
|
|
|
|
### Riferimenti
|
|
|
|
Puoi trovare questo attacco ben spiegato in [https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks)
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|