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

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

缺陷编号: WooYun-2014-57371

漏洞标题: Easytalk垂直权限问题(逻辑漏洞可提权getshell)

相关厂商: nextsns.com

漏洞作者: Ano_Tom认证白帽子

提交时间: 2014-04-17 10:50

公开时间: 2014-07-16 10:50

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

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

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

Tags标签: 无

6人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-04-17: 细节已通知厂商并且等待厂商处理中
2014-04-18: 厂商已经确认,细节仅向厂商公开
2014-04-21: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2014-06-12: 细节向核心白帽子及相关领域专家公开
2014-06-22: 细节向普通白帽子公开
2014-07-02: 细节向实习白帽子公开
2014-07-16: 细节向公众公开

简要描述:

Easytalk处理用户数据的时候未足够过滤,导致可以进行权限提升

详细说明:

晚上习惯性的打开代码分析分析函数,看到了这样一处

漏洞文件:

/Easytalk/Home/Lib/Action/GuideAction.class.php

code 区域
//保存设置,注册用户时候,向导保存设置
public function doset() {
$user=M('Users');
$userdata=$_POST["user"];//获取用户提交的所有数据
// ok,此处的用户userdata数据是来自post的,而并未过滤一些敏感字段

$userdata["nickname"]= daddslashes(strip_tags(trim($userdata["nickname"])));
$userdata['provinceid']=intval($userdata['provinceid']);
$userdata['cityid']=intval($userdata['cityid']);
$userdata['user_info']= daddslashes(trim(htmlspecialchars($userdata['user_info'])));
// 过滤nickname
if(!preg_match('/^[0-9a-zA-Z\xe0-\xef\x80-\xbf._-]+$/i',$userdata['nickname'])) {
setcookie('setok', json_encode(array('lang'=>L('setting2'),'ico'=>2)),0,'/');
header('location:'.SITE_URL.'/?m=guide');
exit;
}

if (!$userdata['nickname'] || !$userdata['provinceid'] || !$userdata['cityid']) {
setcookie('setok', json_encode(array('lang'=>L('setting1'),'ico'=>2)),0,'/');
header('location:'.SITE_URL.'/?m=guide');
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) {
setcookie('setok', json_encode(array('lang'=>L('setting4'),'ico'=>2)),0,'/');
header('location:'.SITE_URL.'/?m=guide');
exit;
}
} else {
setcookie('setok', json_encode(array('lang'=>L('setting2'),'ico'=>2)),0,'/');
header('location:'.SITE_URL.'/?m=guide');
exit;
}
}
// var_dump($userdata);die;
$user->where("user_id='".$this->my['user_id']."'")->data($userdata)->save();
header('location:'.SITE_URL.'/?m=guide&a=followtopic');
}



漏洞代码,

$userdata=$_POST["user"];//获取用户提交的所有数据,然后进行了一些常规的检测之后,就执行了$user->where("user_id='".$this->my['user_id']."'")->data($userdata)->save();存入数据库了。

这样写的问题是,用户可以自己添加别的字段,而因为此cms管理员表跟普通用户表又在一个表里,(区分的标志是isadmin字段)因而可以造成权限提升



漏洞证明:

注册普通用户,然后来到设置向导里,拦截发送的请求

1.jpg



增加字段user%5Bisadmin%5D=1即可

2.jpg



查看结果

3.jpg



后台getshell不演示了,直接ucenter配置里添加一句话即可

getshell方法见

http://**.**.**.**/bugs/wooyun-2014-055812

修复方案:

对于获得的用户数据,我们应当这样,指定获得某个字段的值,

$data['nickname']=safe($_POST['user']['nickname']);然后进行save操作。还有将管理用户表跟普通用户表放在一起,很容易造成权限提升的问题,分开能避免很多。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-04-18 16:14

厂商回复:

感谢,已经修复了

最新状态:

暂无


漏洞评价:

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

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

评价

  1. 2014-04-17 13:35 | 果冻好吃 ( 路人 | Rank:22 漏洞数:11 | 大学通知书下来那天,我迫不及待的用四百块...)
    1

    占座

  2. 2014-07-16 10:54 | 铁蛋火车侠 ( 普通白帽子 | Rank:156 漏洞数:31 | Q群371620085 技术交流群 有漂亮妹纸!)
    1

    闪电! 南蛮入侵

  3. 2014-07-16 11:43 | Hero ( 普通白帽子 | Rank:145 漏洞数:43 | 药药切克闹,充气娃娃迷幻药)
    0

    杀一下

  4. 2014-07-16 13:59 | zhxs ( 实习白帽子 | Rank:69 漏洞数:26 | 不是你不行、只是路不平ฏ๎๎๎๎๎๎๎๎...)
    0

    膜拜..

  5. 2014-07-16 15:42 | 那个夏天骚年未老 ( 路人 | Rank:0 漏洞数:2 | 呵呵,呵,呵呵呵)
    0

    你给我挡着。。接着哦。。此计伤不到我。。

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