千元稿费!还有保底奖励~
想必大家都会使用burp进行爆破,当遇到带验证码的登录表单进行爆破时,基本尝试抓包后观察验证码是否主动更新,或者进行验证码绕过(我是十八期萌新,听风风说的有这个方法,但我还没学到),机缘巧合下我接触到了captcha-killer这个插件,可以提供给大家第三种爆破思路
(我的插件和脚本打包放在文章附件了,插件也可以从GitHub下载)
(https://github.com/c0ny1/captcha-killer “GitHub下载链接以及部分资料地址”)
什么是captcha-killer?
总的来说,它是个用Java写的插件,可以无缝衔接于burp.但是他只是一个调用接口,并不进行识别的操作,真正进行验证码识别处理的是两个个用Python脚本(codereg.py)调用的两个接口(ddddocr和aiohttp), 稍后我会进行简明的介绍
captcha-killer设计理念是只专注做好对各种验证码识别技术接口的调用, 说具体点就是burp通过这一个插件,就可以适配各种验证码识别接口,无需重复编写调用代码.
今天不谈编码层面如何实现(主要是我也不会),感兴趣的同学可以去github看源码. 此篇文章只通过使用步骤来说明使用方法
简要介绍codereg.py
个人理解,这个脚本的整体识别流程是通过python在本地开启一个验证码识别的web接口来接收captcha-killer传来的验证码图片内容,然后调用识别服务(利用机器学习)来识别,最后返回结果给captcha-killer.
ok废话不多说,这里是正题!!!!!!!!!!!!
1.安装插件
首先打开burp,选择Extender——>Add(默认Java类型插件)————>Select File——>选择下载的captcha-killer-modified-jdk14.jar文件
发现任务栏里多出一个captcha-killer,就说明安装成功,如下图↓
2.获取目标网站验证码
(1)找到要爆破的网站并打开burp,我找到了一个网站作为案例(并未进行爆破)
(2)开始抓包,点击验证码刷新,拦截此次请求
(3)鼠标右键,将这个包发送到captcha-killer模组里
[‘extensions’—->’captcha-killer’—>’send to captcha panel’]
(4)点击任务栏里的插件模组,可以看到数据包已经自动填入,点击获取按钮,可以获取数据包内的图片验证码,此时获取验证码的流程已经走完,接下来的任务是进行识别
3.开启本地验证码识别服务
本文实验的python版本环境:Python 3.9.4
(1)python中安装ddddocr和aiohttp包
和其他第三方包的安装方式一样,在dos命令中写入以下命令
pip install ddddocr aiohttp -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
这样就是安装成功了
(2)用python运行codereg.py脚本
打开命令控制台(建议在当前文件夹下打开cmd,不用填路径也不用配环境变量)
运行以下脚本
python codereg.py
显示ddddocr(本地验证码识别的web接口)已经运行成功,此时的接收端口为8888.
注意,这个dos面板不能关掉,否则ddddocr不会继续运行,也就不能进行识别了
(3)在burp的captcha页面配置接口URL和请求模板(Request template)
POST /reg HTTP/1.1
Host: 127.0.0.1:8888
Authorization:Basic f0ngauth
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:97.0) Gecko/20100101 Firefox/97.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 8332
<@BASE64><@IMG_RAW></@IMG_RAW></@BASE64>
将以上代码直接复制进插件页面的左下角的请求模板中,填写url为http://127.0.0.1:8888
点击识别之后通过ddddocr进行了机器学习的识别,可以看到dos面板开始进行了一系列操作
此时可在右边的结果栏看到识别成功(这个第一张示例验证码比较复杂,所以识别失误了),但问题不大,识别简单的验证码成功率为百分之99.9%,复杂的验证码就别用这个插件了
以上就是配置识别验证码的接口配置完成,接下来进行批量化处理的教学
4.最终步骤:将验证码识别与爆破结合
(1)按正常步骤进行账号密码验证的抓包
打开拦截开关,抓取登录操作的数据包
(2)发送到intruder模块
和正常的爆破一样,发送到入侵者模块
(3)对密码和验证码添加攻击字段标记并选择pitchfork模式
(4)字段1对应密码,选择字典
payload页面字段1选一个爆破密码的字典
(5)字段2对应captcha-killer模块
第二个payload是验证码的值
线程2选择继承插件模式
继承插件选择captcha-killer
(6)一定注意选择单线程
线程池为单线程,否则验证码识别会交叉出现错误,很好理解,因为页面的验证码会一次一换,如果不是一一对应的关系就会出现验证码错误.
(7)最终开始攻击,就会实现密码和验证码一一对应的爆破了
↑此图为本机测试,并未进行未授权攻击