验证机制问题
一.暴力破解
- 暴力破解(brute force),也可以称为蛮力攻击,指利用穷举法将所有的可能性一一尝试,理论上可以破解所有密码问题。
实际测试中,考虑到攻击成本的问题,通常使用字典攻击,即逐一尝试用户自定义词典中的可能密码(单词或短语)的攻击方式。 - 弱口令攻击
①弱口令是指容易被他人猜到的口令,除常见的123456、12345678、admin等口令外,生日、姓名、手机号、1qazqwas也被称为弱口令。
②为了节省攻击成本,通常也会使用弱口令字典进行攻击。 - 可利用信息
①多余的提示信息。登陆失败后,不应提示如“该用户不存在”、“密码错误”、“用户未注册”等详细信息,通过这些信息可以推断出用户名、密码等其他信息;
②可预测信息。类似user100、user101的用户名、手机号等信息,类似于ABC123、123456的初始密码。 - 字典生成
①crunch 以一定规则生成字典
crunch 11 11 -t 1829881 %%%%%(%代表数字)
crunch 6 6 -t pass@@ (小写字母)
crunch 6 6 -t pass,(大写字母)
crunch 6 6 -t pass^^(特殊字符)
②cupp 社会工程学字典生成
③cewl 爬取网站内容,生成字典
④亦思想社会工程学字典生成器 - 符合国人习惯的字典
①常见弱口令:123456、password、123qweasd等;
②姓名(或其他信息)全拼及缩写:xiaoming123等;
③全部以及部分手机号码;
④出生日期及各种变形; - 无效的登陆失败处理功能
(1)图片验证码绕过:验证码不生效/不更新/不失效;验证码可预测/删除/获取;验证码可识别/寻找其他登陆页面。
(2)短信验证码绕过:4/6位暴力破解;篡改手机号;篡改response响应。
二.密码重置
- 常见的密码问题:
①用户名枚举:网站反馈多余信息,可猜测用户信息;
②验证码返回前端处理:可截获/修改;
③修改request:用户名、手机号、cookie等信息可修改;
④修改response:操作结果成功/失败可修改;
⑤暴力破解验证码:验证码长度有限,或验证码未设置可靠的失效时间;
⑥拼凑密码重置连接:重置连接有规律可循。 - 不安全的忘记密码功能
①重置密码方式不应明文显示/传输给用户;
②重置密码方式应该设置有效期;
③重置密码方式应具有高强度、不易被攻击猜解;
④重置密码方式应具有足够的随机性,不易被暴力破解。