漏洞概要
关注数(24)
关注此漏洞
漏洞标题:PHPCMS设计缺陷可重置前台任意用户密码
提交时间:2015-11-06 12:39
修复时间:2015-12-17 14:48
公开时间:2015-12-17 14:48
漏洞类型:设计缺陷/逻辑错误
危害等级:中
自评Rank:10
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情
披露状态:
2015-11-06: 细节已通知厂商并且等待厂商处理中
2015-11-06: 厂商已经确认,细节仅向厂商公开
2015-11-09: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航)
2015-12-31: 细节向核心白帽子及相关领域专家公开
2016-01-10: 细节向普通白帽子公开
2016-01-20: 细节向实习白帽子公开
2015-12-17: 细节向公众公开
简要描述:
验证逻辑设计缺陷.
详细说明:
\phpcms\modules\member\index.php:
通过用户名找回密码方式存在设计缺陷。找回密码流程可分作三步来看:
步骤1: 客户端提交用户名,服务端在数据库中查询记录,如果存在此用户就在session中保存用户身份信息;
步骤2: 生成验证码并保存在session,然后将验证码发往用户注册邮箱;
步骤3: 服务端将客户端提交的验证码与session中保存的进行比对,验证通过后重置用户密码。
从代码中可以看到验证码没有绑定用户身份,这样就导致可以使用用户A的验证码来重置用户B的密码。
使用用户A(可控账户)走正常密码找回流程来获取验证码,但不使用,然后再使用用户B(要攻击的账户)走步骤1,接着跳过步骤2使用前面获取到的验证码直接走步骤3,就能重置用户B的密码了。
漏洞证明:
http://**.**.**.**/index.php?m=member&c=index&a=public_get_password_type
选择“通过用户名找回密码”
输入自己的账户获取验证码:
回到第一步输入要重置的用户名:
使用前边获取的验证码直接重置密码:
登录成功:
修复方案:
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:7
确认时间:2015-11-06 14:17
厂商回复:
感谢发现
最新状态:
暂无