Pikachu关于暴力破解的解释:
Burte Force(暴力破解)概述
“暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:
1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;
…等等。
千万不要小看暴力破解漏洞,往往这种简单粗暴的攻击方式带来的效果是超出预期的!
下面是我的理解:
所谓暴力破解就是把有可能的密码都试一遍,只不过有密码字典和工具提高了效率而已,背后也涉及弱口令和不安全的验证码。
实现前提:失败次数没有限制,没有验证码或验证码不过期可以重复使用
- 基于表单的暴力破解:
准备工作:需要burp抓包 —> 先开启本地代理,再对burp进行基础设置,再准备密码字典。
1)提示已告知用户名是admin,所以我们先输入admin用户名,再任意输入密码,最后点击提交,burp会抓包,右击发送到暴力破解模块。
2)默认会进入Intruder模块下面的Positions选项,我们需要再下面第二个橙色Payload Positions的地方,对请求包添加密码变量,由于默认的有很多个变量,所以我们先清空变量clear$,再选中密码部分添加变量add$,最后再点上面的Payloads选项。
3)进入了Payloads后,去下面第二个Payloads Options,再点击load按钮,打开密码文件,然后再点击右上角的Start attack按钮开始即可。
可以看到当密码是123456时,返回的长度独一无二,可想而知,密码就是123456了。
- 验证码绕过(on server):
同样的操作,只是多了个服务端的验证码而已,根据提示说验证码会一直有效,所以我们可以再这个验证码有效期间一直暴力破解。
然后在Intruder模块下的positions下进行如下设置:
然后再Payloads下进行如下操作:
最终结果如下:
小总结一下:这次成功的前提是后端服务器的验证码没有过期,如果过期自然就不能暴力破解了,验证码不过期就可以一直重用。
- 验证码绕过(on client):
提示说这次是前端的JavaScript检验验证码,这么说来后端不会管你数据包的验证码正确与否咯。同理,抓包爆破,说明一下,既然验证码只是JavaScript拦截前端的,那它可拦截不了数据包,所以验证码乱输都行。
老规矩,Intruder下的positions
一样,发送到Payloads模块添加字典开始爆破
结果如下:
说明前端验证码仅限制前端,完全限制不了Burp后端数据包的发送。
- token防爆破?
token的概念需要去CSDN好好学一下,大概意思就是服务器给你生成一段字符串,你以后请求就带上它,对的上就给你正确的响应,对不上那就不给你想要的响应,但是这道题的token,虽然每次都不一样,但是却可以通过Burp读取响应中的token,然后携带上去爆破,有点小复杂。发明初衷是为了减轻服务器压力用的。
这次操作上有所区别,如下图所示。
然后Intruder下positions部分:
然后Payloads部分:
然后这里还要去Options部分,对token进行设置
1.设置线程数
2。添加token
3.找到设置token
4.设置始终追随重定向:在Options的最下面
5.再对token进行Payloads设置:
6.结果
总结,token最主要应该还是拿来代替session,用来防密码爆破还是不可靠,前端可提取出来并携带。
第4关参考文章:传送阵1,传送阵2
修复建议:
- 登录带验证码,验证码会过期
- 对登录用户失败次数进行限制
- 对登录ip失败次数进行限制,可封IP
- 不要使用弱口令
至此,Pikachu密码爆破部分,完成,下一关。