工具开发学习之CORSScanner

devtools/2025/2/10 9:44:26/

1、BurpExtender.java

1. IBurpExtender 接口​

 定义:

iBurpExtender 是 Burp Suite 扩展开发的核心接口,所有的 Burp Suite 扩展都必须实现这个接口.定义了扩展与 Burp Suite 进行交互的入口点,主要用于初始化扩展并获取 Burp Suite 提供的回调对象。

方法:

 BurpExtender 接口只定义了一个方法:

作用:

在 Burp Suite 加载扩展时,会自动调用这个方法,并传入一个 IBurpExtenderCallbacks 实例。扩展可以在这个方法中进行初始化操作,如保存回调对象、设置扩展名称、获取辅助工具等。

2. IScannerCheck 接口

定义:

IScannerCheck 接口用于实现自定义的扫描器检查逻辑,通过实现这个接口,扩展可以在被动扫描或主动扫描过程中对 HTTP 请求和响应进行检查,发现潜在的安全漏洞。

方法:

doPassiveScan(IHttpRequestResponse var1)

此方法用于执行被动扫描,它接收一个 HTTP 请求 - 响应对象,在不主动修改请求的情况下,分析该请求和响应内容

    // 被动扫描方法,对 HTTP 请求响应进行扫描public List<IScanIssue> doPassiveScan(IHttpRequestResponse iHttpRequestResponse) {// 分析请求信息IRequestInfo iRequestInfo = helpers.analyzeRequest(iHttpRequestResponse);// 获取请求的 URLURL url = iRequestInfo.getUrl();// 获取请求方法String method = iRequestInfo.getMethod();// 获取 URL 的协议String protocol = url.getProtocol();// 获取 URL 的主机名String host = url.getHost();// 获取 URL 的路径String path = url.getPath();// 生成目标字符串,用于标识请求String dest = method + " " + protocol + "://" + host + path;// 打印被动扫描信息std.println("[*] Passive Scan: " + dest);// 创建 CORS 漏洞检查器对象CORSVulChecker checker = new CORSVulChecker(callbacks, iHttpRequestResponse, std);// 检查是否存在 CORS 漏洞boolean isVul = checker.check();// 如果存在漏洞if (isVul) {// 创建漏洞对象Vul vul = new Vul(helpers, checker.getOriginalIHttpRequestResponse(), checker.getCheckIHttpRequestResponse());// 将漏洞信息添加到 UI 显示界面tab.addVul(vul);}return null;}
doActiveScan(IHttpRequestResponse var1, IScannerInsertionPoint var2)

该方法进行主动扫描,接收基础的 HTTP 请求 - 响应对象和扫描器插入点,会主动构造测试请求并发送,依据响应判断是否存在安全漏洞,若发现则返回扫描问题列表,反之返回 null 或空列表。

consolidateDuplicateIssues(IScanIssue var1, IScanIssue var2)

用于合并重复的扫描问题,接收两个扫描问题对象,通过比较判断它们是否重复,返回 0 表示不重复需同时保留,非零值表示重复只需保留一个。 

 

3. IBurpExtenderCallbacks 接口

可获取处理 HTTP 请求响应的辅助对象、设置扩展名称、注册扫描器以及获取标准输出流用于日志输出。

  • API 方法 1getHelpers()
  • 解释:返回一个 IExtensionHelpers 对象(在下面),这个对象提供了很多实用的方法,能帮助扩展处理 HTTP 请求和响应,比如分析请求、构建请求等。
  • API 方法 2setExtensionName(String name)
  • 通俗解释:用于设置扩展在 Burp Suite 里显示的名称。
  • API 方法 3registerScannerCheck(IScannerCheck scannerCheck)\
  • 通俗解释:将实现了 IScannerCheck 接口的扩展注册到 Burp Suite 的扫描器中,这样扩展的扫描逻辑就能生效了。
  • API 方法 4getStdout()
  • 通俗解释:返回 Burp Suite 的标准输出流,扩展可以通过这个流输出日志信息,方便调试和查看扩展的运行情况。

4. IExtensionHelpers 接口

通过 analyzeRequest 方法分析 HTTP 请求响应对象,返回包含请求详细信息的 IRequestInfo 对象。

  • API 方法analyzeRequest(IHttpRequestResponse iHttpRequestResponse)
  • 通俗解释:对传入的 HTTP 请求响应对象进行分析,返回一个 IRequestInfo 对象,这个对象包含了请求的详细信息,像请求方法、URL、头部信息等。

5. IHttpRequestResponse 接口

封装完整的 HTTP 请求 - 响应交互,方便扩展获取请求响应数据及 HTTP 服务信息进行处理分析。

  • API 用途:代表一个完整的 HTTP 请求 - 响应交互。
  • 通俗解释:这个接口封装了 HTTP 请求和对应的响应,扩展可以从中获取请求和响应的字节数据、HTTP 服务信息等,方便对请求响应进行处理和分析。

