Roundcube远程命令执行漏洞 绿盟科技发布安全威胁通告

简介:

2016年12月6日(当地时间),blog.ripstech.com网站发布了一条关于Roundcube远程命令执行漏洞的消息。在Roundcube1.2.2及其以前的版本中,deliver_message()函数在调用PHP内建函数mail()时的第5个参数可由用户控制且未经恰当过滤,mail()函数被调用后会使得PHP执行sendmail程序,而未经过滤的第5个参数允许对sendmail程序进行配置,从而使得sendmail程序将邮件流量保存在文件中,攻击者可以利用这个机制通过发送邮件将恶意PHP文件写入webroot目录。

相关链接地址如下:

https://blog.ripstech.com/2016/roundcube-command-execution-via-email/

Roundcube漏洞危害

成功利用漏洞后,可以导致远程命令执行。

什么是Roundcube?

Roundcube Webmail是一个基于浏览器,支持多国语言的IMAP客户端,操作界面看起像一个桌面应用程序。它提供一个e-mail客户端应该具备的所有功能包括MIME支持,地址薄,文件夹操作,信息搜索和拼写检查等。(引用自《百度百科》)

Roundcube漏洞影响范围

受影响的版本

  • Roundcube version 1.1.x < 1.1.7
  • Roundcube version 1.2.x < 1.2.3

不受影响的版本

  • Roundcube version 1.1.x = 1.1.7
  • Roundcube version 1.2.x = 1.2.3

Roundcube漏洞成因

该漏洞的成因是,函数deliver_message()在调用mail()函数时所传入的第5个参数未经恰当过滤,导致攻击者可以对sendmail程序进行配置从而保存邮件流量到文件中,进而使攻击者有机会将恶意PHP文件写入服务器的webroot目录中。触发漏洞的代码如下所示:

program/steps/mail/sendmail.inc

$from = rcube_utils::get_input_value(’_from’, rcube_utils::INPUT_POST, true, $message_charset);

⋮

$sent = $RCMAIL->deliver_message($MAIL_MIME, $from, $mailto,$smtp_error, $mailbody_file, $smtp_opts);

上述代码从POST参数中获取“_from”的值,并且将其作为第二个参数传入deliver_message()函数。

program/lib/Roundcube/rcube.php

