|
|
| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | | ||||
|
|
||||||||
|
||||||||
|
|||||
| MolyX Board原代码泄露漏洞 | |||||
作者:angel 文章来源:4ngel.net 点击数: 更新时间:2005-1-29 ![]() |
|||||
|
前言 MolyX Board(以下简称MXB)是 MolyX Studios 小组(好象就是CNVBB小组)开发的PHP论坛程序,MXB 融合了众多论坛程序的优点,博采众长,功能强大。多年的论坛程序汉化和改进经验也使 MXB 更适合国人的使用习惯。不过漏洞是难免的。 受影响系统 MolyX Board 2.0 MolyX 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,不得不惊叹该小组的体贴用户的程度。很多功能的确如介绍所说:博采众长,功能强大。速度是慢了一点。特别是后台。不过我觉得一个好的论坛。不能从多出那零点几秒的运行时间而否定它的。 |
|||||
| 文章录入:IceRiver 责任编辑:IceRiver | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!) |
| 关于我们 - 版权声明 - 帮助(?) - 广告服务 - 联系我们 - 友情链接 - 用户注册 - | Powered by ICE RIVER - STUDIO |
| » CnXHacker.CoM | © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved. |