Inviato il 09-10-2010
Archiviato in (blog, cms, Hacking, Internet, tecnologia, web, wordpress) da Francesco

Può capitare che, per qualche grave disattenzione, ci si dimentichi della password di amministrazione di un sito come ad esempio WordPress e e non si riesca più ad entrare. Se queste applicazioni hanno un sistema di recovery della password attraverso l’invio di una email allora siamo fortunati, ma spesso questa funzione viene disabilitata per l’utente ‘admin’.
A questo punto occorre hackerare il sistema in un modo molto semplice.

Per farlo, però, bisogna avere i diritti per lavorare sul proprio database con phpMyAdmin (ovviamente tutto sta nel non dimenticare perlomeno la password di accesso al vostro db!). Ora non ci resta che individuare la tabella in cui riteniamo siano memorizzate le informazioni per gli utenti di applicativo: di solito il suo nome contiene la parola ‘user’. Nel caso di WordPress essa è: wp_users.
Cliccando sulla tabella, verrà esplosa in una serie di informazioni che indicano i nomi di tutti i suoi campi: tra questi dovremo individuare un campo che possa immagazzinare la password: per WordPress questo campo si chiama user_pass (di tipo varchar(64)).
Di solito la password, in sistemi come quelli sopra citati, o comunque in qualunque applicativo degno di essere considerato ’sicuro’, è sempre memorizzata in forma criptata nel database con una funzione MD5 e mai in chiaro.

E’ necessario a questo punto fare un breve excursus sulla funzione MD5: è una funzione di hash one-way usato di frequente negli algoritmi di crittazione a senso unico e appartiene alla categoria degli algoritmi chiamata ‘algoritmi di digest’.
Letteralmente il digest è il riassunto (o sommario) ma spesso lo trovate tradotto come impronta digitale (fingerprint). In realtà il digest è una serie di caratteri ed è ottenuto applicando l’algoritmo MD5 al messaggio da criptare. Il digest così generato rispetta le seguenti proprietà :
- ha una lungezza fissa di 128 bit;
- è computazionalmente impossibile trovare due messaggi m1 e m2 tali che abbiano la stessa impronta digitale (almeno in teoria);
- non è possibile partire dal digest e risalire al messaggio originale in chiaro;
Si può ben capire quindi che usando MD5 è possibile nascondere una password ma è impossibile svelare una password partendo dal suo codice MD5 (si ha qualche piccola possibilità con brute force se la password è corta e molto facile; se si utilizzano i sistemi canonici per la creazione delle password è pressochè impossibile trovarla). Se volete divertirvi, esiste un sito che, sfruttando le Rainbow Tables, tenta di decriptare semplici hash MD5: MD5 Online Cracking.
In PHP è stata creata appositamente una funzione MD5() che si occupa di trovare l’hash di qualsiasi stringa Ascii.
Ovviamente con un tipo di informazione criptata l’unico modo per garantire l’accesso sicuro ai dati, visto che è impossibile decriptare la password, è criptare con la stessa funzione la password immessa al momento del login. Se i due valori coincidono allora l’utente è autorizzato. Come si vede, utilizzando il fingerprint, si riesce a confrontare una password senza sapere il suo reale valore!

Tornando al nostro caso, da phpMyAdmin occorre cliccare sulla TAB in alto con la scritta ‘Mostra’ per visualizzare tutti i record: di solito (ma non è una regola) l’utente di Admin è il primo della lista (con id o oppure 1). A questo punto potremo finalmente trovare la password criptata che sarà in una forma del tipo: d6b048a23e907f8756q39c7c03376a58.
Ora avremo due possibilità : o provare a decriptare la password (un lavoro estenuante che vi porterà via molto molto tempo…) oppure sovrascrivere la vecchia password. Ovviamente è auspicabile che si scelga la seconda ipotesi, se non fosse altro per la sua rapidità di esecuzione.
Infatti, per sovrascrivere la password basterà cliccare sull’iconcina di modifica della riga della tabella e, in corrispondenza del campo user_pass impostare dal menu a tendina, la funzione MD5. Quindi nel campo valore, scrivere in chiaro la nuova password e salvare i dati cliccando sul tasto Esegui.
A questo punto verrà visualizzato nuovamente il valore del campo appena modificato e potremo constatare che avrà un nuovo valore hash!
Da questo momento in poi avremo la possibilità di entrare sull’applicativo con l’utente di amministrazione usando la nuova password impostata da phpMyAdmin, che altro non ha fatto che emulare il comportamento di uno script php che aveva il compito di salvare la password di un utente.

Commenti chiusi.