MySQL File priv to SSRF/RCE

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!

Otras formas de apoyar a HackTricks:

Este es un resumen de las técnicas de MySQL/MariaDB/Percona de https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/.

Falsificación de Petición de Servidor (SSRF) mediante Funciones SQL

En la exploración de la exfiltración de datos SQL Out of Band, la función LOAD_FILE() se emplea comúnmente para iniciar solicitudes de red. Sin embargo, esta función está limitada por el sistema operativo en el que opera y las configuraciones de inicio de la base de datos.

La variable global secure_file_priv, si no está configurada, se establece por defecto en /var/lib/mysql-files/, limitando el acceso a archivos a este directorio a menos que se establezca en una cadena vacía (""). Este ajuste requiere modificaciones en el archivo de configuración de la base de datos o en los parámetros de inicio.

Dado que secure_file_priv está deshabilitado (""), y asumiendo que se otorgan los permisos necesarios para los archivos y file_priv, se pueden leer archivos fuera del directorio designado. Sin embargo, la capacidad de estas funciones para realizar llamadas de red depende en gran medida del sistema operativo. En sistemas Windows, las llamadas de red a rutas UNC son factibles debido a la comprensión de las convenciones de nomenclatura UNC por parte del sistema operativo, lo que potencialmente lleva a la exfiltración de hashes NTLMv2.

Este método de SSRF está limitado al puerto TCP 445 y no permite la modificación del número de puerto, aunque se puede utilizar para acceder a compartidos con privilegios de lectura completos y, como se demostró en investigaciones anteriores, para robar hashes para una explotación adicional.

Ejecución de Código Remoto (RCE) mediante Funciones Definidas por el Usuario (UDF)

Las bases de datos de MySQL ofrecen el uso de Funciones Definidas por el Usuario (UDF) desde archivos de biblioteca externos. Si estas bibliotecas son accesibles dentro de directorios específicos o en la variable de entorno $PATH del sistema, pueden ser invocadas desde MySQL.

Esta técnica permite la ejecución de solicitudes de red/HTTP a través de una UDF, siempre que se cumplan varias condiciones, incluido el acceso de escritura al @@plugin_dir, file_priv configurado en Y y secure_file_priv deshabilitado.

Por ejemplo, la biblioteca lib_mysqludf_sys u otras bibliotecas UDF que permiten solicitudes HTTP pueden cargarse para realizar SSRF. Las bibliotecas deben transferirse al servidor, lo cual se puede lograr mediante la codificación en hexadecimal o base64 del contenido de la biblioteca y luego escribiéndola en el directorio correspondiente.

El proceso varía si el @@plugin_dir no es escribible, especialmente para versiones de MySQL superiores a v5.0.67. En tales casos, deben utilizarse rutas alternativas que sean escribibles.

La automatización de estos procesos puede facilitarse con herramientas como SQLMap, que admite la inyección de UDF, y para inyecciones de SQL ciegas, se pueden utilizar técnicas de redirección de salida o de contrabando de solicitudes DNS.

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!

Otras formas de apoyar a HackTricks:

Última actualización