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

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

缺陷编号:wooyun-2015-0114545

漏洞标题:Mao10cms最新版本可遍历所有用户id致可CSRF提升自己为管理员

相关厂商:mao10.com

漏洞作者: 路人甲

提交时间:2015-05-18 10:23

修复时间:2015-08-16 15:52

公开时间:2015-08-16 15:52

漏洞类型:CSRF

危害等级:中

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

Mao10cms最新版本可遍历所有用户id致可CSRF提升自己为管理员
测试版本为官方最新版Mao10CMS V3.3.4

详细说明:

看到这个 WooYun: Mao10cms最新版本存在CSRF越权导致管理员发表文章 ,我也来个CSRF,这容易实现,给管理员发条站内信或者留言说自己的商品或网站有问题了,求帮助。热心的管理员就点链接啦。
要提升自己为管理员,首先要知道自己的id,mao10cms可以这样获得自己的id,并且可以遍历所有用户(包括管理员)的用户名及id(无需登陆)。
在查看商品时,访问链接http://localhost/index.php?m=pro&c=index&a=single&id=1,只要把id从1开始加1遍历就可以得到所有用户(包括管理员)的用户名及id,如图,以管理员为例

查看用户用户名及id副本.jpg


知道了自己的id,那就可以通过CSRF来提升自己为管理员了。
Mao10cms在后台修改用户权限时没有对token或referer进行处理,可以CSRF
看看代码吧

public function manage($page=1){
if(is_numeric($page)) {
if(mc_user_id()) {
if(mc_is_admin()) {
if(is_numeric($_POST['user_level']) && is_numeric($_POST['user_id'])) {
if($_POST['user_id']==mc_user_id()) {
$this->error('您不能修改自己的身份!',U('Control/index/manage'));
} else {
mc_update_meta($_POST['user_id'],'user_level',$_POST['user_level'],'user');
$this->success('修改用户身份成功!');
};
} else {
$this->page = M('page')->where("type='user'")->order('id desc')->page($page,mc_option('page_size'))->select();
$count = M('page')->where("type='user'")->count();
$this->assign('count',$count);
$this->assign('page_now',$page);
$this->theme('admin')->display('Control/manage');
}
} else {
$this->error('您没有权限访问此页面!');
};
} else {
$this->success('请先登陆',U('User/login/index'));
};
} else {
$this->error('参数错误!');
}
}


POC如下:

POC.JPG


修改过程:

执行的语句副本.jpg


修改成功:

成功副本.jpg

漏洞证明:

见 详细说明

修复方案:

token
referer

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2015-05-18 15:50

厂商回复:

感谢指正

最新状态:

暂无