找回密码
 注册
【阿里云】2核2G云新老同享 99元/年,续费同价华为云精选云产品特惠做网站就用糖果主机Jtti,新加坡服务器,美国服务器,香港服务器
查看: 594|回复: 3

[转贴]MolyX Board原代码泄露漏洞(不小心搜到的)

[复制链接]
发表于 2005 年 1 月 29 日 16:37:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
MolyX Board原代码泄露漏洞
本文作者:angel
文章性质:原创
发布日期:2005-01-27
前言
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");
  }
}



如果我们访问一个附件:


                               
登录/注册后可看大图



这个attachment.php就会老老实实服务器上的1105910809.gif文件的内容返回到浏览器上。后面的filename只是上传时的文件名字。这个变量不用管,如果我们发送一个请求。构造attach变量为“./../../../../../../includes/config.php”:


                               
登录/注册后可看大图



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,不得不惊叹该小组的体贴用户的程度。很多功能的确如介绍所说:博采众长,功能强大。速度是慢了一点。特别是后台。不过我觉得一个好的论坛。不能从多出那零点几秒的运行时间而否定它的。

[s:21]
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
 楼主| 发表于 2005 年 1 月 29 日 16:48:01 | 显示全部楼层
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价
MolyX Board 2.1.1 个人用户正式版 - 最后更新 2005-01-27 16:15

应该没事了
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

发表于 2005 年 1 月 29 日 16:51:09 | 显示全部楼层
帮你顶了
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

 楼主| 发表于 2005 年 1 月 29 日 16:37:59 | 显示全部楼层

[转贴]MolyX Board原代码泄露漏洞(不小心搜到的)

MolyX Board原代码泄露漏洞
本文作者:angel
文章性质:原创
发布日期:2005-01-27
前言
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");
  }
}



如果我们访问一个附件:


                               
登录/注册后可看大图



这个attachment.php就会老老实实服务器上的1105910809.gif文件的内容返回到浏览器上。后面的filename只是上传时的文件名字。这个变量不用管,如果我们发送一个请求。构造attach变量为“./../../../../../../includes/config.php”:


                               
登录/注册后可看大图



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,不得不惊叹该小组的体贴用户的程度。很多功能的确如介绍所说:博采众长,功能强大。速度是慢了一点。特别是后台。不过我觉得一个好的论坛。不能从多出那零点几秒的运行时间而否定它的。

[s:21]
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|金光论坛

GMT+8, 2024 年 11 月 18 日 19:30 , Processed in 0.110816 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表