[典型漏洞分享]功能逻辑缺陷,不需要旧手机号码即可绑定新手机号码【高】

YS修改用户绑定手机号码功能存在逻辑绕过漏洞,不需要旧手机号码即可绑定新手机号码【高】

问题描述:

         此问题可作为以上横向越权漏洞问题的延伸,假设横向漏洞已修补,用户登录后的随机session id是作为用户身份的唯一标识,此时,用户虽然无法修改其他人的手机绑定号码,却可以修改自己绑定的手机号码,即不需要旧手机号也能重新绑定新的手机号。

测试步骤:

1、  开启burp拦截代理,并启用http请求拦截功能。

2、  假设测试账户当前绑定的手机号码如下图所示:

clip_image002

3、  在“用户注册”界面使用一个未注册的账户向一个未绑定的手机号码发送验证码,未绑定号码可受用户任意指定,如图:

clip_image004

4、  使用burp拦截请求修改绑定号码的http请求,并在该请求中输入以上未绑定的手机号码和对应的验证码,并假设此时session id字段是标识用户身份的唯一标识,而AS_UserID字段不起作用,如图:

clip_image006

5、  点击发送该请求,服务器响应显示成功,如图:

clip_image008

6、  刷新测试账户信息,可以看到账户绑定的号码已经变更,如图:

clip_image010

问题扩展:

         如果攻击者通过某种方式(比如XSS攻击)获取了用户的cookie,那么就可以使用这种方式修改绑定手机,接着使用“忘记密码”功能修改用户的密码。

解决建议:

1、  在验证旧手机过程中不要传递手机号,直接通过数据库查询,防止被非法篡改。

2、  为避免多阶段的逻辑漏洞,旧手机号短信验证码和新手机号在一个http请求内提交到服务器。

posted on 2014-12-24 12:42  Fish_Ou  阅读(907)  评论(0编辑  收藏  举报