漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2016-0170832
漏洞标题:木蚂蚁重置任意用户密码
相关厂商:mumayi.com
漏洞作者: 呆呆狗
提交时间:2016-01-18 14:53
修复时间:2016-01-28 09:54
公开时间:2016-01-28 09:54
漏洞类型:设计缺陷/逻辑错误
危害等级:中
自评Rank:10
漏洞状态:厂商已经修复
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2016-01-18: 细节已通知厂商并且等待厂商处理中
2016-01-18: 厂商已经确认,细节仅向厂商公开
2016-01-28: 厂商已经修复漏洞并主动公开,细节向公众公开
简要描述:
木蚂蚁用户中心找回密码-重置用户密码
邮箱收到的重置密码链接加密方式过于简单,可以自己片接,从而实现重置任意用户密码
详细说明:
本来想找回自己的密码。
发现前面有个uid参数,后面是个base64值,然后我想如果能够模拟后面的base64就可以充值任意用户的密码了。
然后我base64_decode了下结果为 :13930|1453091166
居然可以直接得到有效信息。那么如果我能够知道uid对应的后面两个值就可以了。
13930|1453091166解析
第一个参数暂时不知道代表什么,第二个参数一看就是时间戳。
然后我又发了第二封找回密码给自己,解析出来的值是:
13931|1453091236
第一个参数加了1 ,我想应该是找回密码表的主键id把,因为前面已经有uid了
然后我发第三封,验证是不是
13932|1453091296
基本可以肯定为找回密码表的主键id 了
我想这个时候如果uid为1的用户点击了找回密码那么
模拟uid=1的找回密码的链接
就是这个地址了。
于是我点击网上的uid找回密码,蛋疼需要找到管理员邮箱地址才可以
有一段是*号,于是我有测试了我自己的账号
发现中这个型号代替的部分是动态的,就是说我这里可以知道邮箱地址的真实长度。
然后我再选择邮箱找回,输入错误会提示邮箱不存在。
这样我就可以用程序遍历了,遍历3位数还是很快的。懒得遍历随便猜了下 uid=1的 邮箱a***n@9495.com 应该是admin@9495.com不行我就遍历。测试了下 邮箱地址正确了。
这个时候再用uid找回(我需要新跟自己发一封邮件因为我要知道base64参数的那个递增值)
提示操作成功了
模拟url链接重置密码:
得到地址,然后我访问 发现居然不行。那么就只有一个可能,第二个时间参数参与了判断,
我必须知道数据对应记录时间,于是我又注册了个账号。(2个账号a,b)
我用a输入邮箱找回密码
然后重复操作数据admin@9495.com邮箱 找回密码
然后用b输入邮箱找回密码
然后解析a账号和b账号的base64 得到两者的时间戳,
b的时间戳-a的时间戳=admin@9495.com操作时间戳区间
然后遍历
得到结果
确定了时间戳
uid,主键id,时间戳3个参数都有了 于是重新生成重置密码的链接,访问ok
后面的就没继续操作了
漏洞证明:
修复方案:
1 增加加密的复杂度
2 修改用户邮箱信息加密方式
版权声明:转载请注明来源 呆呆狗@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:10
确认时间:2016-01-18 15:59
厂商回复:
感谢反馈,技术蚂蚁已经在处理
最新状态:
2016-01-25:已经修复完毕,非常感谢
2016-01-28:非常谢谢,反馈的安全问题,我们技术已打上安全补丁。