
按照正常流程将登录,注册,忘记密码接口过一遍,记录请求包和返回包特点并进行对比,例如正确输入,错误输入数据。
这都是些最基本的安全测试方法,实际工作中有更多的场景会遇到。
一~短信验证码问题
1~短信验证码4位,1万位可以轻松暴力破解。
2~短信验证码6位,100万位花点时间暴力破解。
3~短信验证码出现在返回包或前端页面中,明文直接利用,密文可以解一下密。
4~A手机号接收短信验证码,B手机号使用,没做校验。
5~短信验证码随意输入,或删除为空,也可以登录,服务端不校验正确与否。
6~短信验证码没有时效性,或时效性太长。
7~短信验证码不是一次性失效,回放后不变。
8~短信验证码可以不断重放,而不是60s获取一次。
9~不断替换手机号,可以给不同手机发送短信,绕过对单一手机号验证码发送限制。
10~手机号参数值中,用逗号或分号隔开不同手机号,一次性给多个手机哈发送短信。
11~手机号前或后添加空格或者+86,绕过短信验证码次数限制,继续向特定手机号发送短信。
12~没有限制单个用户当天的短信验证码发送次数。
13~修改cookie中的session或者realip,可以绕过短信验证码发送次数限制。
14~短信验证码,不随机或者存在万能短信验证码,例如0000,1111
二~图形验证码问题
1~有图形验证码,但图形验证码不是请求一次变化一次,而是固定不变,导致失效。
2~有图形验证码,但只是前端校验,服务器不校验,可以删除,可以空,无存在感,导致失效。
3~有图形验证码,但服务器端校验逻辑存在问题,账号密码图形验证码分开校验,而不是打包一次性检验,导致失效。
4~有图形验证码,但是图形验证码不随机,导致失效。
5~图形验证码自定义图片大小dos攻击
三~登录接口问题
1~输入手机号,直接请求服务器验证手机号是否存在,导致可以基于返回包特征遍历已注册用户手机号。
2~输入账号密码,如果账号不对,会提示账号不存在,如果密码不对,会提示密码错误,导致有利于攻击者破解账号密码。
3~账号正确,密码错误,修改返回包内容,例如false修改为true,-1修改为0,登录成功,没有发送服务器校验账号密码是否正确。
4~服务器端校验登录密码是否符合基本密码规则,字母数字大小写特殊字符中任意两种,至少8位。
5~输入任意账号,密码为空时,可以任意登录对方账户。
6~登陆成功后,返回包中包含不当敏感信息。
7~同一IP,访问登录接口没有次数限制,导致可以基于相同密码暴破用户名,基于相同用户名,暴破密码。
8~添加X-Forwarded-For头,不断替换IP,绕过对单一IP登录频次限制。
9~修改请求包或返回包的userid,越权登录。
10~session id可以预测,例如PHPSESSID不随机。
11~万能密码,任意登录。
12~cookie缺陷,对比登录成功状态cookie构造,绕过认证。
四~注册接口问题
1~输入手机号,直接请求服务器验证手机号是否存在来验证能否能注册,导致可以基于返回包特征遍历已注册用户手机号。
2~提交注册请求,同时修改手机号和密码,可以批量注册账号。
3~提交注册请求,会在前端或返回包提示,手机号已经存在,导致批量遍历。
4~前端或后端没有密码强度限制,可以设置为123456,而不是字母数字大小写特殊字符中任意两种,至少8位。
5~注册失败,修改返回包内容,例如false修改为true,-1修改为0,注册成功,没有发送服务器校验账号密码是否正确。
6~已注册用户,还可以再次覆盖注册。
五~忘记密码接口问题
1~输入手机号,直接请求服务器验证手机号是否存在,导致可以基于返回包特征遍历已注册用户手机号。
2~从密码重置的第一步直接跳至密码重置的最后一步。
3~忘记密码或自有账户的变更手机号或修改密码处,通过修改userid或手机号的方式重置他人密码。
4~使用他人手机号获取短信,获取其cookie,自有手机号重置的最后一步,使用对方的cookie,来重置对方密码。
5~邮箱重置密码的链接长期有效。
6~邮箱重置密码的链接中token有规律可循,可多次发送链接对比,可尝试解码md5,base64
7~邮箱重置密码链接中存在用户的userid或用户名,修改成其他人的尝试重置。
8~修改返回包内容,例如false修改为true,-1修改为0,即使最后显示忘记密码失败,也可以用重置的密码登录尝试。
9~账户内修改密码,可以设置为123456这样的弱密码。
10~后端删除密保为空,绕过验证。




