暴力破解模块
暴力破解我们在sqli-labs和DVWA上做过很多次暴力破解,暴力破解一般指穷举法,穷举法的基本思想是根据题目的部分条件确定答案的大致范围,并在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕。若某个情况验证符合题目的全部条件,则为本问题的一个解;若全部情况验证后都不符合题目的全部条件,则本题无解。穷举法也称为枚举法。(我们在pikachu的平台中点击暴力破解里的概述查看暴力破解的含义)。我们暴力破解使用的工具是BurpSuite,我们这里简单介绍一下intruder模块的内容。
Target选项
设置攻击目标,可以通过proxy发送
Pasitions选项
指定需要暴力破解的参数并设置成变量,同时选择攻击模式
这里面的攻击模式有四种:
Sniper(狙击手):一个payload,先将第一个变量使用字典进行测试,然后将第二个变量使用字典进行测试
Battering ram(冲撞车):可以设置多个payload,所有变量一起用字典内容被替换,然后一起尝试
Pitchfork(草叉型):每个payload设置对应的字典内容,然后按顺序一一对应进行破解
Cluster bomb(焦束炸弹):为每一个变量设置一个payload,分别使用字典内容组合对变量进行替换
进一步了解可以参考 https://www.cnblogs.com/wayne-tao/p/11130158.html
Payloads选项
设置字典,并对字典进行统一的策略处理
Options选项
对扫描的线程、失败重试等进行配置;对结果设置匹配的flag:通过一个标识符来区别结果,并在结果栏中flag出来
了解之后,我们开始暴力破解
一、基于表单的暴力破解
在左侧栏中点击暴力破解出现下拉菜单,选择基于表单的暴力破解
首先测试,随便输入一个用户名密码,和正确的用户名密码,看看它们的返回值有何不同
不知道何为正确的可以点击右上方
我们输入错误的 111222/123
正确的 admin/123456
因为返回的结果不同,这样我们就可以根据不同的信息来进行暴力破解,我们调成手动代理,打开BurpSuite,随便输入一个用户名密码,点击Login,进行抓包
全部选中,将其发送到intruder模块
进入intruder模块,点进Positions,点击Clear$,清楚无关变量,然后选中username和password变量,点击Add选中,再选择攻击模式为Cluster bomb
然后我们进入Payloads,在Payload Options中点击Load导入字典(其实就是我们提前创建的一个文本文档,里面写好我们猜测的用户名和密码,Brup Suite会根据这个字典,把里面的内容进行尝试,字典存放的路径和命名随意。在Payload Sets中把Payload set设置为2,因为我们有两个参数需要破解。注意:在Payload set为1的时候载入字典,然后再改成2
最后option可以根据自己需要设置线程,有的好像不支持高并发,然后补充一下grep match这,大多数情况下我们根据返回页面的length不同观察,但是也可以自己设置flag
这样我们根据长度爆破出正确的用户名和密码
将浏览器改回无代理,使用爆破出来的结果登陆,发现登陆成功
二、验证码绕过(on server)
验证码可以用来防止恶意注册、防止暴力破解。服务端验证码常见问题:
1、验证码在后台不过期,导致长期可以使用
2、验证码校验不严格,逻辑出现问题
3、验证码设计的太过简单和有规律,容易被猜解
查看源码
观察源码,这个是在后端的检测的验证码,我们绕过的思路就是观察他产生的验证码有没有过期设置(用过一次刷新),如果没有默认的session就是24min刷新。可以看到,输入错误的验证码会被检测到,因为检测是在后端完成。看似很严谨了,但是我们输入正确的验证码之后,验证码并没有过期,还可以继续使用。
输入正确的账号,错误的密码,正确的验证码 ,修改代理,抓包,发送到Repeater
随意修改账号密码,点击GO,在右侧可以看到username or password is not exists 这就代表验证码可以再次使用,没有过期
我们使用这个验证码进行暴力破解,接下来的步骤参考上面基于表单的暴力破解
三、验证码绕过(on client)
这个验证码绕过是在前台,只在前端处理。
我们输入错误的用户名密码和正确的验证码,返回提示用户名或密码错误
输入正确用户名密码,错误验证码,返回弹窗,验证码输入错误
调为手动代理,打开BurpSuite,输入一次正确的验证码,随意输入账号密码,进行抓包,选中发送到Repeater
在Raw当中,随意改一下验证码,点击“Go”,若右侧出现用户名或密码错误,(即”username or password is not exists“的字样),而不是验证码错误,则验证码只在前端处理
我们将数据包发到intruder,直接暴力破解,无需考虑验证码,其他的步骤跟基于表单的暴力破解一样了
四、token防爆破?
token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。如果这个 Token 在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌。
1、token 完全由应用管理,所以它可以避开同源策略
2、token 可以避免 CSRF 攻击
3、token 可以是无状态的,可以在多个服务间共享
可以查看参考DVWA暴力破解的高等级
我们这里输入正确的用户名,错误的密码 调代理,打开BurpSuite抓包
将包发送至intruder 破解类型选择pitchfork 设置password和token是变量
在options中的grep-extract中打勾点击add添加过滤条件 value=" 点击refetch response找到响应包中的token 选中复制token值点击ok
将线程设置为1
将最下方的redirections选择为always
设置payload set为1 文件选择为密码字典
set为2 type为recursive grep时 复制刚才的token值到first request
爆破完成后可以看到相应包长度不同的包中有一个登录成功