189 8069 5689

MySQL中怎么实现udf提权

MySQL中怎么实现udf提权,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

创新互联主要从事成都网站建设、网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务丛台,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

UDF(user defined function)用户自定义函数,是mysql的一个拓展接口。用户可以通过自定义函数实现在mysql中无法方便实现的功能,其添加的新函数都可以在sql语句中调用,就像调用本机函数一样。

0x02 Windows提权的条件

1.如果mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下

2.如果mysql版本小于5.1, udf.dll文件在windows server 2003下放置于c:\windows\system32目录,在windows server 2000下放置在c:\winnt\system32目录

3.所拥有的权限必须有insert和delete的权限

4.具有目录的写权限

以上的条件是从网上搜集来的,并没有做完全的测试

这里我使用的版本是MySQL5.5.56,使用的权限是root权限,而且我将

secure-file-priv参数也已经设置为空,这里大家也再注意一下。

在高版本中,secure-file-priv参数是非常重要的,它限制了MySQL的导出,该参数为NULL时不允许导出、该参数为空时允许在任意文件夹中导出、该参数为某文件夹时允许在该文件夹中导出。

具体情况如下:

MySQL5.5版本:my.ini中无此参数,查询该参数情况为NULL。

MySQL5.6版本:my.ini中无此参数,查询该参数情况为空。

MySQL5.7版本:my.ini中有此参数,查询该参数情况为数据目录下的Upload文件夹。

其他版本的,大家自行进行测试。

0x03 利用过程

根据提权的条件,此版本应该将dll文件放到lib\plugin目录下,而且这里我碰到了一个玄学问题,在网上都说lib和plugin文件夹是需要自己手动来创建的,而我安装好之后,两个文件夹居然自己就存在了,暂不知道是什么原因

MySQL中怎么实现udf提权

这里也就再顺便提一下,虽然网上一直都在说使用NTFS ADS流来创建文件,这个我还没有执行成功过,会一直报错的,暂时还不知道原因,如果有大佬知道请告知,如果之后我研究出来了,再发布出来吧

MySQL中怎么实现udf提权

之后就是传提权文件了,这里大家不用去求别人了,神器sqlmap里面就已经有自带的了,只需要拿出来进行解密就可以了。

MySQL中怎么实现udf提权

这里可以看到他并不是正常的dll文件,因为sqlmap中提供的是通过异或编码了的,使用前是需要进行解密的,解密工具sqlmap也有自带了,在sqlmap\extra\cloak文件中

MySQL中怎么实现udf提权

直接使用就可以进行解码了,使用之后会在通目录下生成解密后的文件

MySQL中怎么实现udf提权

之后将其改名后,通过各种方法,将它放到lib\plugin目录下就可以了

MySQL中怎么实现udf提权

然后就可以进行创建函数了,这里大家再注意一下,需要使用十六进制编辑器去看一下这个dll文件支持创建什么函数

MySQL中怎么实现udf提权

这里我们可以看出来,可以创建sys_exec和sys_eval等函数,这里还有一个坑,也不知道是不是我操作的原因,这里如果我创建sys_exec函数的话,在执行命令之后,MySQL服务会彻底崩溃掉,使用sys_eval函数则没有任何问题,我们这里直接创建函数

create function sys_eval returns string soname 'udf.dll';

MySQL中怎么实现udf提权

然后直接进行执行就可以了

select sys_eval('whoami');

MySQL中怎么实现udf提权

在使用完成之后,一定要及时将其删除

drop function sys_eval;delete from mysql.func where name='sys_eval';

MySQL中怎么实现udf提权

关于MySQL中怎么实现udf提权问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


文章题目:MySQL中怎么实现udf提权
网站链接:http://cdxtjz.cn/article/iesieh.html

其他资讯