目录
本文通过《pikachu靶场通关笔记》系列,通过burpsuite的intruder模块完成暴力破解之验证码绕过(on server)关卡。
一、暴力破解
暴力破解是指攻击者通过不断尝试各种可能的组合,如用户名和密码、验证码等,来获取对系统或资源的访问权限。通常是由于系统缺乏有效的访问控制机制,如未限制登录尝试次数、未采用强密码策略或未对验证码进行严格验证等。攻击者利用自动化工具进行大量尝试,一旦找到正确组合,就能够突破系统防护,导致敏感信息泄露或系统被非法控制。
二、验证码服务端绕过原理
验证码绕过(在服务器端暴力破解)的原理主要是利用服务器在验证码验证机制上存在的缺陷,通过不断尝试可能的验证码组合来达到绕过验证的目的,以下是其具体原理分析:
- 验证码生成机制缺陷:部分服务器生成的验证码可能存在规律,例如数字验证码是按照顺序生成,或者验证码的字符集范围较小(比如某种情况下验证码没有变化)。攻击者可以利用这些规律,缩小暴力破解的范围,提高破解成功率。
- 验证逻辑缺陷:服务器在验证验证码时,如果没有正确处理并发请求或者没有对验证码的验证次数进行有效限制,攻击者就可以通过多线程或不断发送请求的方式,快速尝试大量的验证码组合。即使验证码本身是随机且复杂的,但由于验证机制的缺陷,攻击者仍有可能在短时间内猜出正确的验证码。
- 会话管理问题:服务器在处理用户会话时,如果没有正确关联验证码和用户请求,或者验证码在一定时间后未及时失效,攻击者就可以利用这些脆弱点,通过重复使用已获取的验证码或者在验证码过期前进行多次尝试来绕过验证。
- 缺乏有效防护措施:若服务器没有采取如验证码错误次数限制、IP 访问限制、验证码有效期设置等防护措施,攻击者可以无限制地尝试破解验证码,增加了暴力破解成功的可能性。
三、渗透准备
1、进入靶场
打开pikachu靶场之基于server端的暴力破解,点击右上角的提示,如下图所示。
http://192.168.59.1/pikachu/vul/burteforce/bf_server.php
如上所示,右上角提示靶场的三个用户名和密码还是基于表单的三个,那么也就是如下所示。
admin/123456
pikachu/000000
test/abc123
2、构造字典
构造暴力破解的用户名字典user.txt、密码字典password.txt。
(1)用户名字典user.txt内容如下所示。
admin
root
liujiannan
(3)密码字典password.txt内容如下所示。
123456
000000
ljn
999999
用户名密码和密码字典如下所示。
3、bp开启拦截并登录
firefox打开pikachu靶场,开启bp代理抓包,进入基于服务端的暴力破解界面,输入用户名、密码和验证码并点击登录。
4、bp抓包并发送到repeater
burpsuite抓包后,在http history历史记录中找到此post报文,点击选中此报文,并将报文送到intruder,具体如下图所示。
5、测试验证码功能
将报文发送到repeater,测试报文验证码功能。
(1)测试无密码的情况,发现服务端检测密码是否为空,无法通过此绕过登录检测。
(2)测试无用户名的情况,发现服务端检测密码是否为空,无法通过此绕过登录检测,不过发现验证码依旧没有发现变化,与(1)时尝试的验证码一样,并未更新。
(3)验证码输入正确,用户名和密码错误,发现服务器可以检查出用户名和密码不匹配,且此时为第三次尝试,发现验证码依旧没有发现变化。
(4)输入正确用户名,正确密码,正确验证码,登录成功,且此时为第四次尝试,发现验证码依旧没有发现变化。
(5)再次切换为另外一个正确用户名和密码,正确验证码,此时登录成功,不过此第5次尝试后,发现验证码依旧没有发生变化。
(6)输入正确用户名,正确密码,错误验证码,发现服务器提示验证码错误。即服务端检测验证码,但是此为第6次尝试,验证码仍未发生变化。综上可知验证码在发送到bp后,在同一页面中并未发生变化,可以利用此bug进行暴力破解。
四、渗透实战
1、bp设置inception on
由于点击login后验证码会更新,但是发送至bp后验证码不会发生变化,故而将bp的inception设置为inception on。
2、登录
进入基于服务端的暴力破解界面,输入个性化的用户名密码,并输入正确验证码,并点击login,此时bp拦截到报文,将其发送到intruder。
3、配置intruder的positons字段
在burpsuite intruder中的intruder中配置positons,注意:
(1) 选择集束炸弹cluster bomb。
(2) 两个payload分别选择username和password对应的值。
4、配置intruder的payload字段
(1)参数payload1配置截图
(2)参数payload2配置截图
5、开启攻击
点击start attack后效果如下所示,在intruder result中找到长度不同的用户名密码对,点击此项目对应的response render使显示图形化登录结果,通过暴力破解渗透成功获得用户名admin、密码123456。