Skip to main content

任意用户注册

1 验证码可爆破#

漏洞描述:

短信验证码一般由4位或者6位数字组成,若服务器未对验证时间,次数进行限制,则存在被爆破成功的可能性。

漏洞案例:

同:/任意用户登录/验证码可爆破

2 验证码未做绑定#

漏洞描述:

当注册时使用手机验证码进行注册,若服务器只校验验证码是否正确但是没有校验当前验证码与当前手机号是否绑定,就可能导致用户使用自己的验证码去注册他人账户的情况。

漏洞案例:

同:/任意用户登录/验证码未做绑定

3 验证码回显#

漏洞描述:

注册时用户点击获取验证码功能点时,服务器响应的同时把具体验证码回显到返回包中。

漏洞案例:

同:/任意用户登录/验证码回显

4 账户重复注册#

漏洞描述:

开发人员在设计注册模块时,没有对账号的唯一性进行校验,从而导致注册多个相同账号,从而导致一个账户拥有多个密码

5 跳过验证步骤#

漏洞描述:

开发人员在开发注册模块是,对使用者进行注册操作时没有做严格的检验机制,从而导致绕过注册。 一般注册的步骤有2-4步,总体上都是先去校验验证码是否正确,再去执行下一步。 我们可以通过修改返回包的响应结果,从而完成下一步注册步骤。

漏洞案例:

测试网站重置密码页面 输入手机号和图片验证码,点击下一步

进入第2步验证身份环节

此时直接输入第3步重置密码的url可直接绕过验证身份步骤进入密码重置环节

输入新密码后点击下一步,发现直接密码重置成功

使用新密码成功登录系统

6 用户名覆盖#

漏洞描述:

渗透测试时,可以能存在这类情况:数据库中已经有一个用户名叫做a了,但是一个新用户注册了账号,新用户的用户名也叫a,但是开发人员并没有对重复的用户名进行提示,而是直接将数据插入数据库,导致老用户的用户名被覆盖了

7 批量用户注册#

漏洞描述:

脚本批量注册造成服务器dos应用层攻击,影响网站的正常使用,通常由于上边无验证码或者验证码不安全导致可以写脚本来进行批量注册

漏洞案例:

打开yakit获取注册包

存在验证码使用Yakit验证码识别工具对验证码进行识别 批量注册完成

note

漏洞修复方案

禁止服务器返回验证码在返回包中 校验用户传入的验证码与当前手机号是否绑定,而不是只单独校验验证码是否正确 设置验证码失效时间并设置验证码尝试次数过多失效 在设计数据库时,设置字段的唯一性,在代码逻辑层面去判断当前用户注册的用户名是否存在 在调用注册步骤接口时,每个接口步骤设置鉴权逻辑