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

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

缺陷编号:wooyun-2014-051266

漏洞标题:EasyTalk 提升用户为管理员漏洞

相关厂商:nextsns.com

漏洞作者: xfkxfk

提交时间:2014-02-18 11:19

修复时间:2014-05-19 11:20

公开时间:2014-05-19 11:20

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

EasyTalk 提升用户为管理员漏洞

详细说明:

在用户基本信息修改处,存在设计缺陷,导致EasyTalk提升自己为管理员,而且还能无限增加自己的粉丝等啊!
来看看漏洞所在文件:
/Home/Lib/Action/SettingAction.class.php

//保存设置
public function doset() {
$user=M('Users');
$data=array();

$userdata=$_POST['user'];
$userdata['nickname']= daddslashes(clean_html(trim($userdata["nickname"])));
$userdata['provinceid']=intval($userdata['provinceid']);
$userdata['cityid']=intval($userdata['cityid']);
$userdata['user_info']= daddslashes(trim(htmlspecialchars($userdata['user_info'])));
if(!preg_match('/^[0-9a-zA-Z\xe0-\xef\x80-\xbf_-]+$/i',$userdata['nickname'])) {
echo json_encode(array('res'=>'error','tips'=>L('setting2')));
exit;
}
if (!$userdata['nickname'] || !$userdata['provinceid'] || !$userdata['cityid']) {
echo json_encode(array('res'=>'error','tips'=>L('setting1')));
exit;
}
if ($userdata['qq'] && !is_numeric($userdata['qq'])) {
echo json_encode(array('res'=>'error','tips'=>L('qqiserror')));
exit;
}
if ($userdata['msn'] && count(explode('@',$userdata['msn']))==1) {
echo json_encode(array('res'=>'error','tips'=>L('msniserror')));
exit;
}
//昵称检测
if ($userdata['nickname'] && $userdata['nickname']!=$this->my['nickname']) {
if (StrLenW($userdata['nickname'])<=12 && StrLenW($userdata['nickname'])>=3) {
$newnickname=$user->where("nickname='$userdata[nickname]'")->find();
if ($newnickname) {
echo json_encode(array('res'=>'error','tips'=>L('setting4')));
exit;
} else {
M('Atusers')->where("atuname='".$this->my['user_name']."'")->setField('atnickname',$userdata['nickname']);
}
} else {
echo json_encode(array('res'=>'error','tips'=>L('setting2')));
exit;
}
}
$user->where("user_id='".$this->my['user_id']."'")->data($userdata)->save();
$this->finishprofile();
echo json_encode(array('res'=>'success','tips'=>L('setting3')));
}


这里只是通过循环接收数字中的数据的,没有进行限制,所以我们可以任意添加字段及内容。

漏洞证明:

来看看新注册的用户的信息:

1.png


我们来设置新注册用户222222的基本信息,我们添加了两个字段isadmin和followme_num。
构造如下:

2.png


返回success,说明修改成功啦。
来看看用户222222的信息:

3.png


此时新注册用户222222已经是管理员了,粉丝数已经被修改了。

4.png

修复方案:

控制可被修改的字段

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-02-18 12:38

厂商回复:

已经修复

最新状态:

暂无