什么是GPT-4?完整指南
一次非常普通的短信轰炸 AND【TangGo】第三方API调用验证码识别
抓包首先访问到漏洞所在页面
查看历史流量
注意,在响应包中出现了参数
"id":"*****",
"image":****
输入手机号和图形验证码在获取验证码后再查看请求体
这里含有图形验证码的ID和orgNumber
开始使用识别验证码插件识别
# 验证码插件识别下载地址
https://github.com/c0ny1/captcha-killer/releases/tag/0.1.2
将验证码请求包发送到验证码识别插件中
进行发送,报错了,缺少关键字,关键字就是img内容的字段
获取成功后,导入ddddocr模版
然后开启识别脚本
可以看到识别度是100%
进行短信轰炸还需要提取验证码ID
作者不清楚burp这个步骤哪里操作,求原谅
有知道的佬可以联系我,我向你取经
这里使用TangGO 测试工具来进行提取图形验证码的ID以及img内容来爆破
# 工具下载地址
https://tanggo.nosugar.tech/#/
打开 TangGO 测试工具,找到 HTTP模糊测试工具:
打开后进入到自定义流程中,新建
丢入图形验证码请求包后,把完整的响应体返回给get_yzm变量完成配置后,点击测试
可以成功获取到图形验证码响应体,再增加一条流程来提取响应体的ID和image内容
将响应体发送到正则表达式生成器中
选取ID值,后点击正则表达式,进行测试后提取ID值成功,复制正则表达式后,新建流程数据处理流程
操作变量就是刚才获取响应体的绑定变量,然后对处理规则新建
添加成功后,再返回到正则提取器中选取image内容
这默认是20,修改成5即可,拿到正则表达式后,再增加数据处理流程
目前是三条流程
需要把image内容去识别出验证码,那么就需要获取识别验证码的API请求
打开Wireshark,由于API是本地开启的,就选择回环流量
然后输入HTTP进行筛选出HTTP请求,然后在burp验证码识别插件中进行识别,来获取API接口的请求
查看它的HTTP流(ctrl+alt+shift+H)
观察API请求,请求体就是图片的base64编码
POST /reg HTTP/1.1
Authorization: Basic f0ngauth
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:97.0) Gecko/20100101 Firefox/97.0
Connection: keep-alive
Host: 127.0.0.1:8888
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
Content-Length: 3484
Content-Type: application/x-www-form-urlencoded
图片base64编码
再新建流程对api请求获取识别后的验证码,丢入API请求后,在请求头中插入提取的image内容绑定的变量
这个就是完整流程
获取到图形验证码响应体->提取ID && 提取inage->api接口识别验证码
然后对获取验证码请求插入对应变量
然后进入测试过程进行测试配置
点击开始测试后轰炸
可以看到响应中短信验证码发送成功
查看测试流程和最终请求体
查看手机短信结果
其实这里的短信验证码也有问题的,由于没有限制的直接发送短信验证码,且短信验证码是4位数更是20分钟有效,在爆破短信验证码后,既可注册成功获取到账户token值,达到任意用户注册这里我就没有多写了
修复建议:
1、限制验证码的有效时效,通常设置在30秒至50秒之间失效。
2、限制同IP在短时间内频繁请求验证码。
3、对图片验证码,增加噪点渲染,防止被光学字符识别(OCR)识别。
4、短信验证码输入错误,立即刷新图形验证码,每一次获取短信验证码时进行图形验证码校验,设置短信验证码错误次数上限需要重新获取新的短信验证码,以防止对短信验证码的暴力破解攻击。
文章转自微信公众号@Kei sec