🔍Puertp - 3306 - MySQL & SqlMap

🔍Auditoría de Seguridad en el Puerto 3306 - MySQL

El puerto 3306 es utilizado por el servicio MySQL, una de las bases de datos más utilizadas en entornos empresariales y de desarrollo. Debido a su criticidad, es un objetivo frecuente en auditorías de seguridad.

📌 Resumen de Herramientas y Técnicas para Auditoría en MySQL

Esta guía cubre las principales herramientas y técnicas para auditar MySQL en el puerto 3306 en el examen eJPTv2

🛠️ Herramientas Principales.

🔍 Nmap + Scripts NSE: Enumeración y detección de vulnerabilidades. 🔧 Metasploit: Explotación de fallos y acceso no autorizado. 🛠️ Hydra & Medusa: Ataques de fuerza bruta para credenciales. 📊 Sqlmap: Pruebas de inyección SQL automatizadas.

🕵️ Reconocimiento e Identificación del Servicio MySQL

Determinar la versión del servicio MySQL es fundamental para detectar posibles vulnerabilidades.

nmap -p 3306 -sCV <ip_victima> # Escaneo para intentar ver la versión.
mysql -u "root" -N -h --skip-ssl <ip_victima> # Probar a iniciar sesión con una null session.
mysql -u <username> -h <ip_víctima> -p # Iniciar sesión con credenciales válidas.
nmap -p 3306 --script mysql-info <ip_victima>
nmap -p3306 --script vuln <ip_victima> # Escaneo completo de vulnerabilidades.
nmap -p 3306 --script mysql-audit,mysql-databases <ip_victima>
nmap -p 3306 --script mysql-users,mysql-variables <ip_victima> # Enumeración de usuarios y variables del servidor.
nmap -p 3306 --script=mysql-empty-password <ip_victima> # Detección de contraseñas vacías.
nmap -p 3306 --script=mysql-variables --script-args="mysqluser='<username>',mysqlpass='<password>'" <ip_victima> # Obtener Variables de Configuración con Credenciales
nmap -p 3306 --script=mysql-dump-hashes --script-args="username='<username>',password='<password>'" <ip_victima> # Extracción de Hashes de Contraseñas
nmap -p 3306 --script=mysql-query --script-args="query='select count(*) from <nombre_db>.<nombre_tabla>;',username='<username>',password='<password>'" <ip_victima> # Ejecución de Consultas Personalizadas
nmap -p 3306 --script ms-sql-brute --script-args userdb=/<wordlists.txt>,passdb=/<wordlists.txt> <ip_victima> # Fuerza Bruta contra SQL Server

🔨 Uso de Metasploit para Auditoría de MySQL.

Enumeración de usuarios.

Ataque de autenticación débil.

Lista recursos mysql.

🔑 Fuerza brutal al servicio MySQL

Hydra

Metasploit

SqlMap para auditar panel login.

Lo primero que debemos hacer es interceptar la petición en Burpsuite y le damos en la opción Copy to file.

Ahora que tenemos guardado el archivo de la petición, vamos a lanzar la herramienta sqlmap con la siguiente sintaxis:

De este modo lo que le estaremos indicando a sqlmap los parámetros en los que tiene que actuar.

El uso mas básico que le podríamos dar a esta herramienta seria el siguiente:

  • --forms: Este parámetro le indica a sqlmap que busque formularios en la página web. Los formularios son a menudo puntos de entrada para datos proporcionados por el usuario, lo que significa que son posibles vectores de inyección SQL. sqlmap escaneará los formularios que encuentre y los probará para detectar vulnerabilidades.

  • --batch: sqlmap interactúa con el usuario durante su ejecución para hacer preguntas o solicitar confirmaciones. El uso de --batch hace que sqlmap tome las decisiones automáticamente utilizando sus valores predeterminados, sin pedir interacción con el usuario. Es útil cuando se ejecuta sqlmap en scripts o cuando quieres automatizar el proceso.

  • --dbs: Este parámetro le dice a sqlmap que, si encuentra una vulnerabilidad de inyección SQL, debe enumerar las bases de datos disponibles en el servidor. Es una opción utilizada para extraer información crítica, que en este caso son los nombres de las bases de datos.

Una vez sepamos que bases de datos existen, vamos seguir utilizando sqlmap pero esta vez le vamos a proporcionar otra sintaxis.

añadiremos -D <nombre_db> y --tables para indicarle por un lado que nos muestre la base de datos de users y por otro lado que nos muestre las columnas de dicha base de datos.

Ahora que sabemos el nombre de dicha columna, vamos a indicarle a sqlmap que nos haga otra petición pero esta vez con el parámetro --colums

Cuando no tenemos mucha información otro parámetro que podemos utilizar es: --dump que nos arrojará toda la información posible sin necesidad de tener que ir 1 por 1. (significativamente mas lento)

📊 Comando para interactuar con MySQL

🛑 Errores Comunes y Soluciones

1️⃣ Error: Access denied for user 'root'@'localhost' (using password: YES) 🔹 Solución: Asegúrate de que la contraseña es correcta o usa `sudo mysql -u .

2️⃣ Error: Can't connect to MySQL server on '127.0.0.1' (111)** 🔹 Solución: Verifica que MySQL está corriendo.

Algunos ejemplos de SQLinjection

Last updated