第一步链接数据库 修改配置文件,重置数据库~
基于表单的暴力破解
进入暴力破解的子选项:基于表单的暴力破解。我们可以看到如下界面
我们随便输入信息然后设置代理用burp suite 进行拦截数据包。
发送到Intruer模块。
这里简单介绍一下Intruer模块。里面有四个选项卡,分别是:
- attack tarage 攻击目标
- positions 攻击位置
- payloads 攻击有效载荷
- options 其他选项
burpsuit里四种爆破模式区别
sniper:狙击手:
如果有两个爆破点,就在原来的基础上,单个修改,把payload值插入,
如:字典里的数为3,爆破点为2,总共爆破6次 3+3=6
字典里的数为500,爆破点为2,总共爆破500+500 1000次
battering ram:攻城锤:同时进行得
如果有两个爆破点,那么会同时替换字典里的值,即爆破时两个点的值是相通的,
如:字典里有3个,爆破点有两个,爆破3次。
pitch-fork:插稻草的叉子:
可以在每个爆破点载入不同的字典。position1,2·······如:pos1载入3个值的字典,pos2载入100个值的字典,它会按顺序匹配,以最少的payload为准,总共爆破3次。
添加了两个参数的话 ,要求添加两个payload
pl1:1,2
pl2:3,4
那么第一爆破为 1,3
而二次爆破为2,4
如果两个payload行数不一致的话,取最小值进行测试。所以爆破的次数取两个中最小的为准。
cluster bomb:集束炸弹:
同样可以载入多个字典,是采用排列组合的方式,将每个position的所有情况和其他依次组合,如:pos1有3个值,pos2有100个值,总共爆破300次。若pos1有300,pos2有300,爆破90000次
Sinper:一个变量设置一个payload进行攻击
Battering ram:可以设置两个变量,把payload同时给两个变量
Pitchfork:两个变量分别设置payload,然后按顺序一一对应进行破解
Cluster bomb:两个变量分别设置payload,然后交叉列所有情况进行破解(常用)
positions 攻击位置:
payloads 攻击有效载荷:
开始爆破:
尝试登录 登陆成功
验证码绕过(on server)在服务器端
输入之后抓包,
发送到Reperter
在前端修改验证码
修改验证码后,
我们再多次输入用户名和密码 ,验证码 也不再被校验
说明这个验证码 可以重复被使用
我们发现验证码可以重复使用后
可以利用这个漏洞 把数据包 发送到Intruder 进行暴力破解
线程
得到结果
验证码绕过(on client)在客户端
查看页面源码 看生成验证码部分代码,
输入的验证码是通过前端的js进行验证,很轻松就可以绕过,可以说形同虚设:
输入数据后,抓包
发送到Reperter
发现不输入验证码 输入错误验证码 代码都没有对验证码进行验证
这就是在前端检测验证码,可以轻松绕过,然后发送到Intruder模块进行破解。
token防爆破? 答案是不能得
查看源代码 我们可以发现 会有一个防爆破的隐藏表单 token值,一段长长的数据。
意思就是 你再前端打开页面 后端收到请求之后 就会生成一个token值
每次刷新 都会有一个新的token值 并且不一样
然后再查看后端的php页面的代码
我们发现代码首先对token值进行验证 再验证用户名和密码
如果token值验证不通关 是不会再验证用户名和密码的
查看生成token值得函数
将包发送至intruder ctrl+i 或者右键 破解类型选择pitchfork 设置password和token是变量
在options中的grep-extract中打勾点击add添加过滤条件 点击refetch response找到响应包中的token 选中复制token值点击确定
将最下方的redirections选择为always
设置payload set为1
set为2 type为recursive grep时 复制刚才的token值到first request
点击start attack进行破解时遇到了报错
需要在options中将线程设置为1
重新爆破 爆破完成后可以看到相应包长度不同的包中有一个登录成功
显示登录成功
然后再选中用户名和token值 重复上述步骤 进行破解
结果 admin --123456 登录成功
也可以使用 用户名 密码 token值 一起破解