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文件夹是需要自己手动来创建的,而我安装好之后,两个文件夹居然自己就存在了,暂不知道是什么原因
这里也就再顺便提一下,虽然网上一直都在说使用NTFS ADS流来创建文件,这个我还没有执行成功过,会一直报错的,暂时还不知道原因,如果有大佬知道请告知,如果之后我研究出来了,再发布出来吧
之后就是传提权文件了,这里大家不用去求别人了,神器sqlmap里面就已经有自带的了,只需要拿出来进行解密就可以了。
这里可以看到他并不是正常的dll文件,因为sqlmap中提供的是通过异或编码了的,使用前是需要进行解密的,解密工具sqlmap也有自带了,在sqlmap\extra\cloak文件中
直接使用就可以进行解码了,使用之后会在通目录下生成解密后的文件
之后将其改名后,通过各种方法,将它放到lib\plugin目录下就可以了
然后就可以进行创建函数了,这里大家再注意一下,需要使用十六进制编辑器去看一下这个dll文件支持创建什么函数
这里我们可以看出来,可以创建sys_exec和sys_eval等函数,这里还有一个坑,也不知道是不是我操作的原因,这里如果我创建sys_exec函数的话,在执行命令之后,MySQL服务会彻底崩溃掉,使用sys_eval函数则没有任何问题,我们这里直接创建函数
create function sys_eval returns string soname 'udf.dll';
然后直接进行执行就可以了
select sys_eval('whoami');
在使用完成之后,一定要及时将其删除
drop function sys_eval;delete from mysql.func where name='sys_eval';
关于MySQL中怎么实现udf提权问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
文章题目:MySQL中怎么实现udf提权
文章位置:http://pwwzsj.com/article/iesieh.html