黑基网 首页 学院 网络安全 查看内容

MolyX Board原代码泄露漏洞

2005-1-29 07:42| 投稿: security

摘要: 作者:angel 来源:http://www.4ngel.net/ 前言MolyX Board(以下简称MXB)是 MolyX Studios 小组(好象就是CNVBB小组)开发...
作者:angel 来源:http://www.4ngel.net/ 前言MolyX Board(以下简称MXB)是 MolyX Studios 小组(好象就是CNVBB小组)开发的PHP论坛程序,MXB 融合了众多论坛程序的优点,博采众长,功能强大。多年的论坛程序汉化和改进经验也使 MXB 更适合国人的使用习惯。不过漏洞是难免的。 受影响系统MolyX Board 2.0MolyX Board 2.1 详细attachment.php缺乏对attach变量进行检查,导致远程攻击者可以构造这个变量访问该服务器上允许访问的存在的文件。 文件其中一段代码: function showattachment(){  global $DB, $forums, $_INPUT, $bbuserinfo, $bboptions;  $forums->noheader = 1;  if (!$_INPUT['u'] OR !$_INPUT['attach']) {    $forums->func->standard_error("cannotviewattach");  }  if (!$bbuserinfo['candownload']) {    $forums->func->standard_error("cannotdownload");  }  $path = $bboptions['uploadfolder'] . '/' . implode('/', preg_split('//', intval($_INPUT['u']), -1, PREG_SPLIT_NO_EMPTY));  $file = $path."/".$_INPUT['attach'];  if ( file_exists( $file ) AND ( $forums->cache['attachmenttype'][ $_INPUT['extension'] ]['mimetype'] != "" ) ) {    $DB->shutdown_query("UPDATE ".TABLE_PREFIX."attachment SET counter=counter+1 WHERE attachmentid=".intval($_INPUT['id'])."");    @header('Cache-control: max-age=31536000');    @header('Expires: ' . gmdate("D, d M Y H:i:s", TIMENOW + 31536000) . ' GMT');    @header( 'Content-Type: '.$forums->cache['attachmenttype'][ $_INPUT['extension'] ]['mimetype'].'' );    @header( 'Content-Disposition: inline; filename='.$_INPUT['filename'].'' );    @header( 'Content-Disposition: inline; filename='.$_INPUT['filename'].'' );    @header( 'Content-Length: '.(string)(filesize( $file ) ).'' );    $fh = fopen( $file, 'rb' );     fpassthru( $fh );    @fclose( $fh );    exit();  } else {    $forums->func->standard_error("cannotviewattach");  } } 如果我们访问一个附件: /UpLoadFiles/NewsPhoto/lename=1.gif 这个attachment.php就会老老实实服务器上的1105910809.gif文件的内容返回到浏览器上。后面的filename只是上传时的文件名字。这个变量不用管,如果我们发送一个请求。构造attach变量为“./../../../../../../includes/config.php”: /UpLoadFiles/NewsPhoto/lename=1.gif attachment.php文件也会按照正常流程把config.php的内容输出到浏览器。这样MYSQL的连接信息什么都出来了。“../”的个数视目录结构而定。如果“/etc/pass”可读的话,也可以读出该文件的内容。剩下的该怎么做就怎么做了。我制造一把刀不是为了让你去杀人。 解决办法attachment.php这个文件中,showattachment(),showthumb()函数都是这样的,所以我们都给它过滤一下,搜索两处: $file = $path."/".$_INPUT['attach']; 然后改为: $_INPUT['attach'] = str_replace("/", "", substr($_INPUT['attach'], strrpos($_INPUT['attach'], '/')));$file = $path."/".$_INPUT['attach']; 本来想检查扩展如果不是attach就停止的。可是后来了解到这个论坛如果是图片就不改扩展。不是图片就改成.attach的扩展。所以还是用上面的比较高效一点。呵呵…… 后记第一次见MolyX Board,不得不惊叹该小组的体贴用户的程度。很多功能的确如介绍所说:博采众长,功能强大。速度是慢了一点。特别是后台。不过我觉得一个好的论坛。不能从多出那零点几秒的运行时间而否定它的。  
小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论


新出炉

返回顶部