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值来访问临时文件
使用文件包含漏洞访问该临时文件,发现命令执行成功