0X00 背景介绍
最近几天在做测试的时候,发现有一处短信轰炸漏洞。但是在发送短信验证码之前需要验证图形验证码,并且图形验证码使用后就过期了,这给验证带来了一点麻烦。使用burpsuite插件时,对比了几个不同的识别接口,把过程记录下来,做个记录。
0X01 导入插件
在做图形验证码识别的burpsuite插件主要有captcha-kiler和reCAPTCHA两种,下载地址:
captcha-kiler:https://github.com/c0ny1/captcha-killer/tags
reCAPTCHA:https://github.com/bit4woo/reCAPTCHA/releases/tag/v1.0
在burp中导入,打开burpsuite--Extender--Extensions--Add--Select file
然后就可以看到出现了captcha-kiler和reCAPTCHA选项卡。
0X02 配置图形验证码识别接口
先拦一个短信验证码的包,右键captcha-kiler--sent to captch panel
点击获取,就可以得到图形验证码:
接下来配置识别接口,可以自己调试接口,然后右键send to interface panel
也可以在接口Request template中右键调用模板
我现在使用的是图鉴,他的HTTP请求模板是:
POST /base64 HTTP/1.1
Host: api.ttshitu.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: Hm_lvt_d92eb5418ecf5150abbfe0e505020254=1585994993,1586144399; SESSION=5ebf9c31-a424-44f8-8188-62ca56de7bdf; Hm_lpvt_d92eb5418ecf5150abbfe0e505020254=1586146123
Connection: close
Content-Type: application/json; charset=UTF-8
Content-Length: 2658
{"username":"***","password":"***","typeid":"1","image":"<@BASE64><@IMG_RAW></@IMG_RAW></@BASE64>"}
username password填自己的,typeid为识别的类型1代表纯数字,自己填写正则匹配验证码,图鉴的正则就写<result>(.*)</result>就可以匹配到。
以上能走通,说明图形验证码识别就没有问题了。
0X03 使用captcha-kiler进行短信轰炸
将发送短信验证码的报文发送到Intruder,因为我们只需要修改图形验证码的值即可,所以只留一个变量。
注意:获取验证码的cookie一定要和intruder发送的cookie相同!
选好payload就可以爆破了:
我们可以看到,有很多图形验证码识别成功,并发送了短信。
至此,使用图形验证码识别插件进行短信轰炸就成功了。
0X04 captcha-killer深入了解
首先,报文结构的构造,我们要参考你所使用的平台提供的接口文档,来去使用这个接口,这根据不同接口,调用规范也不同,需要自己去看。
其次,在传送图片验证码时,除了接口平台的规范,captcha-killer插件也有自己的要求:
如果要传输图片base64编码后的内容,就应该使用<@BASE64><@IMG_RAW></@IMG_RAW></@BASE64>去代表要传输的图片内容,可以和上面图鉴的HTTP请求包对应。
在返回包识别验证结果时,插件给我们提供了4种方式进行匹配。
我们在图鉴的返回包中,就可以选择Regular expression,正则表达式为<result>(.*)</result>
识别成功之后,可以在识别接口的空白处点击右键,保存模板,下次直接使用。
0X05 插件及识别接口对比
文章开头我们还列举了个reCAPTCHA,我们可以导入看一下:
右边他直接给出两个接口平台:https://www.jsdati.com和GSA Captcha Breaker,在我看来,这个插件只是把captcha-kiler构造接口平台的HTTP报文和提取识别后的短信验证码做了,但是极大限制了你选择平台的自由度。
其次,对于识别接口平台,我现在使用图鉴http://www.ttshitu.com/register.html,1块钱可以尝试500次,准确率还行,优点是不用实名认证,减少了泄漏个人信息的可能。对了,使用推荐码4b0a3ee919844bb4b2fc7468132bfe9e或者点击推广链接http://ttshitu.com/register.html?inviter=ff72699678cc4209bb6ecb4f09e2f3e5进行注册,也是个给我增加积分的好办法。其他的我还见过百度和阿里的ocr,感兴趣的可以试试。
我其实还尝试了GSA Captcha Breaker和完美验证码识别系统,但是没有成功,后面可以继续尝试一下,毕竟搭建在本地的识别系统不要钱,哈哈哈。
长按下方图片关注我们: