MySQL File priv to SSRF/RCE

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support 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/.

Server-Side Request Forgery (SSRF) a trav茅s de 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, por defecto es /var/lib/mysql-files/, limitando el acceso a archivos a este directorio a menos que se establezca como 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 suponiendo que se otorguen los permisos necesarios de archivo 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 puede llevar a la exfiltraci贸n de hashes NTLMv2.

Este m茅todo 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 recursos compartidos con plenos privilegios de lectura y, como se demostr贸 en investigaciones anteriores, para robar hashes para una explotaci贸n posterior.

Ejecuci贸n Remota de C贸digo (RCE) a trav茅s de Funciones Definidas por el Usuario (UDF)

Las bases de datos MySQL ofrecen el uso de Funciones Definidas por el Usuario (UDF) desde archivos de bibliotecas externas. Si estas bibliotecas son accesibles dentro de directorios espec铆ficos o en el $PATH del sistema, se pueden invocar desde dentro de MySQL.

Esta t茅cnica permite la ejecuci贸n de solicitudes de red/HTTP a trav茅s de un UDF, siempre que se cumplan varias condiciones, incluyendo acceso de escritura a @@plugin_dir, file_priv configurado en Y, y secure_file_priv deshabilitado.

Por ejemplo, la biblioteca lib_mysqludf_sys u otras bibliotecas UDF que habilitan solicitudes HTTP pueden ser cargadas para realizar SSRF. Las bibliotecas deben ser transferidas al servidor, lo que se puede lograr mediante la codificaci贸n en hex o base64 del contenido de la biblioteca y luego escribi茅ndolo en el directorio apropiado.

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

La automatizaci贸n de estos procesos puede ser facilitada por herramientas como SQLMap, que soporta inyecci贸n UDF, y para inyecciones SQL ciegas, se pueden utilizar t茅cnicas de redirecci贸n de salida o de contrabando de solicitudes DNS.

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks