[典型漏洞分享]YS忘记密码机制设计存在缺陷,导致任意用户口令均可被修改【高】

记录了安全测试过程中发现的一些典型的安全问题

YS忘记密码机制存在缺陷,可导致任意用户口令被修改【高】

问题描述:

         YS网站提供用户密码修改功能,当用户忘记密码时可通过该功能找回密码,但该修改密码的流程存在如下问题:

1、  手机验证码过短(只有4位且为纯数字),很容易被暴力破解。

2、  只单纯通过手机验证码来判断用户的真伪,在输入手机验证码后直接在页面上进行密码修改,而不是采用更安全的多重认证的方式。

测试步骤:

1、  安装burp并启动http请求拦截功能。

2、  打开YS首页,选择“修改密码”,如图:

clip_image002

3、  在修改密码对话框中输入一个要修改密码的用户名,如下图所示:

clip_image004

4、  点击“下一步”,弹出输入手机验证码的对话框,任意输入一个错误的验证码,并提交,burp将抓到用于向用户手机发送验证码的http请求,同时将该请求发送到burprepeater,待后面进行重放,如图:

clip_image006

clip_image008

5、  使用burprepeater功能对该http进行多次重放,每次均修改checkcode的值,由于checkcode4位纯数字,范围为1-9999,故使用自动化的方式(比如burpintruder功能)可进行暴力破解,进而获得用户的checkcode,如下图所示:

clip_image010

6、  在手机验证码的对话框中重新输入暴力破解出来的正确的checkcode,即可在当前页面上对用户的密码进行修改!

clip_image012

clip_image014

clip_image016

问题扩展:

         结合自动化方法,攻击者即可修改YS任意用户的密码。

解决建议:

1、  用户提交手机验证码的请求不需要带上手机号和用户名等信息,可以直接通过cookie从数据库查询,避免被恶意篡改。

2、  为手机验证码提供放暴力破解机制,即如果尝试3次提交手机验证码错误,则立马让该手机验证码失效,此外,正常情况下,手机验证码最初有效期为半个小时。

3、  当用户密码被修改时或者用户异地登录时应给予登录或手机提醒。

posted on 2014-12-23 13:08  Fish_Ou  阅读(597)  评论(0编辑  收藏  举报