验证码识别插件对登录页面进行爆破

0x01插件下载

项目地址:
https://github.com/c0ny1/captcha-killer
https://github.com/f0ng/captcha-killer-modified
安装burp插件:
下载已编译好的jar文件 https://github.com/f0ng/captcha-killer-modified/releases

图片[1]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室

0x02验证码识别平台使用

https://github.com/sml2h3/ddddocr 安装命令

pip install ddddocr

以上命令将自动安装符合自己电脑环境的最新ddddocr

0x03验证码接口搭建

https://github.com/sml2h3/ocr_api_server 将源代码下载到本地

图片[2]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室
# 安装依赖
pip install -r requirements.txt -i https://pypi.douban.com/simple

# 运行  可选参数如下
# --port 9898 指定端口,默认为9898
# --ocr 开启ocr模块 默认开启
# --old 只有ocr模块开启的情况下生效 默认不开启
# --det 开启目标检测模式

# 最简单运行方式,只开启ocr模块并以新模型计算
python3 ocr_server.py --port 9898 --ocr

# 开启ocr模块并使用旧模型计算
python3 ocr_server.py --port 9898 --ocr --old

# 只开启目标检测模块
python3 ocr_server.py --port 9898  --det

# 同时开启ocr模块以及目标检测模块
python3 ocr_server.py --port 9898 --ocr --det

# 同时开启ocr模块并使用旧模型计算以及目标检测模块
python3 ocr_server.py --port 9898 --ocr --old --det

使用一下命令开启服务

python3 ocr_server.py --port 9898 --ocr
图片[3]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室

0x04配置验证码地址

使用带验证码页面进行测试
http://demo.xxxxx.com/login.php?s=Admin/login

图片[4]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室

获取更新验证码链接并发送到插件

图片[5]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室

使用burp抓取获取验证码数据包,然后右键captcha-killer -> send to captcha panel发送数据包到插件的验证码请求面板。

图片[6]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室

然后到切换到插件面板,点击获取即可拿到要识别的验证码图片内容。

图片[7]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室

注意:获取验证码的cookie一定要和intruder发送的cookie相同!

0x05配置识别接口的地址和请求包

图片[8]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室

启动ocr_api_server项目API

python3 ocr_server.py --port 9898 --ocr

拿到验证码之后,就要设置接口来进行识别了。我们使用ocr_api_server项目,用burp抓包,然后右键发送到插件的接口请求面板。

图片[9]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室

然后把图片内容的位置用标签来代替。比如该例子使用的接口是post提交,值为图片二进制数据的base64编码后的url编码。那么Request template(请求模版)面板应该填写如下:

图片[10]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室
POST /ocr/b64/json HTTP/1.1
Host: 127.0.0.1:9898
User-Agent: python-requests/2.24.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Content-Length: 2540

<@BASE64><@IMG_RAW></@IMG_RAW></@BASE64>

最后点击“识别”即可获取到接口返回的数据包,同时在request raw可以看到调用接口最终发送的请求包。

图片[11]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室

模版被渲染为最终的请求

0x06设置用于匹配识别结果的规则

通过上一步我们获取到了识别接口的返回结果,但是插件并不知道返回结果中,哪里是真正的识别结果。插件提供了4中方式进行匹配,可以根据具体情况选择合适的。

图片[12]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室

通过分析我们知道,接口返回的json数据中,字段words的值为识别结果。我们这里使用Regular expression(正则表达式)来匹配,然后选择yzep右键标记为识别结果,系统会自动生成正则表达式规则” (.*?)”}]。

图片[13]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室

设置匹配方式和自动生成规则 注意:若右键标记自动生成的规则匹配不精确,可以人工进行微调。比如该例子中可以微调规则为”words”:  “(.*?)”}将更加准确!到达这步建议将配置好常用接口的url,数据包已经匹配规则保存为模版,方便下次直接通过右键模板库中快速设置。同时插件也有默认的模版供大家使用与修改。

0x07在Intruder模块调用

配置好各项后,可以点击锁定对当前配置进行锁定,防止被修改导致爆破失败!接着安装以下步骤进行配置

图片[14]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室

设置Intruder的爆破模式和payl

图片[15]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室


验证码payload选择有插件来生成记得使用单线程,不然验证码对应不上

图片[16]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室

点击开始进行爆破

图片[17]-验证码识别插件对登录页面进行爆破-NGC660 安全实验室

进行爆破,可以通过对比识别结果看出识别率

参考文章

https://gv7.me/articles/2019/burp-captcha-killer-usage/

https://mp.weixin.qq.com/s/_P6OlL1xQaYSY1bvZJL4Uw

E N D

本文作者:TideSec

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/186973.html

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享