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 方法 1:
getHelpers()
- 解释:返回一个
IExtensionHelpers
对象(在下面),这个对象提供了很多实用的方法,能帮助扩展处理 HTTP 请求和响应,比如分析请求、构建请求等。 - API 方法 2:
setExtensionName(String name)
- 通俗解释:用于设置扩展在 Burp Suite 里显示的名称。
- API 方法 3:
registerScannerCheck(IScannerCheck scannerCheck)\
- 通俗解释:将实现了
IScannerCheck
接口的扩展注册到 Burp Suite 的扫描器中,这样扩展的扫描逻辑就能生效了。 - API 方法 4:
getStdout()
- 通俗解释:返回 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 方法 1:
getUrl()
- 通俗解释:返回请求的 URL 对象,通过这个对象可以获取 URL 的各个部分,如协议、主机名、路径等。
- API 方法 2:
getMethod()
- 通俗解释:返回请求使用的方法,比如
GET
、POST
等。
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 方法,例如GET
、POST
等。getHeaders()
:返回一个包含请求所有头部信息的列表,每个元素是一个字符串,代表一个请求头。getBodyOffset()
:获取请求体在整个请求数据中的起始偏移位置,用于提取请求体部分。
5. IResponseInfo
接口
- API 方法:
getHeaders()
:返回一个包含响应所有头部信息的列表,每个元素是一个字符串,代表一个响应头。
6. IHttpService
接口
- API 用途:表示一个 HTTP 服务,包含目标服务器的主机名、端口号以及使用的协议(HTTP 或 HTTPS)等信息,为发送 HTTP 请求提供必要的服务信息。
3、CORSScanTab.java
1. ITab
接口
定义了自定义标签页在 Burp Suite 中显示所需的标题和 UI 组件获取方法,让扩展能添加自定义标签页到 Burp 界面。
- API 方法 1:
getTabCaption()
- 通俗解释:这个方法用于获取自定义标签页在 Burp Suite 中显示的标题,就像给标签页起个名字,方便用户识别。
- API 方法 2:
getUiComponent()
- 通俗解释:返回一个
Component
对象,这个对象代表了该标签页的用户界面组件,Burp Suite 会将这个组件显示在对应的标签页位置。
- 通俗解释:返回一个
2. IBurpExtenderCallbacks
接口
作为扩展与 Burp Suite 核心交互的桥梁,提供获取辅助工具、创建消息编辑器、定制 UI 组件以及添加自定义标签页等功能。
- API 方法 1:
getHelpers()
- 通俗解释:返回一个
IExtensionHelpers
对象,该对象提供了很多处理 HTTP 请求和响应的实用工具方法,比如分析请求、构建请求等。
- 通俗解释:返回一个
- API 方法 2:
createMessageEditor(IMessageEditorController controller, boolean editable)
- 通俗解释:创建一个消息编辑器,可用于查看和编辑 HTTP 请求或响应。
controller
参数用于控制编辑器的行为,editable
参数指定编辑器是否可编辑。
- 通俗解释:创建一个消息编辑器,可用于查看和编辑 HTTP 请求或响应。
- API 方法 3:
customizeUiComponent(Component component)
- 通俗解释:对传入的 UI 组件进行定制,使其符合 Burp Suite 的界面风格和交互规则。
- API 方法 4:
addSuiteTab(ITab tab)
- 通俗解释:将实现了
ITab
接口的自定义标签页添加到 Burp Suite 的界面中,这样用户就能在 Burp Suite 里看到并使用这个标签页。
- 通俗解释:将实现了
3. IExtensionHelpers
接口
在代码中未直接调用其方法,但通过 callbacks.getHelpers()
获取到该对象,它提供的方法主要用于处理 HTTP 请求和响应,例如:
analyzeRequest(IHttpRequestResponse requestResponse)
(代码未调用但常用)- 通俗解释:对传入的 HTTP 请求 - 响应对象进行分析,返回一个包含请求详细信息的
IRequestInfo
对象,方便获取请求的方法、URL、头部等信息。
- 通俗解释:对传入的 HTTP 请求 - 响应对象进行分析,返回一个包含请求详细信息的
4. IMessageEditor
接口
实现 HTTP 请求和响应的查看与编辑功能,可设置并显示消息内容。
- API 方法:
setMessage(byte[] message, boolean isRequest)
- 通俗解释:在消息编辑器中设置要显示的消息内容。
message
是消息的字节数组,isRequest
用于指定该消息是 HTTP 请求(true
)还是 HTTP 响应(false
)。
- 通俗解释:在消息编辑器中设置要显示的消息内容。
5. IMessageEditorController
接口
为消息编辑器提供 HTTP 服务、请求和响应的相关信息,控制消息编辑器的上下文。
- API 方法 1:
getHttpService()
- 通俗解释:返回 HTTP 服务信息,如目标服务器的主机名、端口号和协议等,用于消息编辑器的上下文信息。
- API 方法 2:
getRequest()
- 通俗解释:返回当前的 HTTP 请求字节数组,消息编辑器可根据此显示请求内容。
- API 方法 3:
getResponse()
- 通俗解释:返回当前的 HTTP 响应字节数组,消息编辑器可根据此显示响应内容。