6. IRequestInfo 接口

可通过 getUrl 获取请求 URL 对象以得到 URL 各部分信息,通过 getMethod 获取请求使用的方法。

  • API 方法 1getUrl()
  • 通俗解释:返回请求的 URL 对象,通过这个对象可以获取 URL 的各个部分,如协议、主机名、路径等。
  • API 方法 2getMethod()
  • 通俗解释:返回请求使用的方法,比如 GETPOST 等。

 

2、CORSVulChecker.java

1. IBurpExtenderCallbacks 接口

  • API 方法
    • getHelpers():返回一个 IExtensionHelpers 对象,这个对象提供了很多实用的方法,能帮助处理 HTTP 请求和响应,像分析请求、构建请求等。
    • makeHttpRequest(IHttpService httpService, byte[] request):根据指定的 HTTP 服务信息和请求字节数组,发送 HTTP 请求并获取响应,用于模拟和测试请求。

2. IExtensionHelpers 接口

  • API 方法
    • analyzeRequest(IHttpRequestResponse iHttpRequestResponse):对传入的 HTTP 请求响应对象进行分析,返回一个 IRequestInfo 对象,该对象包含请求的详细信息,如请求方法、URL、头部信息等。
    • buildHttpMessage(List<String> headers, byte[] body):根据传入的请求头列表和请求体字节数组,构建一个完整的 HTTP 请求字节数组。
    • analyzeResponse(byte[] response):对传入的 HTTP 响应字节数组进行分析,返回一个 IResponseInfo 对象,该对象包含响应的详细信息,如状态码、响应头、响应体偏移位置等。

3. IHttpRequestResponse 接口

  • API 方法
    • getRequest():返回 HTTP 请求的字节数组,包含请求行、请求头和请求体等完整的请求数据。
    • getResponse():返回 HTTP 响应的字节数组,包含状态行、响应头和响应体等响应数据。
    • getHttpService():返回 IHttpService 对象,该对象包含目标服务器的主机名、端口号以及使用的协议(HTTP 或 HTTPS)等信息。

4. IRequestInfo 接口

  • API 方法
    • getUrl():返回请求的 URL 对象,通过该对象可以获取请求的协议、主机名、端口、路径等信息。
    • getMethod():返回请求使用的 HTTP 方法,例如 GETPOST 等。
    • getHeaders():返回一个包含请求所有头部信息的列表,每个元素是一个字符串,代表一个请求头。
    • getBodyOffset():获取请求体在整个请求数据中的起始偏移位置,用于提取请求体部分。

5. IResponseInfo 接口

  • API 方法
    • getHeaders():返回一个包含响应所有头部信息的列表,每个元素是一个字符串,代表一个响应头。

6. IHttpService 接口

  • API 用途:表示一个 HTTP 服务,包含目标服务器的主机名、端口号以及使用的协议(HTTP 或 HTTPS)等信息,为发送 HTTP 请求提供必要的服务信息。

 

3、CORSScanTab.java

1. ITab 接口

定义了自定义标签页在 Burp Suite 中显示所需的标题和 UI 组件获取方法,让扩展能添加自定义标签页到 Burp 界面。

  • API 方法 1getTabCaption()
    • 通俗解释:这个方法用于获取自定义标签页在 Burp Suite 中显示的标题,就像给标签页起个名字,方便用户识别。
  • API 方法 2getUiComponent()
    • 通俗解释:返回一个 Component 对象,这个对象代表了该标签页的用户界面组件,Burp Suite 会将这个组件显示在对应的标签页位置。

2. IBurpExtenderCallbacks 接口

作为扩展与 Burp Suite 核心交互的桥梁,提供获取辅助工具、创建消息编辑器、定制 UI 组件以及添加自定义标签页等功能。

  • API 方法 1getHelpers()
    • 通俗解释:返回一个 IExtensionHelpers 对象,该对象提供了很多处理 HTTP 请求和响应的实用工具方法,比如分析请求、构建请求等。
  • API 方法 2createMessageEditor(IMessageEditorController controller, boolean editable)
    • 通俗解释:创建一个消息编辑器,可用于查看和编辑 HTTP 请求或响应。controller 参数用于控制编辑器的行为,editable 参数指定编辑器是否可编辑。
  • API 方法 3customizeUiComponent(Component component)
    • 通俗解释:对传入的 UI 组件进行定制,使其符合 Burp Suite 的界面风格和交互规则。
  • API 方法 4addSuiteTab(ITab tab)
    • 通俗解释:将实现了 ITab 接口的自定义标签页添加到 Burp Suite 的界面中,这样用户就能在 Burp Suite 里看到并使用这个标签页。

3. IExtensionHelpers 接口

