1.未验证邮箱/手机号
未验证邮箱/手机号的场景:目前很多应用为了方便用户记录自己的用户名和密码,都可以使用邮箱和手机号作为用户名。
因此,很多应用在注册的时候就要求用户填写,一般情况下,该应用都会发送激活信息,用户在收到激活信息后才能登录
然而,有时候开发人员并不去审核邮箱/手机号是否有效,所以可以利用该缺陷,任意注册账号
填写邮箱后,并没有在邮箱内发现任何激活信息,且可以直接把邮箱当作用户登录名使用
假设这个邮箱已经有人用了,就会导致这个邮箱可能有两个密码,两个密码都可以登录
2.批量注册
脚本批量注册造成服务器dos应用层攻击,影响网站的正常使用,通常由于上边无验证码或者验证码不安全导致可以写脚本来进行批量注册
案例:注册的时候进行bp抓包,然后对用户名进行爆破即可
因为无验证码或者验证码可以被绕过(太简单了),直接发送到intruder模块了,进行爆破,即可批量注册账号
3.个人信息伪造
若出现身份证信息注册,可任意构造绕过身份证与姓名
网站本身没有权限去验证你的身份证到底是对的还是错的,直接伪造一个大于18岁的就可以绕过防沉迷系统
4.前端验证审核绕过
任意填写注册信息,服务器会对注册信息进行审核,例如是否存在恶意标签等,通过返回状态给前端判断,一旦纂改该值就可以绕过
步骤如下:1.使用正常账号修改密码,获取验证码,验证码随便填一个
2.使用bp抓包,服务器会返回验证码错误之类的信息,但是我们可以使用正确的信息来进行替换(前提:我们正常修改过密码一次)
具体的测试方法和验证码前言验证同理,这里不再赘述
5.邮箱/手机号注册激活验证绕过
为防止恶意用户任意注册账户,大多数网站会在用户注册中输入邮箱/手机号后对其真实性进行验证,但有时候返回的验证码信息会直接隐藏在返回包中,只是不在前端显示出来,或者是可以通过抓包改包手机号/邮箱,伪造该信息,劫持到验证信息
以某验证信息返回为例,该漏洞是在发送验证信息时会将验证信息同时发送到返回包中并将其在前端用hidden属性隐藏,所以直接千吨啊源码查看即可
6.用户名覆盖
渗透测试时,可以能存在这类情况:数据库中已经有一个用户名叫做a了,但是一个新用户注册了账号,新用户的用户名也叫a,但是开发人员并没有对重复的用户名进行提示,而是直接将数据插入数据库,导致老用户的用户名被覆盖了
登录查看时却获取到数据库中同名用户的其他用户信息,导致其他用户信息泄露,或者由于验证用户名存在时,从前端获取到的数据与从数据库获取到的数据不同,但是往数据库中写入的时候却写了相同的部分
如图,admin用户有两个密码,可能就会导致admin用户被盗用