• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > DedeCMS教程 > DedeCMS安装使用 >

Dede漏洞分析

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-01-15点击:

当前位置:黑客武林 → 文章中心 → 攻防技术 → 嗅探侦察 → Dede漏洞分析

Dede漏洞分析

减小字体

增大字体 作者:佚名  来源:不详  发布时间:2009-11-23 20:49:06

在此记录一下,嘿嘿,这个洞可是杰少偶们两发现的哦。。。相当YD吧,而且还帮我找到了两个ROOT权限。。此漏洞为st0p和杰少发现,版权没有,欢迎转载!为啥叫XDAY不叫0DAY呢,因为这个洞比较乱,涵盖的版本比较多,但却用处不大,相当鸡肋,不过利用好了还是有点效果的。。

摘自:普瑞斯特正无聊时发现YD的杰少发来消息,说他发现了DEDECMS一个很鸡肋的东西,include/dialog/select_soft.php文件可以爆出DEDECMS的后台,以前的老板本可以跳过登陆验证直接访问,无需管理员帐号,新版本的就直接转向了后台.看到消息后我脑子里就有了个YD的想法,会不会官方也存在,然后马上打开,可惜的是官方会提示你输入后理目录,不会转向.如图1失望啊,不过在和杰少的聊天中得知安全中国存在这个问题,于是打开,果然转向了,如图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,就是可以访问的.我们访问?activepath=/include/FCKeditor如图3看到没,跳转成功了,不过这对我们来说,用处不大..那能不能跳到根目录呢..经过st0p的尝试发现这个版本是可以跳转成功的.过滤了..但没过滤.,但下面检测了$activepath长度.小于这个长度,你杂跳都会一直在在/uploads/soft目录下面,那么我们就加N个./试试,结果在加到/././././././././时成功跳过我们访问?activepath=/././././././././如图4看到没,直接列出了根目录下的所有文件,还有PHP文件,不过不能查看内容..而且DEDECMS在访问不存在的目录时会报错,我们还可以构建一个长度大于$cfg_soft_dir的任意目录,让他爆出绝对路径.如访问?activepath=/st0pst0pst0pst0pst0pst0pst0pst0p结果如图5然后看了一下DedeCMS V5.3.1和最新的DedeCMS V5.5正式版,发现这两个版本对.进行了处理,而且只会列出目录和一些允许显示的文件,PHP是不能显示了include/dialog/select_soft.php<?phprequire_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 = '';}?>如构造?activepath=/st0pst0pst0pst0pst0pst0pst0pst0p可以爆出绝对路径构造?activepath=/include/FCKeditor可以浏览此目录下的文件,当然你也可以跳到别的目录,但长度一定要大于设置中的目录.不过前提是你要登陆下才能利用,这个就显得有点鸡肋了.杰少说要是在爆一个注入漏洞就完美了.嘎...另外一些低版本的DEDECMS访问这个页面的时候会直接跳过登陆验证,直接显示,而且还可以用/././././././././掉到根目录去.不过这些版本的访问地址有些不同.地址为?activepath=/././././././././嘿嘿,最后发现include\dialog\目录下的另外几个文件都存在同一个问题,只是默认设的目录不同.有些可以查看HTML这些文件哦..存在相同问题的文件还有include\dialog\select_images.phpinclude\dialog\select_media.phpinclude\dialog\select_templets.php

以上内容均来自互联网,本站仅提供自然搜索结果,与内容出处无关。
  如有侵犯你的个人权益问题,并提供书面证明,请联系本站处理相关事宜!

本文引用网址:

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1978130638@qq.com ,  QQ