前言
phpMyAdmin 是一个用PHP编写的软件工具,可以通过web方式控制和操作MySQL数据库。通过phpMyAdmin 可以完全对数据库进行操作,例如建立、复制和删除数据等。
phpmyadmin目前更新到5.2.1
历史版本:
github地址:
phpMyAdmin版本判断
- 通过登录界面
但很多时候都会显示404
- 尝试访问路径
若管理员没有删除则可以查看到相应的版本信息。
口令爆破
phpMyAdmin的漏洞多为经过验证后可以才能利用,所以需要进入后台,可以采用爆破的方式进入后台,工具:
支持phpMyAdmin 2.11.10到4.4.11版本爆破。只有phpMyAdmin多线程批量破解工具 v1.5这个工具有用
- 写入要爆破的地址
- 导入地址进行爆破
爆破完后想继续爆破得先右键将结果清空再继续
后台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 使用如下命令查看
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的值如下已经变为空了
- 获取网站绝对路径
- 通过网站报错的方式获取
- 通过phpinfo()页面获取,搜索“DOCUMENT_ROOT”
- 通过查看数据库路径来猜测Web路径
尝试通过查看数据库路径来猜测Web路径
知道了前几层目录为“E:\phpStudy\PHPTutorial\”,然后就可以尝试采用目标域名+常用的网站根目录的方式进行爆破猜测根目录绝对路径比如
日志文件写shell
MySQL 5.0版本以上会创建日志文件,我们通过修改日志文件的全局变量,就可以Getshell
利用前提
- mysql > 5.0版本
- 知道根目录
- 查看数据库版本大于5.0,那么应该可以通过日志写入shell
- 查看日志读写功能是否开启
该功能默认是关闭的
- 打开日志读写功能
然后再查看变为了“on”,成功开启
- 指定日志文件为shell2.php
需要指定根目录
- 写shell到shell2.php文件中
写入成功
CVE-2018-19968:任意文件包含/RCE
漏洞影响:Phpmyadmin 4.8.0~4.8.3
可以参考:
php爆绝对路径方法
插入一句话木马时是需要知道网站绝对路径的,除了可以尝试通过执行sql查询 " show variables like '%datadir%'; ”的方式获取物理路径后,还可以尝试如下的方法
- 错误参数值爆路径
直接在URL后面加单引号,要求单引号没有被过滤(gpc=off)且服务器默认返回错误信息。或者将参数值改为错误值
- google搜索
结合关键字和site语法搜索出错页面的网页快照,常见关键字有warning和fatal error。注意,如果目标站点是二级域名,site接的是其对应的顶级域名,这样得到的信息要多得多。
- 测试文件爆路径
很多网站的根目录下都存在测试文件,脚本代码通常都是phpinfo()。
- phpmyadmin爆路径
一旦找到phpmyadmin的管理页面,再访问该目录下的某些特定文件,就很有可能爆出物理路径。
- 配置文件找路径
如果注入点有文件读取权限,就可以手工或工具读取配置文件,再从中寻找路径信息(一般在文件末尾)。各平台下Web服务器和PHP的配置文件默认路径可以上网查,这里列举常见的几个。