在代码中未直接调用其方法,但通过 callbacks.getHelpers() 获取到该对象,它提供的方法主要用于处理 HTTP 请求和响应,例如:

  • analyzeRequest(IHttpRequestResponse requestResponse)(代码未调用但常用)
    • 通俗解释:对传入的 HTTP 请求 - 响应对象进行分析,返回一个包含请求详细信息的 IRequestInfo 对象,方便获取请求的方法、URL、头部等信息。

4. IMessageEditor 接口

实现 HTTP 请求和响应的查看与编辑功能,可设置并显示消息内容。

  • API 方法setMessage(byte[] message, boolean isRequest)
    • 通俗解释:在消息编辑器中设置要显示的消息内容。message 是消息的字节数组,isRequest 用于指定该消息是 HTTP 请求(true)还是 HTTP 响应(false)。

5. IMessageEditorController 接口

为消息编辑器提供 HTTP 服务、请求和响应的相关信息,控制消息编辑器的上下文。 

  • API 方法 1getHttpService()
    • 通俗解释:返回 HTTP 服务信息,如目标服务器的主机名、端口号和协议等,用于消息编辑器的上下文信息。
  • API 方法 2getRequest()
    • 通俗解释:返回当前的 HTTP 请求字节数组,消息编辑器可根据此显示请求内容。
  • API 方法 3getResponse()
    • 通俗解释:返回当前的 HTTP 响应字节数组,消息编辑器可根据此显示响应内容。

http://www.ppmy.cn/devtools/157597.html

相关文章

如何将Excel的表格存为图片?

emmm&#xff0c;不知道题主具体的应用场景是什么&#xff0c;就分享几个我一般会用到的场景下奖excel表格保存为图片的技巧吧&#xff01; 先来个总结&#xff1a; 方法 适用场景 画质 操作难度 截图&#xff08;WinShiftS&#xff09; 快速保存表格&#xff0c;方便粘贴…

误差逆传播算法

一、误差逆传播算法 1、神经网络 神经网络是由具有适应性的简单单元组成的广泛并行互联的网络。其实&#xff0c;神经网络是一个很大的学科领域&#xff0c;对于数学家和自动控制专家对其有不同的看法。对于我们一般来讲神经网络看作算法&#xff0c;对于西瓜书而言仅仅讨论神…

AI大模型评测对比2—ChatGPT对比DeepSeek

近期&#xff0c;DeepSeek 凭借其超高的性价比与卓越性能&#xff0c;在国内外各大社交媒体平台上赚足了眼球。令人瞩目的是&#xff0c;它仅耗费 2048 块显卡&#xff0c; 600 亿美元的成本&#xff0c;便成功训练出了可与顶级模型比肩的 Deepseek - V3 模型。这与美国公布的一…

Java爬虫:打造高效的数据抓取利器——详解详情接口设计与实现

在当今数字化时代&#xff0c;数据如同黄金般珍贵。无论是企业进行市场调研、竞争对手分析&#xff0c;还是研究人员收集信息&#xff0c;数据的需求无处不在。而爬虫技术&#xff0c;作为一种高效的数据抓取手段&#xff0c;成为了众多开发者手中的利器。本文将深入探讨如何使…

【C语言标准库函数】指数与对数函数:exp(), log(), log10()

目录 一、头文件 二、函数简介 2.1. exp(double x) 2.2. log(double x) 2.3. log10(double x) 三、函数实现&#xff08;概念性&#xff09; 3.1. exp(double x) 的模拟实现 3.2. log(double x) 和 log10(double x) 的模拟实现 四、注意事项 4.1. exp(double x) 的注…

【正点原子K210连载】第六十七章 音频FFT实验 摘自【正点原子】DNK210使用指南-CanMV版指南

第六十七章 音频FFT实验 本章将介绍CanMV下FFT的应用&#xff0c;通过将时域采集到的音频数据通过FFT为频域。通过本章的学习&#xff0c;读者将学习到CanMV下控制FFT加速器进行FFT的使用。 本章分为如下几个小节&#xff1a; 32.1 maix.FFT模块介绍 32.2 硬件设计 32.3 程序设…

如何使用DeepSeek-R1进行二次处理?

使用DeepSeek-R1进行二次处理通常指的是在初步推理结果的基础上&#xff0c;进一步优化、分析或调整这些结果以更好地满足特定的应用需求。这可能包括但不限于后处理文本生成的输出、提高分类任务的准确性、细化搜索结果等。以下是一些常见的二次处理方法及其应用场景。 1. 文…

Stable Diffusion室内设计文生图实操

各们设计师&#xff0c;伙伴们&#xff0c;用Ai设计的时候&#xff0c;都知道需要模型才能使效果更佳理想&#xff0c;但是除了模型需要训练之外&#xff0c;还需要提示词&#xff0c;好的提示词和反向词&#xff0c;结合模型才能&#xff0c;完美生成效果。今天&#xff0c;我…