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
影响版本
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临时文件来实现命令执行