目录
前言
本来想在打靶场的同时结合实战案例放在一起进行分享,结果发现篇幅太长,也不利于看,就放在下一篇中结合着一起来看,当然我也会在下面的靶场中,写出具体的一些实战遇到的解释,
为什么要着重来写这个,能用弱口令进入的页面是获得权限以及获取其他漏洞的最好方式了,实在没办法的话,采取其他战术.
弱口令与暴力破解介绍
弱口令是指容易被猜测或破解的密码,而爆破破解是一种通过穷举法尝试所有可能的密码组合以破解密码的方法。
弱口令通常指的是那些强度不高、容易被人猜到或者被破解工具所破解的密码。这类口令往往包含简单的数字和字母,例如“123”或“abc”,包括常见的生日日期、重复的数字和字母等。由于这些密码结构简单,没有混合使用大小写字母、数字及特殊字符,使得它们对渗透人员来说非常容易被识别和破解。
爆破破解则是一种基于穷举法的破解手段,它通过系统地尝试各种可能的密码组合直到找到正确的密码。这种方法对于人为设置的非随机密码尤为有效,因为人为设置的密码往往有一定的规律性,可以通过预设的密码字典或彩虹表来缩短破解所需的时间。在Web应用中,暴力破解常用于对应用系统的认证信息进行获取,渗透测试人员会使用大量认证信息尝试登录,直到得到正确的结果。为了提高效率,通常会使用自动化工具进行操作。
漏洞挖掘实战专栏
漏洞挖掘实战http://t.csdnimg.cn/nU21v
个人介绍
本人的小介绍,大佬勿喷
不知名普通本科院校
软件大二入坑网络安全
刚入坑教育SRC不到两个月
获得过两张985,211的漏报送证书,和一张教育部的证书
参加过多个渗透实战项目,并取得不错的成绩
获得过CNVD原创事件型漏洞证书,多个cnvd编号
第一关:基于表单的暴力破解
最常见的登录界面,使用弱口令失败,一般会采用爆破密码的方式,当然也会辅助性的结合逻辑漏洞,这个后面碰到再说
绕过步骤
1.第一步抓包观察
先随便输入一个用户名和密码观察回显,然后再随便输入后,进行抓包,注意查看返回的提示.
在实战中,一会出现和下面的提示一样的文字一般是红色,或者是弹窗一样的东西.下面提示账号或密码不存在.
2.使用burp的攻击模块
然后将抓到的包发送的攻击模块,并将账号密码分别增加载荷
3.选择攻击模式以及爆破字典
然后Attack Type选择Cluster bomb,这里我们需要进行账号密码的爆破,所以我们需要对两个参数进行palyload设置,然后选择设置是狙击手,也就是简单列表.然后我分别对两个参数进行字典的设置(选择字典导入或是复制字典,进行粘贴),然后开始
4.进行爆破
这里因为用大字典跑的话,比较费时间,我就将提示里的账号密码放入到我自己构造的小字典中了.
这里也是爆破出两个,其中提示给出了三个用户,我手动验证了一下发现有一个用户其实是错误的.
第二关 验证码绕过(on server)
绕过步骤
这里就涉及到逻辑部分的漏洞了,因为开发人员的开发失误在爆破中我们常会通过逻辑漏洞辅助我们进行弱口令爆破
1.观察输入错误观察返回结果
观察页面一般验证码做的很随意,就可以考虑,当然也会存在像若依的那样的有明显判别方式的验证码,可以尝试若依的弱口令或是其他方式进行测试了.
首先观察一下,用户名和密码输入错误值,当验证码是错误值时,返回结果如下,提示验证码错误.
2.输入正确观察返结果
用户名和密码输入错误值,当验证码是正确值时,返回结果如下,提示用户名或密码不存在
3.进行发包测试
把刚刚试的随便一个包send to repeater
4.重复发包测试
改成当前网页显示的验证码,send,发现response中提示的是用户名或密码不存在,说明验证码是对的.
5.绕过验证码开始爆破
这就说明之前的猜想是正确的,只要网页没刷新,验证码在burp suite中可以多次使用,直接从repeater中把上图的请求包send to intruder,和上一关一样配置intruder
还是这两个用户可以进行登陆.
第三关 验证码绕过(on client)
绕过步骤 先观察
1.进行测试
用户名和密码输入错误值,当验证码是正确值时,返回结果如下,提示用户名或密码不存在
2.输入错误出现弹窗
这种也是在实站中常会出现的一种验证,但是发现这个一般是前端验证的可能性是非常大的.
用户名和密码输入错误值,当验证码是错误值时,有弹框提示验证码错误,之前对用户名或密码的提示也没有清除.
3.进行验证推测
那根据上面两张图,特别是验证码错误时有弹框这点,我怀疑用户名和密码是在后端验证的,但验证码是在前端验证的。右键检查页面的原代码,发现验证码的验证是从前端进行验证的,当然这里也可以将burp的抓包进行打开,如果输入错误的验证码后提交没有抓到包,那么证明是进行了前端验证,没有经过服务器.
4.输入正确的验证码绕过
既然是前端检测,那直接用burpsuite发请求报文绕过前端就可以了,是前端验证,那么我们只需要输入正确的验证码,就可以抓到包了,把burpsuite的proxy模块抓到的这个报文send to intruder.也可在burp中设置丢掉js或是在浏览器中禁用js就可以了,绕过了
然后,我们进行上面第一关的操作,这里还是这两个用户可以进行登录
第四关 token防爆破?
绕过步骤
这个目前在我测试的网站中,遇到过比较少了,基本存在token的都在一些接口处,现在的网站多使用cookie以及session进行验证了,基本就是进行爆破次数限制只能爆破5次.
1.抓包进行观察
首先还是观察~这关没有验证码了,用户名或者密码输错会提示用户名或密码不存在
抓包后出现token那既然和token有关,我们用不一样的值login两次看看burpsuite抓到的报文有啥区别?把proxy模块抓到的两次登录的报文send to comparer对比一下,确实两次的token不一样,把proxy模块抓到的报文send to repeater,操作操作,观察一下有什么办法突破:
2.尝试重放
(1)直接重放
先尝试不改动token,直接重放,response中提示 csrf token error
(2)删除token进行重放
尝试删除token,response中什么返回结果都没有
(3)观察返回页面进行分析
虽然前面两条路死了,但是尝试的时候发现response中网页源代码有一个type为hidden,name为token的input标签,value和request报文的token不一样,应该是下一个报文的token。那试一下把request中的token值改为response中的token值,再次send,返回了提示用户名或密码不存在,并且返回了下一次的token值
3.进行爆破配置
根据以上结果,下一次request需要携带的token就是上一次response中html代码中的隐藏字段值,也就是说request中的token是可以从上一个response中提取的,那么还是可以暴力破解,只不过配置稍微复杂一点:
首先position除了username和password再增加token,此外要注意Attack type选Pitchfork(payload一一对应,数量为最少的payload的数量)。.这里为啥要选Pitchfork而不能选Cluster bomb,尝试一下就知道了
由于前面使用的用户名和密码payload列表都是适用于Cluster bomb的,而Pitchfork对payload的要求可能更高一些(需要提前整理好对应关系),我这里并没有把用户名和密码payload列表进行更改,不过通过这种方式确实实现了攻击。
前两个payload就按照第一关进行配置,第三个payload type设置为Recursive grep
上图这个payload options是在哪里设置的呢?就是下图这里
确认上面这个设置之前我觉得保险起见应该在网页源代码里面观察一下有多少符合正则表达式的位置,从下图来看就这一个地方符合,那就妥了
此外还有一个需要注意的地方是线程要设置为1,这是因为每次都要用上次response中返回的token,多线程就会乱套了。
可以发现有每次的token都不同,不过也证明了只要字典够大确实token也并不会影响爆破
总结
是对自己在进行大量渗透测试后,返回来进行复盘,同时也能更好的辅助自己能够扩展更多的渗透思路,也也能对自己的之前的方法进行复习,个人比较喜欢复盘,每次都能够获得新的思考和感悟.