当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(15) 关注此漏洞

缺陷编号: WooYun-2014-61050

漏洞标题: Anymacro 邮件系统SQL注入漏洞和任意文件(邮件)删除(无需登录)

相关厂商: 北京安宁创新网络科技有限公司

漏洞作者: 路人甲

提交时间: 2014-05-16 18:54

公开时间: 2014-08-14 18:56

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org

Tags标签: 无

1人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-05-16: 细节已通知厂商并且等待厂商处理中
2014-05-17: 厂商已经确认,细节仅向厂商公开
2014-05-20: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2014-07-11: 细节向核心白帽子及相关领域专家公开
2014-07-21: 细节向普通白帽子公开
2014-07-31: 细节向实习白帽子公开
2014-08-14: 细节向公众公开

简要描述:

详细说明:



ANY_EMAIL

乌云已经把它列入到厂商当中了。

0x01 北京

anymacro是国内较流行的一家企业级邮箱系统,客户主要为教育/政府机构。

其中涉及客户较多。

从官网确认以下受影响:

运营级系统

中华人民共和国商务部

河北省网通

黑龙江省网通

内蒙古自治区铁通

抚顺市网通

企业级系统

苏宁电器集团

中远房地产

邯郸钢铁集团

铜牛针织集团

校园级系统

北京邮电大学

中国人民大学

东北大学

南昌大学

电 子 政 务

中国政协

济南市政府

天津市公安局

河北省高级人民法院

市民信箱系统

青岛市

东营市

石家庄市

宝鸡市





0x02 漏洞分析:

Anymacro 系统采用PHP语言来实现的,并GPC默认的情况下是关闭的,内部变量都是通过全局方式获取的,在某些文件处未进行任何过滤,导致产生SQL注入漏洞,一旦被攻击者利用,可获取内部邮件信息,更甚至直接可获取邮件系统权限(root)

在根目录当中/logout.php中

code 区域
<?php
/**
Explain:
新版邮件系统使用的用户退出程序,完成的内容是将用户的session清除,如果存在,不存在则不清除
直接退出
Author: wbl
Date: 2008-07-07
**/
require_once "config/config.php";
require_once "config/dbconfig.php";
require_once "include/dbfunc.php";

db_conn();

$email = $_COOKIE['ANY_EMAIL']; //从客户端直接获取cookie信息,
$sid = $_REQUEST['F_sid'];
//检查用户是否存在,如果不存在则直接退出
$sql = "SELECT maildir FROM user WHERE id = '$email'";//将客户端获取的cookie变量进行查询(这里没有gpc一说,因为他系统设置默认就是关的)
$rs = db_query($sql);
if ( db_num_rows($rs) == 0 ) {
userExit();
exit;
}
$row = db_fetch($rs);
$maildir = $row['maildir'];
$session_dir = "$maildir/$SESSION_DIR";
$session_file = "$session_dir/".$_REQUEST['F_sid'];
if ( file_exists("$session_file") ) {
@unlink($session_file);
unset($_COOKIE['ANY_EMAIL']);
unset($_COOKIE['F_SID']);
}



漏洞一: sql注入漏洞



这里sql注入效果如下:

给2个案例如下:

http://**.**.**.**

http://**.**.**.**

O(VRN3)TROR_0C@CPG`U}IQ.jpg



抓包sqlmap跑起来就出来了

M)VPE4F[}BR_{}_XF`X}}]J.jpg



漏洞二: 任意文件删除漏洞(包含邮件)

code 区域
$sid	= $_REQUEST['F_sid'];
//检查用户是否存在,如果不存在则直接退出
$sql = "SELECT maildir FROM user WHERE id = '$email'"; //这里一般选admin@+域名 都是存在的,例如admin@**.**.**.**,顾这里是可以通过验证的。
$rs = db_query($sql);
if ( db_num_rows($rs) == 0 ) {
userExit();
exit;
}
$row = db_fetch($rs);
$maildir = $row['maildir'];
$session_dir = "$maildir/$SESSION_DIR"; //$SESSION_DIR在config.php定义为默认值为session ; $maildir 为 /mail/**.**.**.**1/admin/Maildir ; 顾这里$session_dir为:/mail/**.**.**.**1/admin/Maildir/session
$session_file = "$session_dir/".$_REQUEST['F_sid']; //这里的$_REQUEST['F_sid']可控,导致$session_file整个可控。
if ( file_exists("$session_file") ) { //验证是否存在,一存在直接删除。。。(顾可删除任意人邮件,以及邮件系统源码等等。)
@unlink($session_file);
unset($_COOKIE['ANY_EMAIL']);
unset($_COOKIE['F_SID']);
}
userExit();
exit;



AJ%8N8G%H8JE5WL0QS{LR5U.jpg

漏洞证明:

M)VPE4F[}BR_{}_XF`X}}]J.jpg



修复方案:

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:14

确认时间:2014-05-17 11:38

厂商回复:

已经确定此漏洞,并且提供对应的升级包。开展升级工作

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2014-05-16 22:35 | wefgod ( 核心白帽子 | Rank:1825 漏洞数:183 | 力不从心)
    0

    又是伪“路人甲”提交的呢

  2. 2014-05-17 00:20 | pangshenjie ( 普通白帽子 | Rank:110 漏洞数:14 )
    0

    神奇的路人甲、

登录后才能发表评论,请先 登录