首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>漏洞资料>文章内容
Dedecms多个鸡肋漏洞分析
来源:http://www.hacksb.cn 作者:普瑞斯特 发布时间:2009-08-10  

正无聊时发现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(empty($activepath)) $activepath = "";

$activepath = str_replace("..","",$activepath); //过滤了..但没过滤.
$activepath = ereg_replace("^/{1,}","/",$activepath);
if(strlen($activepath)<strlen($cfg_soft_dir)){
    $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(empty($f)) $f="form1.enclosure";

if(empty($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 "<script language='javascript'>location='$gurl';</script>";//嘎嘎,看这里,检测如果没登陆就会转向我们可爱的后台登陆地址了
    exit();
}
虽然DEDECMS提供了修改后台目录的功能,但因为include/dialog/config.php的问题,还是会爆出后台管理路径.
接着看另外那个有趣的地方,通过查看include/dialog/select_soft.php源码,我们看到/没过滤,那我们直接构造activepath=/aaa看看,由于下面检测长度的存在,会被替换成/uploads/soft,跳出失败,有些朋友可能会想到直接去构成比$cfg_soft_dir长度长的值就行了,比如/include/FCKeditor,就是可以访问的.
我们访问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(empty($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(empty($f))
{
    $f='form1.enclosure';
}

if(empty($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=/././././././././

嘿嘿,最后发现include\dialog\目录下的另外几个文件都存在同一个问题,只是默认设的目录不同.有些可以查看HTML这些文件哦..
存在相同问题的文件还有
include\dialog\select_images.php
include\dialog\select_media.php
include\dialog\select_templets.php


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·XSOK环境变量本地命令执行漏洞
·N点虚拟主机管理系统 致命漏洞。
·南方数据企业网站管理系统V10.0
·动网(DVBBS)Version 8.2.0 后
·Solaris 10 telnet漏洞及解决
·破解无线路由器密码,常见无线密
·Nginx %00空字节执行php漏洞
·WinWebMail、7I24提权漏洞
·XPCD xpcd-svga本地缓冲区溢出漏
·Struts2多个漏洞简要分析
·ecshop2.72 api.php 文件鸡肋注
·Discuz!后台拿Webshell 0day
  相关文章
·Dedecms爆路径漏洞
·嘉缘人才cms系统最后一个注射漏
·各大游戏高危漏洞(魔兽争霸、反
·国外一Blog程序0day
·WordPress 2.8.3高危漏洞
·MS09-044:远程桌面连接中的允许
·Overwrite $_FILE array in rfc1
·ESCMS 0DAY
·四通政府CMS管理系统的union注入
·dedecms注入漏洞 影响版本5.3 –
·Discuz!NT 2.5(20080826更新前
·嘉缘人才系统漏洞
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved