phpBB Group phpBB2任意文件删除漏洞


添加时间:
2005-08-18

系统编号:
WAVDB-00571
BugCVE: CAN-2005-0258

影响版本:
phpBB 2.0.11

程序介绍:

phpBB Group phpBB2是一款开放源代码PHP论坛程序。

漏洞分析:

phpBB2对用户提交的URL输入缺少充分过滤,远程攻击者可以利用这个漏洞以WEB进程权限删除系统任意文件。 
由于多个缺陷的组合允许攻击者控制传递给unlink()调用的参数,导致删除系统文件。第一个缺陷存在于avatar gallery中,用户允许指定所需avatar的目录名部分,不过由于对 /../ 字符缺少充分过滤,可允许用户脱离avatar目录限制。
问题代码如下:

 
  1. if (  
  2.  file_exists(@phpbb_realpath($board_config['avatar_gallery_path']   
  3.         . '/' . $avatar_filename)) && ($mode == 'editprofile') )  
  4.      {  
  5.              $return =  , user_avatar = '  . str_replace( /' ,  '' ,   
  6.                 $avatar_filename) .  ', user_avatar_type =   .   
  7.                 USER_AVATAR_GALLERY;  
  8.      }  
Avatar然后由如下代码调用:
 
  1. $avatar_img = ( $board_config['allow_avatar_local'] ) ? '  
  2.   
  3.    . $board_config[' _fcksavedurl= '  
  4.   
  5.    . $board_config['avatar_gallery_path'] . '/' .   
  6.    $profiledata['user_avatar'] . '  alt=   border= 0  />' : '';  
当一个avatar值被删除时会调用unlink()函数,但由于这个函数也存在一个目录遍历问题,因此通过提交大量 /../ ,攻击者借此可以删除 系统任意文件,usercp_register.php脚本中存在如下受影响代码:
 
  1. if ( @file_exists(@phpbb_realpath('./' .  
  2. rd_config['avatar_path']   
  3.    . '/' . $userdata['user_avatar'])) )  
  4. {  
  5.     @unlink(@phpbb_realpath('./' . $board_config['avatar_path'] .  
  6.   
  7.     . $userdata['user_avatar']));  
  8. }  
 攻击者可以修改来自gallery的 avatarselect 返回值指向要删除的文件,可导致以WEB进程权限删除任意文件。

解决方案:
临时解决方法:
如果您不能立刻安装补丁或者升级,建议您采取以下措施以降低威胁:
 * 关闭gallery avatars功能。

厂商补丁:
phpBB Group
-----------
 目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载phpBB 2.0.12版本:
http://www.phpbb.com/downloads.php

信息来源:
<*来源:iDEFENSE Security Advisory (labs@idefense.com)
         AnthraX101 (AnthraX101@gmail.com)
   链接:www.idefense.com/application/poi/display?id=205
 *>