美文网首页
PHPMyAdmin 本地包含

PHPMyAdmin 本地包含

作者: Otis4631 | 来源:发表于2019-01-06 20:56 被阅读0次

    phpMyAdmin是一个web端通用MySQL管理工具,上述版本在/libraries/gis/pma_gis_factory.php文件里的存在任意文件包含漏洞,恶意访问者利用此漏洞可以获取数据库中敏感信息,存在GETSHELL风险。

    该漏洞受影响的版本为: phpMyAdmin 4.0.1 -- 4.2.12

    我分析官方发布的漏洞补丁,看以看到代码如下/libraries/gis/pma_gis_factory.php

    Alt text

    在对比下有漏洞的/libraries/gis/pma_gis_factory.php代码。

    Alt text

    可以看到多了一段 PMA_isValid($type_lower, PMA_Util::getGISDatatypes())$type_lower参数的判断,大概可以猜测漏洞和这个参数有关系。这里的代码逻辑是:用file_exists判断文件是否存在,如果存在,就用include_once包含这个文件。如果$type_lower这个变量是可控的,那么就造成文件包含漏洞。追溯$type_lower的来源,可以发现是factory函数的参数,所以找调用factory函数的地方。

    Alt text

    找到gis_data_editor.php文件,第63行调用factory函数,并且参数等于 $gis_data['gis_type'],而且 $gis_data = $_REQUEST['gis_data'];这句代码说明$gis_data变量是可控的,那说明factory函数的传参也是可以控制,既然可控,就可以文件包含。这里的文件包含只能跨目录包含.php的文件,不能任意包含,服务器上的php文件一般不会对它感兴趣。不过当服务器的php版本满足php截断条件,那就可以任意文件包含,并且假如在web程序中有上传功能,我们只需上传一个.jpg这种正常的文件,并再里面嵌入自己的后门,最后利用文件包含来利用这个后门。

    实验环境

    • 操作机:Windows XP

    实验步骤

    我们在网站根目录放置phpinfo.txt该文件内PHP代码可以打印出PHP详细的版本等信息,我们用来测试任意文件包含,恶意访问者可以上传恶意其他类型文件,包含一句话文件等操作,来达到GETSEHLL的目的。

    Alt text

    我们打开http://localhost/页面来访问本地搭建的存在漏洞的phpMyAdmin,使用帐号root密码root即可登录。登录成功后即可生成token下面进行下一步操作。如下图所示:

    Alt text

    我们点击hackbar工具的load url即可将url地址加载到hackbar的栏目中,我们把该token复制下来,准备下一步操作利用任意文件包含。

    Alt text

    下面我们在hackbar栏目中输入:http://localhost/gis_data_editor.php?token=(上面操作复制的内容粘贴进入这里)&gis_data[gis_type]=/../../../phpinfo.txt%00 输入完毕后点击Execute提交即可,即可包含执行phpinfo.txt中的php代码, 如下图所示:

    Alt text

    相关文章

      网友评论

          本文标题:PHPMyAdmin 本地包含

          本文链接:https://www.haomeiwen.com/subject/vqderqtx.html