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的代码中:

image-20200203210112544

如果传入的target变量不为空,并且为字符串,不以index开头,其内数据不能存在于$target_blacklist内,同时经过Core::checkPageValidity方法的处理,则包含传入的数据。

$target_blacklist变量的内容,即target传入不能为import.phpexport.php

image-20200203212324201

继续追踪,在libraries/classes/Core.php中,存在Core::checkPageValidity方法:

image-20200204125037973

传入量$page和白名单$whitelist,检查如果$page中的数据在白名单中则返回true。

接着通过mb_strpos函数和mb_substr函数,特区并返回传参特别符号?后面的数据,再次判断数据中是否存在于白名单,如果存在则返回true。

image-20200204135502497

如果前面的条件都不符合后,通过urldecode函数进行解码,再次进行过滤,最后返回false。

2、利用点

关键点正是在该checkPageValidity函数对数据的处理逻辑不够严密,绕过如下:

1
构造满足白名单条件后,?进行两次urlencode,使得其即满足urldecode前后的过滤机制。

image-20200204134945858

文件包含的利用方式有两类:

​ a. 读取文件:

​ 直接读取或者利用伪协议读取。

​ b. 执行代码:

​ 文件包含的特点是被包含进来的文件会被当作php执行。

​ 故只需要通过某种方式写入代码文件,如webshell,即可包含进来执行。

​ 某种方式如其他漏洞写入代码,如将代码写入日志文件或写入数据库文件。

3、验证

读取文件:

image-20200204135535168

执行代码:

1)写入日志文件然后包含执行

image-20200204141525950

2)写入数据库文件然后包含执行

image-20200204140832085

0x04 参考

https://mp.weixin.qq.com/s/HZcS2HdUtqz10jUEN57aog