### 简要描述:
### 详细说明:
ANY_EMAIL
乌云已经把它列入到厂商当中了。
0x01 北京
anymacro是国内较流行的一家企业级邮箱系统,客户主要为教育/政府机构。
其中涉及客户较多。
从官网确认以下受影响:
运营级系统
中华人民共和国商务部
河北省网通
黑龙江省网通
内蒙古自治区铁通
抚顺市网通
企业级系统
苏宁电器集团
中远房地产
邯郸钢铁集团
铜牛针织集团
校园级系统
北京邮电大学
中国人民大学
东北大学
南昌大学
电 子 政 务
中国政协
济南市政府
天津市公安局
河北省高级人民法院
市民信箱系统
青岛市
东营市
石家庄市
宝鸡市
0x02 漏洞分析:
Anymacro 系统采用PHP语言来实现的,并GPC默认的情况下是关闭的,内部变量都是通过全局方式获取的,在某些文件处未进行任何过滤,导致产生SQL注入漏洞,一旦被攻击者利用,可获取内部邮件信息,更甚至直接可获取邮件系统权限(root)
在根目录当中/logout.php中
```
<?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://webmail.vanceinfo.com
http://sut.edu.cn
[<img src="https://images.seebug.org/upload/201405/16184932c1e51c2a9b94ae613473632cbf6c189d.jpg" alt="O(VRN3)TROR_0C@CPG`U}IQ.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201405/16184932c1e51c2a9b94ae613473632cbf6c189d.jpg)
抓包sqlmap跑起来就出来了
[<img src="https://images.seebug.org/upload/201405/1618501460dde614c380421510d22dd59c50796f.jpg" alt="M)VPE4F[}BR_{}_XF`X}}]J.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201405/1618501460dde614c380421510d22dd59c50796f.jpg)
漏洞二: 任意文件删除漏洞(包含邮件)
```
$sid = $_REQUEST['F_sid'];
//检查用户是否存在,如果不存在则直接退出
$sql = "SELECT maildir FROM user WHERE id = '$email'"; //这里一般选admin@+域名 都是存在的,例如admin@vanceinfo.com,顾这里是可以通过验证的。
$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/xxx.com1/admin/Maildir ; 顾这里$session_dir为:/mail/xxx.com1/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;
```
[<img src="https://images.seebug.org/upload/201405/161851146778de89f0199ba1a058db6e9b937667.jpg" alt="AJ%8N8G%H8JE5WL0QS{LR5U.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201405/161851146778de89f0199ba1a058db6e9b937667.jpg)
### 漏洞证明:
[<img src="https://images.seebug.org/upload/201405/1618501460dde614c380421510d22dd59c50796f.jpg" alt="M)VPE4F[}BR_{}_XF`X}}]J.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201405/1618501460dde614c380421510d22dd59c50796f.jpg)
暂无评论