暴力破解
1、暴力破解
1.1 暴力破解概述
1)什么是暴力破解
连续性尝试+字典+自动化 = 暴力破解(瞎猜。。)
2)字典
一个有效的字典,可以大大的提高暴力破解的效率
*常用的账号密码(弱口令),比如常用用户名/密码top 500
*互联网上呗脱裤后账号密码(社工库)
*使用指定的字符使用工具按照指定的规则进行排列组合算法生成的密码
3)如果一个网站没有对登录接口实施放暴力破解的措施,或者实施了不合理的措施则称该网站存在暴力破解漏洞
*是否要求用户设置了复杂的密码
*是否每次认证都使用安全的验证码
*是否对尝试登陆的行为进行判断和限制
*是否在必要的情况下采用了双因素认证
1.2 暴力破解漏洞测试流程
1)确认登录接口的脆弱性
确认目标是否存在暴力破解的漏洞(确认被暴力破解的可能性)
2)对字典进行优化
根据实际情况对字典进行优化,提高爆破过程的效率
3)工具自动化操作
配置自动化工具(比如小城,超时时间,重试次数等),进行自动化操作
1.3 字典优化技巧
1)根据注册提示信息进行优化
对目标站点进行注册,搞清楚账号密码的一些限制,比如目标站点要求密码必须是6位以上,字母数字组合,则可以按照此优化字典,比如去掉不和要求的密码
2)如果爆破的是管理后台,往往这种系统的管理员是admin/administrator/root的几率比较高,可以使用这三个账号+随便一个密码,尝试登陆,观看返回结果,确定用户名
1.4 基于表单的暴力破解--演示
1)首先我们要使用bp进行抓包,对抓到的包发送到lntruder模块,进行暴力破解,关于lntrude模块中的四种攻击方式,在之前的博客中有写过,所以这里不再赘述。直接搞起。。
2)我们把发送到lntruder模块的包进行下修改,首先把包中的美元符全部clean,再在需要添加的地方(username,password)加上美元符,这个美元符的作用是对选中的内容进行替换,添加完成后选择攻击模式cluster bomb模式
3)搞完之后,选择payload,这个模块里边选择合适的密码本,对之前添加美元符的地方进行替换,选择payload type 为 simple list 位置为1 ,密码本选择在payload options ,选择完成之后就是对第二处美元符的位置进行密码本的选择,至于要在 payload set 处选择为2,其他操作与上边的是相同
4)搞完之后就是开始 start attack
5)ok破解完成之后,我们怎么知道哪个是正确的密码和用户名呢?看length,长度不同的,一般情况下就是正确的。
6)登陆测试下(其实我们从提示处也知道正确的用户名和密码)
1.5 验证码绕过(on client)--演示
1)打开界面,发现他说要我们输入验证码,看一下页面的源代码,发现是用javascript写的一个生成验证码的函数,然后再用另一个函数来进行对验证码进行验证
2)那就先试试登陆,看看后台是否对验证码有验证,还是只是前端的验证。登陆,使用bp抓包
3)将抓到的包发送到repeater模块,进行一个重复的发包收包的过程。在这里呢,我们修改验证码,或者是不去写验证码,让验证码为空,看页面的返回结果是否为请输入验证码或者是输入正确的验证码,我们删除验证码,发包发现他并没有对验证码进行要求,而是显示,账号密码不存在
4)这样我们就知道,原来他只是在前端对验证码做了限制,在后台并没有验证,查看后台代码发现也确实是这样。只进行密码用户名的验证
5)接下来就和基于表单的暴力破解一样了
1.5 验证码绕过(on server)--演示
1)验证码在服务券和在客户端的区别在于一个是后端php写的,一个是前端javascript写的,我们在on server模块的网页源码中并没有发现关于验证码的任何代码。然后我们可以看一看后端的一些代码。首先打开的bf_server的文件,看到关于验证码的一些代码在于showvcode 的php文件里,每次点击都会去调用
2)在之后我们打开showvcode,看到这个存在一些问题,就是在接收到验证码之后并没有对其及逆行销毁,导致其一直有效,有效时间默认为24分钟
3)这样,我们就知道,这也是可以进行暴力破解的,只要我们在24分钟之内,输入正确的验证码就可以对其进行暴力破解
1.6 token防爆破
1)token防不了爆破,我们一样可以获取到token值
2)通过bp,我们也一样可以暴力破解,首先选择pitchfork
3)options里边找到grep extract
4)点击add,获取到token
5)线程设置为1,允许重定向
6)payload里边,选择好模式,将之前的token值复制到这个里边
7)开始破解