频道栏目
首页 > 安全 > 网站安全 > 正文

分析DEDECMS 5.5 datalistcp.class.php 包含

2010-04-05 10:52:48      个评论      
收藏   我要投稿

www.st0p.org

老早就看到有人发的洞,一直想过写分析来着,最近一直呆在UBUNTU下安装东西。。老忘。。。
有时有些朋友加我,教他找洞。。。这个好似是个累活,而且运气占很大一部分。。。所以我还是尽量帮分析过程发出来吧,也方便我自己学习。
具体的EXP,请看:http://www.st0p.org/blog/archives/dedecms-5-5-datalistcp-class-php-contains-exp.html

以前呢,DEDECMS会把出错的SQL信息,写进mysql_error_trace.php,后来被大牛们爆出来了。就改名为mysql_error_trace.inc了。。。
没想到这次又被包含了。。。看来记录SQL信息也不是啥好事。。。

这个EXP的原理呢,是通过构造特殊的请求给plus/digg_ajax.php来达到写入我们的语句到mysql_error_trace.inc,当然可以满足我们这一步写入到mysql_error_trace.inc的文件还有不少。。不过想要执行他就不可能了。。然后这次报出的洞呢就是运气很好才能碰到的。。
关键代码存在于

/include/datalistcp.class.php

 

 ...
$codefile = (isset($needCode) ? $needCode : $cfg_soft_lang);
 
//通过isset函数检查$needCode是否已配置,如已配置则结果为$needCode,否则结果为$cfg_soft_lang
//当我们伪造结果为aa/../../../data/mysql_error_trace时
 
if(file_exists(DEDEINC./code/datalist..$codefile..inc))
 
{
 
 require_once(DEDEINC./code/datalist..$codefile..inc);
 //后缀是.inc
}
//检查文件是否存在,存在则包含。我们通过../成功跳转到到data目录,包含我们刚才构造过的mysql_error_trace.inc
//成功运行我们mysql_error_trace.inc在构造的语句。。。
...
 

郁闷,前几次想写分析的时候官方还没补呢。。刚去官方看了下通过正则进行了修补

 

 $codefile = (isset($needCode) ? $needCode : $cfg_soft_lang);
 
$codefile = preg_replace("/[w-]/", , $codefile);
 //通过正则过滤了。。。
if(file_exists(DEDEINC./code/datalist..$codefile..inc))
 
{
 
 require_once(DEDEINC./code/datalist..$codefile..inc);
 
}
 

相关TAG标签
上一篇:搜狐最新跨站漏洞
下一篇:再谈数据库下载攻防
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站