“暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:
1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;
...等等。
一、暴力破解漏洞之基于表单的暴力破解
1、打开burp
2、用firefox打开Pikachu漏洞联系平台,并且更改端口到burp监控的端口
2、点击暴力破解的第二个
3、打开burp开启Intercept is off
4、随机在账户密码那输入并点击登录
5、此时我们会发现burp截取到了由客户端往服务端发出的数据包
6、此时我们将其发送到Intruder
7、在此栏目把修改的数据添加到username和password上,并将Sniper改成Cluster bomb
8、点击payloads将事先准备好的字典导入到burp中
9、点击Start attack,电脑开始使用字典更改数据包发送给服务端
10、观察返回数据包,如果有差异说明那个差异的数据包即是登陆成功的密码与账号
11、从网站正面登陆其账户密码
二、暴力破解之验证码绕过(on client)
1、不安全的验证码-on client常见问题
·使用前端js实现验证码(纸老虎);
·将验证码在cookie中泄露,容易被获取;
·将验证码在前端源代码中泄露,容易被获取;
2、查看此登陆页面的源码,查看该验证码是否是在前端实验验证的
3、尝试随机输入数字登陆
会有两种结果
4、尝试burp拦截数据包发送到Repeater分析
在返回的数据包中只说了密码或用户民错误说明该界面是从前端验证验证码,我们可以通过burp绕过验证码输入去暴力破解
5、将数据包发送到Intruder像基于表单那样暴力破解就行了
三、暴力破解之验证码绕过(on server)
1、·验证码在后台不过期,导致长期被使用;
·验证码效验不严格,逻辑出现问题;
·验证码设计太过简单和有规律,容易被猜解;
2、当验证码不是前端时候,我们可以尝试看看是否是以上三种情况,本章只演示验证码在后台不过期
3、随机输入数字尝试登陆并用burp进行拦截数据包发送到Repeater++
4、发送数据包分析回传的返回包
再次输入随机的username和password发现回传的数据包中无提示验证码错误。说明该验证码没设置过期时间。
5、可以不更改验证码,用Intruder来进行基于表单的暴力破解。
四、token防爆破
聊聊token对防暴力破解的意义
一个简单的token的实例
一般的做法:
1、讲token以“ type= ’hidden‘ ”的形式输出在表单中;
2、在提交的验证的时候一起提交,并在后台对其进行校验;
但,由于其token值输出在了前端源码中,容易被获取,因此也就失去了防暴力破解的意义。一般Token在防止CSRF上会有比较好的功效,具体讲在CSRF漏洞章节进行讲解。
token是客户端向服务端发送请求时随机生成的一串字符储存在session里边,在发送数据包时候带着服务端发送的token去验证是否为原来服务器发送的token来验证token是否正确。token的目的是当你输入账号密码时,服务端会同时对你的账号密码还有token进行验证。