26 de septiembre de 2011

DVWA + findmyhash - PoC

En la entrada anterior os presentamos findmyhash, un script en Python que busca en bases de datos online para romper diferentes algoritmos de hash.

Hoy os vamos a mostrar un ejemplo de cómo utilizarlo aplicándolo a la serie de entradas que estamos publicando sobre DVWA.

En las pruebas de inyección de código SQL habíamos conseguido extraer los hashes de las contraseñas de los usuarios pero nos habíamos quedado ahí, sin haber llegado a romper dichos hashes. Para ello es para lo que vamos a utilizar findmyhash.

Si extraemos el listado de usuarios y sus respectivos hashes de la base de datos tenemos:
admin : 5f4dcc3b5aa765d61d8327deb882cf99
gordonb : e99a18c428cb38d5f260853678922e03
1337 : 8d3533d75ae2c3966d7e0d4fcc69216b
pablo : 0d107d09f5bbe40cade3de5c71e9e9b7
smithy : 5f4dcc3b5aa765d61d8327deb882cf99
Ahora crearemos un fichero con tan sólo los hashes, de manera que nuestro fichero "/tmp/hashes.txt" contendrá:
5f4dcc3b5aa765d61d8327deb882cf99
e99a18c428cb38d5f260853678922e03
8d3533d75ae2c3966d7e0d4fcc69216b
0d107d09f5bbe40cade3de5c71e9e9b7
Como veis he eliminado el último hash por ser exactamente el mismo que el primero y así realizar menos peticiones.

Si lanzamos findmyhash, sabiendo que son hashes MD5, obtenemos un resultado como el siguiente:

$ python findmyhash.py MD5 -f /tmp/hashes.txt

Cracking hash: 5f4dcc3b5aa765d61d8327deb882cf99

Analyzing with hashcracking 
  (http://md5.hashcracking.com)...

***** HASH CRACKED!! *****
The original string is: password


Cracking hash: e99a18c428cb38d5f260853678922e03

Analyzing with md5hashcracker 
  (http://md5hashcracker.appspot.com)...

***** HASH CRACKED!! *****
The original string is: abc123


Cracking hash: 8d3533d75ae2c3966d7e0d4fcc69216b

Analyzing with c0llision 
  (http://www.c0llision.net)...

***** HASH CRACKED!! *****
The original string is: charley


Cracking hash: 0d107d09f5bbe40cade3de5c71e9e9b7

Analyzing with md5hashcracker 
  (http://md5hashcracker.appspot.com)...

***** HASH CRACKED!! *****
The original string is: letmein


The following hashes were cracked:
----------------------------------

5f4dcc3b5aa765d61d8327deb882cf99 -> password
e99a18c428cb38d5f260853678922e03 -> abc123
8d3533d75ae2c3966d7e0d4fcc69216b -> charley
0d107d09f5bbe40cade3de5c71e9e9b7 -> letmein

Con esto ya tendríamos las contraseñas de todos los usuarios ;)