pikachu-暴力破解

文章目录

  • 基于表单的暴力破解
    • 暴力破解概述
    • 暴力破解测试
    • 防暴力破解的措施总结
  • 验证码绕过(on sever)
    • 验证码绕过(on sever)测试
  • 验证码绕过(on client)
    • 验证码绕过(on client)测试
  • token防爆破
    • token防爆破概述
    • token防爆破测试

基于表单的暴力破解

暴力破解概述

攻击者在不知道目标系统的账号密码的情况下,通过自动化工具和一个强大的字典进行连续性尝试的登录,碰撞出一些有效的账号密码
pikachu-暴力破解_第1张图片

暴力破解测试

一、打开pikachu靶场
pikachu-暴力破解_第2张图片
输入用户名和密码----Login(显示用户名或密码无效----登陆失败)
pikachu-暴力破解_第3张图片
二、burpsuite抓包
在这里插入图片描述
Proxy(查看抓包结果)
pikachu-暴力破解_第4张图片

intruder(暴力破解模块)
pikachu-暴力破解_第5张图片

使用右键点击发送数据包 send to intruder
pikachu-暴力破解_第6张图片

上图position设置了两个,Attack Type选了Cluster bomb,所以需要两个字典,payload效果是两个字典条目的组合,数量是两个字典条目数的乘积。
配置字典↓
pikachu-暴力破解_第7张图片

按顺序,两个字典像下图这样选simple list并把用户名字典load进来
pikachu-暴力破解_第8张图片

如果:
考虑到用户名和密码有特殊字符的情况,这里把URL-encode去勾选
pikachu-暴力破解_第9张图片

三、按start attack开始爆破
方法一:
完成后结果按Length排序,通过查看差异,发现那个特殊的字典值很有可能就是正确用户名和·密码(排名第一个的Length和其他都不一样的)
pikachu-暴力破解_第10张图片

方法二:
也可以通过配置唯一标识,精准定位正确的密码
pikachu-暴力破解_第11张图片

完成后结果按Length排序,通过查看差异,发现那个特殊的字典值很有可能就是正确用户名和·密码(排名第一个的Length和其他都不一样的)
pikachu-暴力破解_第12张图片

四、我们将得到的用户名与密码输入到pikachu(登录成功)
pikachu-暴力破解_第13张图片

防暴力破解的措施总结

要求用户设置复杂的密码;
设计安全的验证码(想想你买火车票时输的验证码~)或者手机otp) ;
认证错误的提交进行计数并给出限制,比如连续5次密码错误,锁定2小时;
必要的情况下,使用双因素认证

验证码绕过(on sever)

pikachu-暴力破解_第14张图片
客户端打开一个登陆页面,实际是像后端提交一个请求,后端收到这个请求时,会调用自动生成验证码函数,验证码以图片的形式输出到前端,
同时将生成验证码的值(算法)以session的形式存在缓存中,
客户端将认证信息和验证码提交时,后台会将提交的验证码和与session的验证码比较

验证码绕过(on sever)测试

一、打开pikachu靶场,开启代理
用户名和密码输入错误值,当验证码是错误值时,返回结果如下,提示验证码错误
pikachu-暴力破解_第15张图片
用户名和密码输入错误值,当验证码是正确值时,返回结果如下,提示用户名或密码不存在
pikachu-暴力破解_第16张图片
并且每次提交都会自动刷新验证码
现在试想一下,如果我们不在网页上点Login,不刷新网页,网页当前显示的验证码就一直有效呢?
二、burpsuite抓包
Proxy(查看抓包结果)(验证上面的试想↓)
在这里插入图片描述
用proxy查看刚刚抓到的包---------发给repeater
pikachu-暴力破解_第17张图片
改成当前网页显示的验证码,send,发现response中提示的是用户名或密码不存在,说明验证码是对的
pikachu-暴力破解_第18张图片
还是这个验证码,把密码改一下,send,发现response中提示的还是用户名或密码不存在,说明验证码还是对的
这就说明之前的猜想是正确的,只要网页没刷新,验证码在burp suite中可以多次使用
pikachu-暴力破解_第19张图片
直接从repeater中把上图的请求包send to intruder
intruder(暴力破解模块)
pikachu-暴力破解_第20张图片
在intruder中进行配置
pikachu-暴力破解_第21张图片
上图position设置了两个,Attack Type选了Cluster bomb,所以需要两个字典,payload效果是两个字典条目的组合,数量是两个字典条目数的乘积。

配置字典↓
pikachu-暴力破解_第22张图片
按顺序,两个字典像下图这样选simple list并把用户名字典load进来
pikachu-暴力破解_第23张图片
如果:
考虑到用户名和密码有特殊字符的情况,这里把URL-encode去勾选
pikachu-暴力破解_第24张图片
三、按start attack开始爆破
方法一:
完成后结果按Length排序,通过查看差异,发现那个特殊的字典值很有可能就是正确用户名和·密码(排名第一个的Length和其他都不一样的)
pikachu-暴力破解_第25张图片
方法二:
也可以通过配置唯一标识,精准定位正确的密码
pikachu-暴力破解_第26张图片
完成后结果按Length排序,通过查看差异,发现那个特殊的字典值很有可能就是正确用户名和·密码(排名第一个的Length和其他都不一样的)
pikachu-暴力破解_第27张图片
四、我们将得到的用户名与密码输入到pikachu(登录成功)
pikachu-暴力破解_第28张图片
pikachu-暴力破解_第29张图片

