YS使用的防暴力破解机制存在缺陷,该缺陷可被用于暴力破解其它用户密码【高】
问题描述:
YS在用户登录页面设置了验证码机制,当用户输入密码错误次数达到3次时,再次登录需要验证码以防止攻击者进行暴力破解,但在需要验证码的情形下,当用户成功认证登录之后,该验证码机制将失效,此时攻击者可以无数次向服务器重放用于登录认证的http请求。
测试步骤:
1、 安装浏览器拦截代理工具burp,并启动拦截功能。
2、 在用户名和密码栏填入有效的帐户名和无效的密码,登录失败3次直至出现验证码输入框,如图所示:
3、 在用户名和密码栏填入有效的帐户和密码,并点击登录,此时burp拦截到该用于登录的http请求,并将该http请求发送到burp的repeater,如下图所示:
4、 关闭burp的http请求拦截功能,在另外的机器上使用正确账户并登录到YS。
5、 切换回到burp的repeater标签,可看到以上拦截的用于登录的http请求,修改password字段修改为一个任意错误的值,点击“go”按钮进行重放10次,服务器并未返回要求用户输入验证码的响应(响应码为“1005”),也就是说攻击者可以在此状态下无限次对服务器发送该请求,而不受验证码的限制,而此时如果在burp上输入正确的口令时是可以登录的。如图所示:
问题扩展:
攻击场景:当攻击者尝试暴力破解弹出验证码后,将登录接口转入burp,在等待用户登录账户后即可展开真正的暴力破解。
解决建议:
1、 在所有需要认证的地方,无论在任何状态下(已登录或未登录),当用户发送超过3次携带错误密码的请求时,均要求输入验证码,或者对该帐户进行短时间的锁定。
2、对所有需要输入口令的地方强制实施密码复杂度策略,提高暴力破解的难度