【Pikachu 靶场精讲】验证码绕过(on server)

admin 2023年12月10日02:42:51评论27 views字数 1693阅读5分38秒阅读模式

验证码生成原理

首先根据标题来看这题的重点在于验证码,并且验证码是在服务端的,所以先来分析一下验证码的生成原理

点击验证码刷新,并抓包【Pikachu 靶场精讲】验证码绕过(on server)

可以看到网站向/inc/showvcode.php这个路径请求了验证码,发送数据包后,页面中的验证码就会被刷新【Pikachu 靶场精讲】验证码绕过(on server)

访问/inc/showvcode.php路径,发现刷新一次就会产生一个验证码图片【Pikachu 靶场精讲】验证码绕过(on server)

那整个验证码的请求逻辑就变得清晰了,在正常情况下,填入用户名、密码、验证码后【Pikachu 靶场精讲】验证码绕过(on server)

无论登录成功还是失败,都向/inc/showvcode.php请求新的验证码【Pikachu 靶场精讲】验证码绕过(on server)

最优解法

这里的常规解法是基于验证码可被复用实现的,但在实际情况下,不是每个验证码功能都存在复用漏洞,故我们在下面会介绍一些通用方法

我们先依然对登录页面抓包,填写正确的验证码【Pikachu 靶场精讲】验证码绕过(on server)

将请求包发送到重放器(Ctrl+R),多次发送发现 HTTP 响应码始终返回 200 ,正常来说,验证码只能发送一组数据,发送后即失效,但此时多次发送服务器仍然正常响应,因此,根据上述条件可判断出此页面存在验证码复用漏洞

HTTP 响应码:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599)

直接发送到 Intruder 模块进行爆破即可,将用户名和密码区域作为 Payload,验证码因为存在复用漏洞不变即可,具体过程不再赘述【Pikachu 靶场精讲】验证码绕过(on server)

通用解法 —— OCR识别验证码

使用工具:

  • ddddocr
  • captcha-killer-modified

配置环境

  1. 下载 captcha-killer-modified.jar 包并导入 Burp Suite(JDK 8)【Pikachu 靶场精讲】验证码绕过(on server)
  2. 导入 Python pip库
Pillow==9.5.0
aiohttp==3.8.3
argparse==1.1
  1. 搭建验证码识别服务 ddddocr(Python 版本不能高于 3.11
pip install ddddocr
  1. 运行codereg.py脚本(Python 3)
python codereg.py

出现======== Running on http://0.0.0.0:8888 ======== 即为成功配置 ddddocr

Pikachu 靶场实践

打开 Burp Suite 开始抓包【Pikachu 靶场精讲】验证码绕过(on server)

用户登录页面的数据包发送到captcha-killer-modified插件【Pikachu 靶场精讲】验证码绕过(on server)

将 POST 请求的 URL 地址改为验证码的请求路径/inc/showvcode.php这样才能正确的请求到验证码图片,在实战中需要根据具体情况具体判断,Pikachu 靶场需要这样去请求验证码图片【Pikachu 靶场精讲】验证码绕过(on server)

接口 URL 配置为http://127.0.0.1:8888,点击识别,检查环境和功能是否正常,若正常则右侧会出现验证码图片和识别结果【Pikachu 靶场精讲】验证码绕过(on server)

Pikachu 靶场默认的验证码均为 6 位,插件默认的识别位数为 4 位,在实战中可以将codereg.py中的验证码长度改为实际值,这里我们将0:4改为0:6【Pikachu 靶场精讲】验证码绕过(on server)

将此数据包发送到 Intruder 模块进行爆破,在包含验证码识别时,只能使用Pitchfork(交叉)功能,使用Clusterbomb(集束炸弹)会出现验证码多次使用导致爆破失败的情况,Paload-1Payload-2正常填入字典即可,Payload-3需要使用 Extension-generated Payload 类型【Pikachu 靶场精讲】验证码绕过(on server)

并使用captcha-killer-modified作为生成器【Pikachu 靶场精讲】验证码绕过(on server)

同时需要注意的是,资源池中最大并发数要设置为 1,请求间隔建议设定为 1000 毫秒【Pikachu 靶场精讲】验证码绕过(on server)

Intruder 模块和captcha-killer-modified中的 Cookie 需要保持一致【Pikachu 靶场精讲】验证码绕过(on server)

最终进行攻击即可,结果如下,这里展示的是多次测试中的最优结果【Pikachu 靶场精讲】验证码绕过(on server)

总结

验证码 OCR 识别方法成本较低、工具化较为成熟,劣势在于 ddddocr 本地验证码识别成功率不高(65%),且无法使用Clusterbomb(集束炸弹)功能,仅能在已知用户名或密码的情况下使用,验证码准确度方面可针对网站验证码进行针对性机器学习或采用付费第三方验证码识别接口,可大幅提高准确率,本次仅为方法演示,不再过多优化

原文始发于微信公众号(天禧信安):【Pikachu 靶场精讲】验证码绕过(on server)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月10日02:42:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【Pikachu 靶场精讲】验证码绕过(on server)https://cn-sec.com/archives/2283639.html

发表评论

匿名网友 填写信息