pikachu 靶场-暴力破解

350 阅读5分钟

能暴力破解是一种通过穷举法尝试所有可能的组合来破解密码或凭证的攻击方式。

分析一个Web网站能否被暴力破解的关键条件:

  1. 验证码(CAPTCHA)是否能绕过

    • 验证码能有效阻止自动化工具提交请求。
    • 如果网站没有验证码或验证码可被绕过(如OCR识别),则容易被暴力破解。
  2. 无账户锁定机制

    • 如果网站未设置账户锁定策略(如连续5次失败登录后锁定账户),攻击者可以无限次尝试密码。
  3. 无IP限制或频率限制

    • 如果网站未对同一IP地址的登录请求频率进行限制(如每分钟最多10次),攻击者可以快速尝试大量密码组合。
  4. 返回明确的错误提示

    • 如果网站返回明确的错误信息(如“用户名不存在”或“密码错误”),攻击者可以区分有效用户名和无效用户名,从而缩小攻击范围。

而Pikachu靶场,提供了比较弱的验证码机制,并没有账号锁定机制与ip限制机制,方便了我们新手的学习。

环境准备

  • Pikachu靶场
  • Burp Suite:用于拦截和重放HTTP请求;

  • 字典文件:字典是暴力破解的重要部分,需要提前准备好,本主题是暴力破解Pikachu的过程,简单的设置包含了破解结果的账号与密码列表即可;

  • 破解结果

    账号密码
    admin123456
    testabc123
    pikachu000000

基于表单的暴力破解

image.png 根据页面分析:

  • 没有验证码;
  • 有账号与密码失败提示;
  • 通过Burp Suite,判断支持重复的发送多次登录校验请求;

image.png 攻击

由于只涉及到username和password两个变量,我们可以利用Burp Suite的Intruder模块,进行暴力破解。

对拦截的右键->Send to Intruder,进入Intruder配置界面

image.png

设置username与password两个参数,并选择Attack type为Cluster bomb image.png 配置账号的字典与密码的字典

image.png

image.png

然后点击Attack即可。

结果分析

因为验证正确和验证错误的Response长度一般会不一样,所以直接Length排序,可以找到正确的用户名和密码。另外也可以根据查询条件过滤关键字。

image.png

通过攻击结果,分析出所有的三个用户名与密码。

验证码绕过(on server)

image.png

使用Intercept,拦截请求,然后关闭浏览器,并发送到respeater,测试否你能重发发送,得到相同的异常:

username or password is not exists

image.png

那么就能继续之前爆破的方式。

如果服务端有每检测一次都重新生成验证码,那么此种方式无效。那么就只能破解验证码了。

攻击的结果如下:

image.png

验证码绕过(on client)

image.png

当属于错误的验证码时,发现没有发送到服务器端的请求,应该是在客户端验证,然后我们再输入正确的验证码,然后拦截后,通过repeat模块,能重复的发送请求。

image.png

那么使用上面的攻击方式既能破解到正确的账号与密码。

image.png

验证码绕过(token)

image.png

随便输入账号与密码,查看请求信息,这边会多出来个token

image.png

同一个请求,发送两次,看看效果

image.png 出现token error,应该是token重复了,提交请求时,没有从后台获取消息,这个token也不需要我们输入,那么应该是前端自动输入的 ,那么前端应该有这个token信息,或者是有获取到这个token的js方法。

那么我们需要把请求前的html复制下来,获取到发送的token,然后把复制下来的html查询下:

image.png

image.png 发现token的方法即使在添加了一个hidden的input,那么我们再暴力破解的时候,就需要自动的获取到这个值。

在设置爆破的参数的时候,需要设置Options->Grep-Extract,可以通过请求的页面响应内容,可以很方便的获取这个值

image.png

这个重定向的配置没有什么用,设置成Never与Always都可以

image.png

在payloads中的token对应的参数中,选择Recursive grep,并设置first request 第一个请求的token参数

image.png

注意使用grep payloads的时候不能使用多线程请求。

image.png

image.png

Attack type选Pitchfork。因为Cluster bomb是三组payload的笛尔卡积,一个token用好几次,所以不能把他设为cluster bomb,这个时候,我们需要对账号与密码要做下处理,做好笛尔卡积后,生成账号与密码文件。加载账号与密码的方式与之前的都一样,只是多个一个参数。点击Attack后,既能得到我们要的结果。

防御建议

  • 主要通过服务器进行防护,在客户端再抢的js混淆还是容易被破解
  • 强制使用复杂密码(长度+特殊字符)
  • 实施账户锁定策略(如5次失败尝试锁定15分钟)
  • 添加验证码(如Google reCAPTCHA)
  • 采用了双因素认证
  • 日志监控:记录登录失败次数及IP地址、设置异常登录告警(如同一IP高频次请求)