SugarCRM邮件附件任意文件上传漏洞

受影响系统:

SugarCRM Inc. Sugar CRM 5.2.0e

描述:


BUGTRAQ  ID: 35361

SugarCRM是开源的客户关系管理系统。

SugarCRM的Compose Email部分允许发送带有附件的邮件。在指定文件名时,会调用一个验证例程:

function safeAttachmentName($filename) {
    global $sugar_config;
    $badExtension = false;
    //get position of last "." in file name
    $file_ext_beg = strrpos($filename, ".");
    $file_ext = "";
    //get file extension
    if($file_ext_beg > 0) {
        $file_ext = substr($filename, $file_ext_beg + 1);
    }
    //check to see if this is a file with extension located in "badext"
    foreach($sugar_config[‘upload_badext’] as $badExt) {
        if(strtolower($file_ext) == strtolower($badExt)) {
            //if found, then append with .txt and break out of lookup
            $filename = $filename . ".txt";
            $badExtension = true;
            break; // no need to look for more
        } // if
    } // foreach
    return $badExtension;
}

这个例程检查文件扩展名是否在黑名单中,如果是则向文件名添加.txt扩展名,但这里存在一个编码错误:函数假设文件名(不包括扩展名)至少为一个字符长。这个假设源自以下语句:

if($file_ext_beg > 0)

如果将文件名设置为.php,就可以绕过检查,扩展名被认定为为空。由于空的扩展名不在黑名单中,因此不会对文件名附加任何扩展名。在这个检查后会在文件系统上创建<id><filename>形式的文件,其中id是字母组成的字符串。

<*来源:Francesco Ongaro (ascii@ush.it
  
  链接:http://secunia.com/advisories/35445/
        http://marc.info/?l=bugtraq&m=124508501909361&w=2
*>

测试方法:


警 告

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

http://www.example.com/cache/modules/Emails/abf7c77b-2f71-8071-63ba-4a131068e9a2/6e25aba0-9dc4-2a57-8bae-4a1317b35d47.php

建议:


厂商补丁:

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

http://www.sugarcrm.com/crm/

发表评论?

0 条评论。

发表评论