验证码绕过(on client)

验证码绕过(on client)测试

一、打开pikachu靶场
pikachu-暴力破解_第30张图片
用户名和密码输入错误值,当验证码是正确值时,返回结果如下,提示用户名或密码不存在
pikachu-暴力破解_第31张图片
用户名和密码输入错误值,当验证码是错误值时,有弹框提示验证码错误,之前对用户名或密码的提示也没有清除
pikachu-暴力破解_第32张图片
上面两张图,其中验证码错误时有弹框这张,
右键 查看网页源代码,发现前端有检验验证码的js脚本,
证明 用户名和密码是在后端验证的,但验证码是在前端验证的。
pikachu-暴力破解_第33张图片
既然是前端检测,我们直接用burpsuite发请求报文绕过前端就可以
二、burpsuite抓包
在这里插入图片描述
proxy模块抓包(查看抓包结果)
pikachu-暴力破解_第34张图片
intruder(暴力破解模块)
pikachu-暴力破解_第35张图片
把burpsuite的proxy模块抓到的这个报文send to intruder
pikachu-暴力破解_第36张图片
上图position设置了两个,Attack Type选了Cluster bomb,所以需要两个字典,payload效果是两个字典条目的组合,数量是两个字典条目数的乘积。

配置字典↓
pikachu-暴力破解_第37张图片
按顺序,两个字典像下图这样选simple list并把用户名字典load进来
pikachu-暴力破解_第38张图片
如果:
考虑到用户名和密码有特殊字符的情况,这里把URL-encode去勾选
pikachu-暴力破解_第39张图片
三、按start attack开始爆破
方法一:
完成后结果按Length排序,通过查看差异,发现那个特殊的字典值很有可能就是正确用户名和密码(排名第一个的Length和其他都不一样的)
pikachu-暴力破解_第40张图片
方法二:
也可以通过配置唯一标识,精准定位正确的密码
pikachu-暴力破解_第41张图片
完成后结果按Length排序,通过查看差异,发现那个特殊的字典值很有可能就是正确用户名和密码(排名第一个的Length和其他都不一样的)
pikachu-暴力破解_第42张图片
四、我们将得到的用户名与密码输入到pikachu(登录成功)
pikachu-暴力破解_第43张图片
pikachu-暴力破解_第44张图片

token防爆破

token防爆破概述

主要用来防御CSRF攻击
当我们打开登录页面,向后端提交一个请求,后端收到请求的同时生成一个token值(放到session中),并输出到前端的表单中
其目的是:当前端点击登陆时,后台对前端的账号,密码、token同时验证,每次刷新token都会变
pikachu-暴力破解_第45张图片
如何破解带token请求?

token防爆破测试

一、打开pikachu靶场
若用户名或者密码输错会提示用户名或密码不存在(这关没有验证码了~)
pikachu-暴力破解_第46张图片
本次实验和token有关,我们用burpsuite抓两次包,看看有啥区别?
二、burpsuite抓包
把proxy模块抓到的两次登录的报文send to comparer对比一下,确实两次的token不一样
pikachu-暴力破解_第47张图片
repeater模块
把proxy模块抓到的报文send to repeater
(先不改动token——send——response中提示 csrf token error)
pikachu-暴力破解_第48张图片
刚刚在查看response网页源代码中有一个type为hidden,name为token的input标签,value和request报文的token不一样,应该是下一个报文的token。
pikachu-暴力破解_第49张图片
我们尝试把response中的token值替换掉request中的token值,再次send,返回了提示用户名或密码不存在,并且返回了下一次的token值
pikachu-暴力破解_第50张图片

总结:
下一次request需要携带的token就是上一次response中html代码中的隐藏字段值,也就是说request中的token是可以从上一个response中提取的

intruder暴力破解模块
pikachu-暴力破解_第51张图片
使用右键点击发送数据包 send to intruder

首先position除了username和password再增加token,此外要注意Attack type选Pitchfork
这里为啥要选Pitchfork而不能选Cluster bomb
因为Cluster bomb是三组payload排列组合,一个token用好几次显然不行
pikachu-暴力破解_第52张图片
Pitchfork对payload的要求可能更高一些(需要提前整理好对应关系)
所以这里实验我们需要把用户名和密码payload列表(字典)改一下(admin-----对应------123456)
配置字典↓
pikachu-暴力破解_第53张图片
按顺序,第一个和第二个字典像下图这样选simple list并把用户名字典load进来
pikachu-暴力破解_第54张图片
第三个payload type设置为Recursive grep
pikachu-暴力破解_第55张图片
问题来了,,上图这个payload options是在哪里设置的呢?(完成如下步骤,返回到这里就会出现)
小框框勾选上,然后点add,
弹出来的窗口要是下面啥也没有就点一下Refetch response
在response中的找到token,双击value后面的值
上面define start and end的地方就会自动生成正则表达式
最后点OK就行
pikachu-暴力破解_第56张图片
此外还有一个需要注意的地方是线程要设置为1
这是因为每次都要用上次response中返回的token,多线程就会乱套了。
pikachu-暴力破解_第57张图片
三、按start attack开始爆破
完成后结果按Length排序,通过查看差异,发现那个特殊的字典值很有可能就是正确用户名和密码(排名第一个的Length和其他都不一样的)
pikachu-暴力破解_第58张图片
四、我们将得到的用户名与密码输入到pikachu(登录成功)
pikachu-暴力破解_第59张图片

你可能感兴趣的:(pikachu,渗透测试)