`搜索公众号:白帽子左一,领配套练手靶场,全套安全课程及工具`

验证码识别

前言
Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,其各个组件之间可灵活配合,可定制化程度极高,正可谓居家旅行杀人越货必备之神器。

但是当遇到各式各样的验证码,防火墙等场景,神器也无从下手。有幸 Burp Suite 提供了非常强大的开发接口,可根据需求自行强化。

快速开发
既然要敏捷开发,采用轻量级的脚本 python 来实现拓展最为快速灵活,也懒得去拖 swing 界面做交互,参数对应修改就行。

本次验证码识别用于 Intruder 模块,在脚本中实例化 IntruderPayloadGenerator 类以及其 getNextPayload 方法即可,具体流程如下 。

抓取验证码请求

验证码请求头
headers = '''Host: ************User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:69.0) Gecko/20100301 Firefox/62.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://**********/cms/fastadmin/public/index.php?s=/captcha"

对接验证码识别引擎

可以使用深度学习来识别验证码,或者接入第三方通用平台。

本文为了简单就直接对接某个打码平台,参考平台文档,引入 api、设置对应的id、key 等参数即可 。

验证码 payload 生成

class IntruderPayloadGenerator(IIntruderPayloadGenerator):def __init__(self):self._payloadIndex = 0def 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.valuereturn payload

完整脚本
https://github.com/yaseng/pentest/blob/master/misc/burp_captcha_crack.py

实例演示
拿一个后台系统来做演示

载入拓展
先引入 jython-standalone 包以及相关模块

加载拓展 burp_captcha_crack.py

配置参数
抓取验证码的请求头、url 写入脚本

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

此时 payload1 为
§admin&password=admin232323§

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

payload1_1 加载用户名字典

payload1_2 为空,分隔符 &password= ,并且去掉 URL 自动编码选

payload1_3 加载密码字典

payload 2 类型 Extension-Generated

选择对应的拓展

attack

切换IP

前言
上部分给 Burp Suite 添加验证码识别技能点,对于现代化的渗透测试神器来说,自动化切换 ip 也是必备技能,可以通过动态设置 HTTP 代理来完善此功能。

快速开发
原理分析
对于 HTTP 代理,HTTP 客户端向代理发送请求报文,代理服务器需要正确地处理请求和连接(例如正确处理 Connection: keep-alive),同时向服务器发送请求,并将收到的响应转发给客户端。

图片来源:《HTTP 权威指南》

原理较为简单,具体看数据包对比
正常访问

http 流

GET / HTTP/1.1Host: myip.ipip.netUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:69.0) Gecko/20100101 Firefox/69.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-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: keep-aliveUpgrade-Insecure-Requests: 1Cache-Control: max-age=0HTTP/1.1 200 OKDate: Mon, 01 Apr 2020 16:58:35 GMTContent-Type: text/plain; charset=utf-8Content-Length: 67Connection: keep-alive...... IP...113.*.*.*  .................. ...... ......  ......

代理访问
HTTP 代理 180.143.244.66:18637

http 流

GET http://myip.ipip.net/ HTTP/1.1Host: myip.ipip.netUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:69.0) Gecko/20100101 Firefox/69.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-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: keep-aliveUpgrade-Insecure-Requests: 1Cache-Control: max-age=0HTTP/1.1 200 OKDate: Mon, 01 Apr 2020 17:18:45 GMTContent-Type: text/plain; charset=utf-8Content-Length: 69Connection: close...... IP...180.143.244.66  .................. ...... ......  ......

可以看到正常访问和代理访问在数据层就是请求路径和目标不同。使用代理就是把数据带上目标信息先发送到代理服务器,要在 Burp Suite 中实现代理功能,动态修改请求目标和请求 header 即可 。

代码编写
参考官方文档,修改 HTTP 请求,需要在脚本中实例化 IHttpListener 类并重写 processHttpMessage 方法。

HTTP_PROXY={'ip':'14.118.163.95','port':19048}class BurpExtender(IBurpExtender, IHttpListener):def registerExtenderCallbacks(self, callbacks):self._callbacks = callbacksself._helpers = callbacks.getHelpers()callbacks.setExtensionName("IP switch")callbacks.registerHttpListener(self)def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):# 只处理请求if not messageIsRequest:returnhttpService = messageInfo.getHttpService()# 修改请求目标为代理中转messageInfo.setHttpService(self.helpers.buildHttpService(HTTP_PROXY['ip'],HTTP_PROXY['port'], True))requestInfo = self.helpers.analyzeRequest(messageInfo)new_headers = requestInfo.headers# 修改 http 头req_head = new_headers[0]new_headers[0] = re.sub('\/'," http://myip.ipip.net/",req_head)body = messageInfo.request[requestInfo.getBodyOffset():len(messageInfo.request)]messageInfo.request = self.helpers.buildHttpMessage(new_headers,body)

对接平台
接入代理平台或者 aws

实战演示

继续使用上面的后台做演示

正常访问

开启拓展



Burp Suite —— 验证码识别、切换IP相关推荐

  1. Burpsuite验证码识别插件 “captcha-killer-modified“ 使用教程(详细)

    插件说明: 一款适用于Burp的验证码识别插件 项目地址:https://github.com/f0ng/captcha-killer-modified 步骤概述 下载captcha-killer-m ...

  2. 带有验证码的爆破(包含Burp suite工具爆破)

    带有验证码的爆破 爆破环境 登录页面具有验证码的验证,并且验证码是以图片的形式展示的. 没有次数限制和时间限制(符合爆破的要求!) 爆破原理 爆破主要是通过不断提交数据表单来试错,当然前提就是次数不限 ...

  3. 验证码识别Burp reCAPTCHA插件使用

    介绍 Burp的reCAPTCHA也可用来识别验证码,github地址:https://github.com/bit4woo/reCAPTCHA,下载相应的jar包添加到burp中,位置在extend ...

  4. Burp Suite使用介绍(一)

    转自:https://www.cnblogs.com/h4ck0ne/p/5154617.html Burp Suite 是用于攻击web 应用程序的集成平台.它包含了许多工具,并为这些工具设计了许多 ...

  5. 学习笔记-Burp Suite

    Burp Suite 免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关. 简介 Burp Suite 是进行 Web 应用安全测试的一个集成 ...

  6. Burp Suite使用介绍(二)

    Burp Suite使用介绍(二) Repeater Burp Repeater(中继器)是用于手动操作和补发个别HTTP请求,并分析应用程序的响应一个简单的工具.您可以发送一个内部请求从Burp任何 ...

  7. 渗透测试 ( 8 ) --- Burp Suite Pro 官方文档、Brida(frida)

    Burp Suite 官网 :https://portswigger.net/burp 官方文档:https://portswigger.net/burp/documentation/desktop ...

  8. Burp Suite之Scaner模块(三)

    Burp Suite之Scaner模块(三) Scaner模块配置详解 Scan Queue Active Scanning(主动扫描)过程通常包括发送大量请求到服务器为所扫描的每个基本的请求,这可能 ...

  9. [Python爬虫] 5-爬虫进阶(多线程爬虫/动态网页抓取/图形验证码识别)

    # I.多线程爬虫 # 1)概念:多线程是为了同步完成多项任务,通过提高资源使用效率来提高系统的效率 # 线程:火车的车厢,进程:火车头 # # 2)threading模块:专门提供用来做多线程编程的 ...

  10. 网络安全 中间人攻击-web欺骗 软件:Burp Suite

    这个攻击的意思是,目标主机A向客户端B发送一个请求,这个请求一开始就被我截获了,截获之后我可以查看请求的内容,请求也是可以篡改的,但是本次实验不涉及这方面.我查看了请求之后,把它发给了客户端B,客户端 ...

最新文章

  1. php 分页参数丢失,THINKPHP3.2搜索分页丢失参数,实现保留搜索条件解决办法
  2. 分页控件-ASP.NET(AspNetPager)
  3. 非科班通过几个月的培训入行人工智能现实吗?
  4. JSP EL 表达式取request parameter
  5. linux用光盘作yum源实验步骤,Linux使用系统光盘作为YUM源
  6. PopupWindow 使用详解(二) Popwindow 制作常见花哨效果
  7. python 小海龟鼠标画图_Python小海龟画图
  8. JAVA那点破事,并发、IO模型、集合、线程池、死锁、非阻塞、AQS...
  9. java ssh优势_java框架组合ssm和ssh各自的优势是什么?
  10. 2018年软考网络规划设计师考试通过经验分享
  11. jsp测试连接mysql_JSP 连接MySQL配置与测试
  12. mac iterm2 安装 lrzsz rz sz命令
  13. Javascript获取select下拉框选中的的值
  14. windows 安装nginx
  15. 启明星数据库批量备份与还原工具
  16. 生产追溯系统-IQC来料检验
  17. 如何使用Three.js为3D模型构建Color Customizer应用
  18. 计算机速成课 第三十七集 机器人
  19. 【算法】leetcode-838 推多米诺
  20. CSS样式修改不成功

热门文章

  1. NX/UG二次开发—CAM—刀轨转曲线(支持圆弧和直线)
  2. 计算机无法安装VC2015,win7系统vc++2015一个或多个问题导致了安装失败的处理步骤...
  3. [经验教程]谷歌浏览器google chrome网站不安全与网站的连接不安全怎么办?
  4. 程序员修炼之道 读书笔记2
  5. 超好用的网站克隆工具,就是玩
  6. java集成 腾讯信鸽_移动推送 腾讯信鸽集成
  7. PreScan快速入门到精通第三讲快速搭建第一个自动驾驶仿真模型
  8. treetable php,jQuery树型表格插件jQuery treetable
  9. php库函数是什么,PHP常用库函数
  10. 【模电】0006 有源滤波器1(一阶有源滤波器)