phpMyAdmin-CVE-2018-12613
0x00 介绍
phpMyAdmin
0x01 环境
vulhub
项目之phpmyadmin/CVE-2018-12613
0x02 漏洞
1、影响版本:
1 | 4.8.1 |
2、漏洞摘要:
phpMyAdmin 4.8.1版本存在文件包含漏洞
0x03 分析
1、输入点&漏洞点
在index.php
的代码中:
如果传入的target
变量不为空,并且为字符串,不以index
开头,其内数据不能存在于$target_blacklist
内,同时经过Core::checkPageValidity
方法的处理,则包含传入的数据。
$target_blacklist
变量的内容,即target
传入不能为import.php
和export.php
:
继续追踪,在libraries/classes/Core.php
中,存在Core::checkPageValidity
方法:
传入量$page
和白名单$whitelist
,检查如果$page
中的数据在白名单中则返回true。
接着通过mb_strpos
函数和mb_substr
函数,特区并返回传参特别符号?
后面的数据,再次判断数据中是否存在于白名单,如果存在则返回true。
如果前面的条件都不符合后,通过urldecode
函数进行解码,再次进行过滤,最后返回false。
2、利用点
关键点正是在该checkPageValidity
函数对数据的处理逻辑不够严密,绕过如下:
1 | 构造满足白名单条件后,?进行两次urlencode,使得其即满足urldecode前后的过滤机制。 |
文件包含的利用方式有两类:
a. 读取文件:
直接读取或者利用伪协议读取。
b. 执行代码:
文件包含的特点是被包含进来的文件会被当作php执行。
故只需要通过某种方式写入代码文件,如webshell,即可包含进来执行。
某种方式如其他漏洞写入代码,如将代码写入日志文件或写入数据库文件。
3、验证
读取文件:
执行代码:
1)写入日志文件然后包含执行
2)写入数据库文件然后包含执行