Craccare gli Hash di WordPress

Sebbene le password di una web application vengano memorizzate nel database in formato cifrato, la loro sicurezza può essere comunque violata. Questa affermazione è ancora più valida nel caso in cui le password vengano cifrate utilizzando una “semplice” funzione md5.

Ricordo che le funzioni di hashing, come appunto md5, sono funzioni non reversibili, ovvero dal risultato non si può risalire ai dati di origine; ma il cracking di queste funzioni è oggi relativemente semplice, per esempio avvalendosi dell’ausilio delle ormai celebri rainbow-tables, gigantesche raccolte di hash precalcolati che possono garantire il cracking in pochi secondi.

Contromisura a questo tipo di attacco è l’utilizzo di “salt”, codice pesudo-casuale da aggiungere alla password stessa prima dell’operazione di cifratura. Utilizzando questo stratagemma, l’operazione di cifratura di una password darà come risultato valori sempre diversi, pur partendo dalla stessa password; o meglio, il range di valori aumenterà in maniera tale da metter fuori gioco un semplice dicitionary attack basato su rainbow-tables.

Dalla versione 2.5 WordPress non utilizza più l’md5 per cifrare le password degli utenti, bensì PHpass (Portable PHP hashing framework). La funzione di questo framework utilizzata da WordPress effettua esattamente quanto prima descritto: prende la password, aggiunge un valore pseudo-casuale (salt), e la cifra in modo irreversibile.

E’ possibile sperimentare questo algoritmo sul WordPress Password Hasher. Immetendo diverse volte la stessa parola, si otterranno tre risultati diversi. Per esempio, la parola ‘pippo’ inserita tre volte di seguito ha dato i seguenti risultati:

$P$9JmG4rSRpKy8dMDlBZIS9EbbQL.4hG0
$P$9KBRt4BmTd8Nr6/E1Sqkr1SUk1K04t0
$P$9ugzNerdeoDyFcPmxc.wshdWQxKFLI.

C’’è una contromossa: lo script che presento oggi è in grado di attaccare gli hash di WordPress (ovvero quelli generati da PHpass),  con un dictionary attack. L’utilizzo è semplice.

Bisogna invocare lo script da linea di comando passando tramite l’opzione -w il file dizionario contenente le parole da testare; una volta avviato, il programma chiederà di incollare l’hash:

Usage: C:\PH\phpasscracker.py [-w wordlist] [-p prefix] [-v]
 
Options:
--version      show program version number and exit
-h, --help     show this help message and exit
-w WORDLIST    wordlist to run against hash
-p PREFIX      hash prefix (default: $P$)
-v, --verbose  verbose
-l, --license  license
 
C:\PH>phpasscracker.py -w dict.txt
[*] phpass hash brute force tool (by thebug)
[*] hash prefix: $P$
[*] paste hash here: $P$9fVkv/wPYCIx0K8TOycOPYlFeTYoSQ.
[*] 3 word(s) loaded.
[*] brute force started.
 
[*] got it!
[*] password is: pippo

Naturalmente per ottenere gli hash è necessario prima riuscire ad accedere al database della vittima, cosa che si potrebbe fare per esempio tramite un attacco SQL-Injection.

Lo script (realizzato in python) lo potete trovare qui

14 comments to “Craccare gli Hash di WordPress”
  1. Ho sostituito una password su PhpMyAdmin avendo calcolato prima l’MD5 ma non funziona…
    Ho visto il link che mi hai mandato, ma non c’è alcuna funzione: scusa, non ho capito come fare dunque 😉

  2. l’MD5 dovrebbe funzionare; la funzione si trova in wp-includes\class-phpass.php. Approfondimenti su phpass li trovi nel link di sopra. Ci sono tutte le informazioni che ti servono.

  3. Purtroppo ti confermo che l’MD5 non funziona con WP 3.0.1!
    Ho comunque trovato un PlugIn che permette il logIn da una tabella differente, così utilizzo questo.
    Grazie comunque della pazienza ^_^

Comments are closed.