
PoC modificado para RCE de MariaDB v11.1 mediante UDF, que devuelve la salida del comando en línea a través de consultas SQL. Incluye comparación detallada de código e instrucciones de compilación para Windows.
MariaDB v11.1 RCE vía UDF — PoC modificado basado en Ant1sec-ops/CVE-2024-27766.
| Afectado | MariaDB v11.1 |
| Corregido en | 10.5.25 / 10.6.18 / 10.11.8 / 11.0.6 / 11.1.5 / 11.2.4 / 11.4.2+ |
| Tipo | RCE vía función definida por el usuario (UDF) |
MariaDB v11.1 permite a un atacante con privilegios suficientes de base de datos (privilegio FILE + acceso de escritura al directorio de plugins) registrar una UDF maliciosa y ejecutar comandos arbitrarios del sistema operativo a través de ella.
Nota: La Fundación MariaDB disputa este CVE argumentando que no se cruza ninguna frontera de privilegios. La explotación requiere acceso de administrador a la BD o equivalente.
El PoC original usa un tipo de retorno longlong, por lo que do_system() solo devuelve si el comando tuvo éxito; no puedes ver la salida directamente desde SQL.
Esta versión cambia el tipo de retorno a char *, que reenvía stdout como resultado de la consulta. No se necesita un canal fuera de banda; solo ejecuta SELECT do_system('whoami') y la salida vuelve en línea.
| Original | Este PoC | |
|---|---|---|
| Tipo de retorno | longlong | char * |
| Ejecución | system() | _popen() + bucle fgets() |
| Resultado SQL | código de salida | stdout del comando |
| Memoria | ninguna | asignado en heap, liberado en deinit |
Una cosa digna de mención: devolver char * desde una UDF requiere que MariaDB conozca el tamaño del búfer de antemano. do_system_init establece initid->max_length = 65536, coincidiendo con el búfer de salida asignado en la función principal.
Debido a que el tipo de retorno cambió, se debe usar RETURNS STRING al registrar la función, no RETURNS INTEGER como en el original.
CREATE FUNCTION do_system RETURNS STRING SONAME 'do_system.dll';
_popen / _pclose)FILE y acceso de escritura al directorio de pluginsSolo con fines educativos y de investigación. No lo utilices contra sistemas que no te pertenezcan o para los que no tengas permiso explícito de pruebas.