0x01 漏洞简介
phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。在phpMyAdmin 4.8.2 之前的 4.8.x 版本中,其index.php中存在一处文件包含逻辑,通过二次编码即可绕过检查,造成远程文件包含漏洞。
影响范围
phpMyAdmin 4.8.0
phpMyAdmin 4.8.1
0x02 漏洞环境
使用vulnhub快速搭建靶场
环境启动后,访问http://your-ip:8080,即可进入phpmyadmin。配置的是 config 模式,所以无需输入密码,直接登录test账户。
0x03 漏洞分析
漏洞问题出在index.php中的如下代码:
target 参数不为空,并且为字符串
target 参数不能以index开头
target 参数不能出现在 $target_blacklist 内
target 参数没有过滤,并且直接include包含文件
在 /index.php 的第50行,target 参数不能在黑名单内
找到Core类的checkPageValidity方法
问题出现在第 465 行的urldecode() 我们可以利用这个函数绕过白名单检测,只要把 ? 两次url编码为 %253f ,且target 参数必须是在白名单内,即可绕过验证。
白名单内容如下:
0x04 漏洞利用
1. 文件读取
读取 /etc/passwd 文件,payload如下:
成功读取了目标文件
2. 命令执行
执行如下SQL命令
审查元素,找到cookie值
利用cookie值构造对应的session文件名,payload如下:
成功执行了 ls 命令
成功写入了phpinfo
0x05 CTF 赛题
这道题出自 HCTF2018 的 WarmUp,攻防世界平台中已经收录了该题,可以前往该平台进行解答。
题目提示flag信息
构造 payload :
最终得到 flag :
参考文章