public function deliver_message(&$message, $from, $mailto, &$error, &$body_file = null, $options = null) {

    ⋮

    if (filter_var(ini_get(‘safe_mode’), FILTER_VALIDATE_BOOLEAN))

        $sent = mail($to, $subject, $msg_body, $header_str);

    else

        $sent = mail($to, $subject, $msg_body, $header_str, “-f$from”);

而上述代码会把未经恰当过滤的参数传入mail()函数。

过滤失败的原因如下:

program/steps/mail/sendmail.inc

else if ($from_string = rcmail_email_input_format($from)) {

    if (preg_match(‘/(\S+@\S+)/‘, $from_string, $m))

        $from = trim($m1, ‘<>‘);

    else

        $from = null;

}

虽然上述代码对用户控制的参数进行了正则表达式匹配,对用户输入采取了过滤措施;然而该过滤措施只在rcmail_email_input_format()函数返回TRUE时才会被执行。下面看一下rcmail_email_input_format()函数的具体实现:

program/steps/mail/sendmail.inc

function rcmail_email_input_format($mailto, $count=false, $check=true)

{

    global $RCMAIL, $EMAIL_FORMAT_ERROR, $RECIPIENT_COUNT;

    // simplified email regexp, supporting quoted local part

    $email_regexp = ‘(\S+|(”[^“]+”))@\S+‘;

    ⋮

    // replace new lines and strip ending ‘, ‘, make address input more valid

    $mailto = trim(preg_replace($regexp, $replace, $mailto));

    $items  = rcube_utils::explode_quoted_string($delim, $mailto);

    $result = array();

    foreach ($items as $item) {

        $item = trim($item);

        // address in brackets without name (do nothing)

        if (preg_match(‘/^<‘.$email_regexp.‘>$/’, $item)) {

            $item     = rcube_utils::idn_to_ascii(trim($item, ‘<>‘));

            $result[] = $item;

        }

        ⋮

        else if (trim($item)) {

            continue;

        }

        ⋮

    }

    if ($count) {

        $RECIPIENT_COUNT += count($result);

    }

    return implode(‘, ‘, $result);

}

上述代码中的“if (preg_match(‘/^<‘.$email_regexp.‘>$/’, $item))”可以被攻击者有意构造的数据匹配失败,从而导致变量$result为空,这在if条件判断中相当于FALSE,从而导致前面提到的过滤被绕过,最终导致漏洞的发生。

Roundcube漏洞规避方案

官方已经发布了针对该漏洞的版本更新,建议用户升级到不受影响的最新版本,下载页面如下:

https://roundcube.net/download/

绿盟科技声明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。



原文发布时间:2017年3月24日 

本文由:绿盟科技 发布,版权归属于原作者

原文链接:http://toutiao.secjia.com/roundcube-remote-command-execution-vulnerability#

本文来自云栖社区合作伙伴安全加,了解相关信息可以关注安全加网站

相关文章
|
11月前
|
机器学习/深度学习 人工智能 算法
《C++与 ONNX:构建跨平台推理引擎的智慧融合》
本文探讨了如何在 C++ 中整合 ONNX 格式模型,实现跨平台部署。首先介绍了 ONNX 的重要性和跨平台部署的意义,然后详细阐述了整合 ONNX 模型到 C++ 推理引擎的步骤,包括模型解析、计算图构建、节点计算功能实现、内存管理和跨平台适配。最后讨论了性能优化、模型兼容性和开发复杂性等挑战及解决方案,并展望了未来的发展前景。
307 9
|
11月前
|
人工智能 自然语言处理 搜索推荐
科技云报到:澳门旅游局x百度智能云:打造懂游客的智能客服
科技云报到:澳门旅游局x百度智能云:打造懂游客的智能客服
480 8
|
网络安全 数据安全/隐私保护 异构计算
使用阿里云服务器实现内网穿透,ssh远程连接
使用阿里云服务器实现内网穿透,实现ssh远程连接
2497 0
使用阿里云服务器实现内网穿透,ssh远程连接
|
人工智能 自然语言处理 算法
【数据挖掘】使用移动平均预测道琼斯、纳斯达克、标准普尔指数——Python中的基本数据操作和可视化
本文将使用简单移动平均预测道琼斯、纳斯达克、标准普尔指数。 作为技术分析中⼀种分析时间序列的常⽤⼯具,常被应⽤于股票价格序列。移动平均可过滤⾼频噪声,反映出中⻓期低频趋势,辅助投资者做出投资判断。
【数据挖掘】使用移动平均预测道琼斯、纳斯达克、标准普尔指数——Python中的基本数据操作和可视化
|
存储 机器学习/深度学习 编解码
阿里云服务器4核8G配置可选实例规格详解及优惠价格表(2023年更新)
阿里云服务器4核8G配置多少钱?可选实例规格有哪些?根据阿里云公布的2023年新版收费标准及活动价格来看,阿里云服务器4核8G最低活动价格是75.06元3个月,年付最低1200.96元1年。阿里云服务器4核8G配置的可选的规格有18个,不同实例的价格有所不同,下面是4核8G配置可选实例规格详解及优惠价格表。
阿里云服务器4核8G配置可选实例规格详解及优惠价格表(2023年更新)
|
存储 弹性计算 固态存储
2023阿里云服务器一年价格(多配置CPU内存带宽系统盘报价)
阿里云服务器多少钱一年?阿里云服务器收费价格表2023新版报价,预算几百元、2000到5000元以及万元以上可以买到阿里云服务器配置
750 0
2023阿里云服务器一年价格(多配置CPU内存带宽系统盘报价)
《云上业务稳定性保障实践白皮书》——四. 变更管控体系——4.2 变更管控动作——4.2.1 准入
《云上业务稳定性保障实践白皮书》——四. 变更管控体系——4.2 变更管控动作——4.2.1 准入
345 0
RGB颜色模型
RGB颜色模型
823 0
RGB颜色模型
|
Windows
撤销与取消撤销快捷键
通常有时候需要撤销操作,或者撤销点快了要取消撤销。 记录下如何操作。
1651 0
|
人工智能 移动开发 自然语言处理
天猫精灵AliGenie-技能开发体验
以往,对于天猫精灵的理解,更多的是居于方糖音响产品。然而,它的语音交互功能才是王炸,尤其是在可以自定义交互语言的情况下!以下便是基于开发者平台展示的简单操作,此次展示的是作为个人使用,因此完全可以零基础操作。
1574 0
天猫精灵AliGenie-技能开发体验

热门文章

最新文章