暴力破解分析与防护-pikachu

Burte Force(暴力破解)概述

​ “暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。

​ 理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:

​ 1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;
...等等。

下面以pikachu靶场来介绍一下

1.基于表单的暴力破解

1595901086632

直接bp抓包爆破,常见账号admin,直接爆破到密码123456

1595901344340

2.服务端验证码绕过

1595901818873

多了个验证码,还是一样抓包爆破

1595901927859

看起来好像跟之前没什么区别,看一下源码

1595901990497

根据流程看是先判断验证码是否正确,再判断账号密码是否正确。按照这个流程当爆破的时候会在页面上显示验证码输入错误,但是现在显示的是username or password is not exists~,说明这个验证码是一直有效的,这样就完成了验证码的服务器端绕过。

解决方法

防止验证码一直有效,每次验证码验证成功以后销毁$_SESSION['vcode']

1595902757513

3.客户端验证码绕过

1595902979736

继续抓包爆破,发现跟之前也没什么区别,看看代码

1595903046436

发现只用前端js对验证码进行验证,这种前端绕过只要bp抓包后都可以直接将验证码的字段删掉,而且对于请求没有影响。

解决方法

在服务端再进行一次验证码验证

总结

暴力破解主要包括

1.最基本没有验证的

2.只在客户端进行验证

3.在服务端进行验证但代码有漏洞

解决方法

1.设置复杂的密码

2.设置访问次数,例如1小时内密码输错5次锁定账号

3.设置安全的验证码(例如在图片中选择xxx),在客户端和服务端同时进行验证

4.使用双因素认证

posted @ 2020-07-28 11:01  sharp_ff  阅读(668)  评论(0编辑  收藏  举报