深入学习udf提权
2023-3-6 16:18:44 Author: HACK安全(查看原文) 阅读量:17 收藏

udf(User-Defined Functions)用户自定义函数

UDF是mysql的一个拓展接口。用户可以通过自定义函数实现在mysql中无法方便实现的功能,对MYSQL的功能进行扩充,性质就象使用本地MYSQL函数如abs()或concat() ,其添加的新函数都可以在sql语句中调用,就像调用本机函数一样,

Mysql版本

提权dll存放位置

>5.1

mysql根路径(select @@basedir)下/lib/plugin/

<5.1

系统目录c:\windows\system32下

条件:mysql账号有insert和delete权限,一般root账号最佳,具备root账号所具备的条件也可以。

secure_file_priv不能为NULL

secure_file_priv是用来限制load_file()、load dumpfile、into outfile在哪个目录上拥有上传或者读取文件的权限,如果想写shell的话这个值不能为NULL(本地自己操作的时候,可以通过my.ini进行修改)

  • 当secure_file_priv的值为NULL时表示不允许导入导出,这个时候不能提权

  • 当secure_file_priv的值为空时表示没有限制,可以任意导入导出,这个时候可以提权

  • 当secure_file_priv的值为某个目录时,表示只能在这个文件夹下面导入导出,这时候不能提权

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

函数:

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

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

sys_get,获取一个环境变量。

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

select * from mysql.func 来查看绑定的函数

这些函数哪里来的?

其实很多对于这个提权,都是会用,但是没想过这些函数是怎么跑出来的?

而sys_eval这些函数,都是来自于dll中的函数

https://github.com/mysqludf/lib_mysqludf_sys/blob/master/lib_mysqludf_sys.c


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2NjU0MjA0Ng==&mid=2247487245&idx=1&sn=bca16749cf39ea750de6fbfad2f20bb6&chksm=ce4807bcf93f8eaaf833499c5c07c20a82984409852236d87fa05bab82153ad62b45a67af686#rd
如有侵权请联系:admin#unsafe.sh