• Pikachu-暴力破解模块


    一、概述

    "暴力破解"是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。

    理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的"可能性"变的比较高。 这里的认证安全策略, 包括:

    1.是否要求用户设置复杂的密码;

    2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;

    3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);

    4.是否采用了双因素认证;

    ...等等。

    千万不要小看暴力破解漏洞,往往这种简单粗暴的攻击方式带来的效果是超出预期的!

     

     

    二、暴力破解一:基于表单的破解

    这是最简单的一种模式,首先测试,随便输入一个用户名密码和正确的用户名密码返回值不同:

    这样就可以暴力破解根据返回页面的不同数据区别

     

    第一步:打开浏览器代理后直接用burp抓包,然后发送到intruder模块:

    第二步:清除没用的变量,然后添加username和password变量,再选择攻击模式为cluster bomb

    注意:这里补充一下各种攻击模式的区别:

    1. Sinper:一个变量设置一个payload进行攻击
    2. Battering ram:可以设置两个变量,把payload同时给两个变量
    3. Pitchfork:两个变量分别设置payload,然后按顺序一一对应进行破解
    4. Cluster bomb:两个变量分别设置payload,然后交叉列所有情况进行破解(常用)

    第三步:设置payload

    字典是我为实验方便写了几个简单的,可以按自己的字典:

    第五步:option可以根据自己需要设置线程(有的好像不支持高并发):

    注意:grep match这,大多数情况下我们根据返回页面的length不同观察,但是也可以自己设置falg:

    第六步:可以看到暴力破解的结果得出用户名密码。

    除了根据返回的length的不同之外,还可以根据是否有错误的返回的标志判断:

       

     

    三、暴力破解之验证码的绕过(on client):

    这一关虽然加了验证码,但是通过观察源码可以发现,输入的验证码是通过前端的js进行验证,很轻松就可以绕过,可以说形同虚设:

    第一步:输入之后抓包,然后发送到repeater模块:

    第二步:是否输入验证码,或者是否输入正确的验证码已经不会再检测:

     

    第三步:在前端检测验证码,可以轻松绕过,然后发送到Intruder模块进行破解得出用户名密码。

       

     

    四、暴力破解模块之验证码绕过(On Server)

    观察源码,这个是在后端的检测的验证码,我们绕过的思路就是观察他产生的验证码有没有过期设置(用过一次刷新),如果没有默认的session就是24min刷新:

    可以看到,输入错误的验证码会被检测到,因为检测是在后端完成。看似很严谨了,但是我们输入正确的验证码之后,验证码并没有过期,还可以继续使用。

    然后就可以用这个正确的验证码,进行暴力破解,其余步骤相同:

       

     

    五、暴力破解之token防爆破嘛?

    答案是并不能。

    分析:观察网页源码发现from表单除了提交username和password之外,还提交了一个hidden属性的token值:

    这样每次提交要验证token值(每次更新),表面上可以防止。但是他后端产生的token每次以明文形式传到前端,就有了漏洞。

    第一步:抓包之后,我们把token设置变量,options的grep extract添加token

    第二步:token变量的type设置成recursive grep

    第三步:attack得到用户密码。

    注意:recursive grep类型只能单线程attack。然后除token外只有一个变量的话攻击类型可以设置成pitchfork一一对应的形式。

     

     

    六、基本防范措施

    1.设计安全的验证码(安全的流程+复杂而又可用的图形)

    2.对认证错误的提交进行计数并给出限制,例如:连续5次输错,锁定一定时间

    3.必要的情况下,使用双因素认证

  • 相关阅读:
    Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
    MyBatis 实现一对多有几种方式,怎么操作的?
    利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进 程的信息?
    哪个命令专门用来查看后台任务?
    什么是 MyBatis 的接口绑定?有哪些实现方式?
    什么是端到端微服务测试?
    我们如何在测试中消除非决定论?
    什么是持续监测?
    怎么使一个命令在后台运行?
    博客园样式美化(兼容为知笔记)
  • 原文地址:https://www.cnblogs.com/hzk001/p/12609005.html
Copyright © 2020-2023  润新知