介绍
“暴力破解”攻击手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。
攻击方式
首先在登陆点内抓取数据包
表单的话,数据包是POST请求方式。将数据包发送至intruder模块进行暴力破解
clear清除所有变量,Add添加所选变量。这里选择需要的username和password变量即可。
选择暴力破解的模式。这里一共有四种
sniper模式(狙击手)
字典数量为一个字典。这里依照选择变量的先后顺序选择字典。
类型设置为Runtime file,将准备好的字典放入
单参数爆破,多参数时同一个字典按顺序替换各参数,总之初始值有一个参数不变
添加了一个参数,且假设payload有500个,那么就会执行500次。添加了两个参数,就会挨着来,第一个参数开始爆破时,第二个不变,如此这样,会进行500+500此 总共1000次爆破。
Battering ram模式(攻城锤)
只能使用一个字典
两个参数相同,同参数暴力破解
Pitchfork模式(草叉模式):
使用两个字典,依照设置变量时的顺序。
payload1是第一个字典,payload2是第二个字典,第一个字典的第一项匹配第二个字典的第二项,以此类推。
用户名字典中有四项,密码字典中有六项,暴力破解时只执行了四项,此模式依照字典的最短板执行。
Cluster bomb模式(集束炸弹):
两个字典,取决于变量数量
交叉配对进行暴力破解,此模式也是最常用的暴力破解模式。把两个字典中的所有可能性都会尝试一遍。
如何判断暴力破解结果?
可以对比回包的长度进行判断
为什么长度不一样?
这是暴力破解失败时的回包,回包中显示用户名或密码错误。
这是暴力破解成功时的回包,显示登陆成功。因为回显的字符数量不一样,所以长度不一样。由此可判断是否成功。
登陆点的渗透思路
一般来说,暴力破解大多数存在于登陆点。在日常工作中,暴力破解的使用率其实并不高,甚至一些项目中会明确规定不准使用暴力破解手段。出来暴力破解,登陆点还可以做测试许多内容。
经常使用到的包括万能密码(SQL注入)、绕过、弱口令和一些逻辑漏洞。具体参考:https://www.cnblogs.com/Risk2S/p/11447279.html
验证码绕过(前端)
大多数外网直接访问到的登陆点,都会使用验证码,对暴力破解方式很不友好。
在抓取数据包时,未通过burp suite直接弹出验证码错误,可以考虑是前端验证。
这时输入正确的验证码就可以抓取到数据包
在重放模块中,测试验证码的使用时效,可以看到,不管账号密码对或者不对,验证码始终未变,使用上述暴力破解方式即可绕过验证码进行用户的暴力破解。
验证码绕过(后端)
后端产生验证码绕过的原因有:1.验证码不过期 2.验证码可重复使用 3.验证码有规律可循等。
先重放一下,提示用户名或密码不对
将验证码替换掉,再次重放,提示验证码不能为空(图片未进行转码处理)
再次将之前的验证码放入,并填写正确的用户名密码,提示登陆成功。说明此验证码存在不过期的问题。可以进行暴力破解。
暴力破解小技巧
结合社会工程学的手段,根据使用者的个人信息、爱好、手机号、生日等信息生产暴破字典,可以提高暴力破解成功率。
暴力破解防御方式
1.加入token机制,每次登录页面都会随机生成Token字串,那么无脑爆破就不可能了,因为Token是完全随机的。
2.账号锁定机制,数次登录失败后,账号会锁定,那么暴力破解就行不通了。可以说这是比较完善的防御机制。
3.使用人员方面,依照密码复杂度要求设置密码,密码设置于个人信息无关。