暴力破解的学习

暴力破解概述

“暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
关于字典可以到网上下载,样式非常多。暴力破解的原理就是通过字典里已有的那些字符去一个个尝试登录,理论上说,只要字典足够大,这样的穷举就能够成功。不过字典越大,工具尝试的次数就越多,那消耗的时间就越长。

关于字典

字典
一个有效的字典,可以大大提高暴力破解的效率
1)常用的账号密码(弱口令),比如常用用户名/密码TOP 500等
2)互联网上被脱裤后账号密码(社工库),比如XXX当年泄漏的约600w用户信息
3)使用指定的字符使用工具按照指定的规则进行排列组合算法生成的密码

字典优化技巧
技巧一
根据注册提示信息进行优化
对目标站点进行注册,搞清楚账号密码的一些限制,比如目标站点要求密码必须是6位以上,字母数字组合,则可以按照此优化字典,比如去掉不符合要求的密码
技巧二
如果爆破的是管理后台,往往这种系统的管理员是admin/administrator/root的机率比较高,可以使用这三个账号+随便一个密码,尝试登录,观看返回的结果,确定用户名。
比如:
输入xxx/yyyf返回“用户名或密码错误”;
输入admin/yyy返回“密码错误”,则基本可以确定用户名是admin因此可以只对密码进行爆破即可,提高效率。

识别暴力破解漏洞

如果一个网站没有对登录接口实施防暴力破解的措施,或者实施了不合理的措施。则该称该网站存在暴力破解漏洞。
1)是否要求用户设置了复杂的密码;
2)是否每次认证都使用安全的验证码;
3)是否对尝试登录的行为进行判断和限制;
4)是否在必要的情况下采用了双因素认证;
存在暴力破解漏洞的网站可能会遭受暴力破解攻击,但该暴力破解攻击成功的可能性并不是100%

暴力破解测试流程

1)确认登录接口的脆弱性
确认目标是否存在暴力破解的漏洞。(确认被暴力破解的“可能性”)
比如∶尝试登录—抓包—观察验证元素和response信息,判断是否存在被暴力破解的可能。
2)对字典进行优化
根据实际的情况对字典进行优化,提高爆破过程的效率。(信息收集生产字典)
3)工具自动化操作
配置自动化工具(比如线程、超时时间、重试次数等),进行自动化操作。

burp suite-intruder介绍

Intruder模块可以通过对http request的数据包以变量的方式自定义参数,然后根据对应策略进行自动化的重放。常用于自动化猜测/暴力破解过程中。

target选项卡
设置攻击目标,可以通过proxy发送; positions选项卡 指定需要暴力破解的参数并设置成变量,同时选择攻击模式:

Sniper:狙击手

设置一个payload, ,先将第一个变量使用字典进行测试,然后在将第二个变量使用字典进行测试;

Battering ram:冲撞车

设置一个payload,所有的变量一起用字典内容被替换,然后一起尝试;

Pitchfork:草叉型(我理解为1对1)

每个变量设置一个payload,分别使用对应的字典对变量进行同时替换;

Cluster bomb:焦束炸弹(我理解为1×1)

需要为每个变量设置一个payload,分别使用字典内容组合对变量进行替换;

Payloads选项卡

设置字典,并可以对字典进行统一的策略处理;(字典路径不能是中文路径)

options选项卡(有些设置要专业版才可以用)

对扫描的线程、失败重试等进行配置;
对结果设置匹配的flag: 通过一个标识符来区别结果,并在结果栏中flag出来

验证码绕过-on client相关问题


我们一般用验证码来做什么?
登录暴力破解
防止机器恶意注册

搞清楚验证码的认证流程
1)客户端request登录页面,后台生成验证码:
后台使用算法生成图片,并将图片response给客户端;
同时将算法生成的值全局赋值存到SESSION中;
2)校验验证码:
客户端将认证信息和验证码一同提交;
后台对提交的验证码与SESSION里面的进行比较; 客户端重新刷新页面,再次生成新的验证码
注意:验证码算法中一般包含随机函数,所以每次刷新都会改变;

不安全的验证码
使用前端js实现验证码(纸老虎);
将验证码在cookie中泄露,容易被获取;
将验证码在前端源代码中泄露,容易被获取;
注:通过查看前端源代码确认是否前端js实现验证码,如果是前端js实现验证码,直接使用burp suite发送数据包进行暴力破解。

验证码绕过之服务端相关问题 即on server


常见问题
1.验证码在后台不过期,导致可以长期被使用;
2.验证码校验不严格,逻辑出现问题;
3.验证码设计的太过简单和有规律,容易被猜解
目前简单的验证码已经有很成熟的识别技术,基本也等于形同虚设 你想想2306的验证码为啥要做成这样~~~ 所以除了设计安全的流程外验证码是否够复杂(而又不影响用户体验)也是在验证码设计中很重要的!
注:通过burp suite发送相同验证码不同数据,查看返回数据检查验证码是否可以长期使用,如果可以,依然可以使用之前的方法进行暴力破解

暴力破解防范措施和防范误区


防暴力破解的措施总结
设计安全的验证码(安全的流程+复杂而又可用的图形);
对认证错误的提交进行计数并给出限制,比如连续5次密码错误,锁定2小时;
必要的情况下,使用双因素认证;

token对防暴力破解的意义
将token以“type=‘hidden’”的形式输出在表单中;
在提交的认证的时候一起提交,并在后台对其进行校验;
但,由于其token值输出在了前端源码中,容易被获取,因此也就失去了防暴力破解的意义。一般Token在防止CSRF上会有比较好的功效。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值