
首先,使用 npm 安装 Yeoman 和 generator-burp-extension(我们假设您已经预装了 node.js)。
npm install -g yo
npm install -g generator-burp-extension
然后生成您的新项目:
yo burp-extension
当您生成插件项目时,生成器会询问您希望在插件中包含哪些特性。如果您熟悉 Burp 扩展开发,这些特性的名称已经足够描述其功能;但如果您是 Burp 扩展新手,以下是对每个特性所能实现功能的简短说明。
自定义标签页,将添加到 Burp 的用户界面中。通常用于添加某些功能(例如 logger++ 扩展),或仅仅是为了让用户配置扩展。

自定义消息编辑器标签页,将添加到 Burp 的消息编辑器界面(Repeater、Intruder 等)。通常用于在请求/响应载荷中提供某种自定义的编辑/查看功能。一个例子是 JSON Beautifier 扩展。

自定义上下文菜单,将通过右键点击添加到 Burp 界面的几乎任何位置。Burp 允许在以下任意情况下显示上下文菜单:
此功能的一个简单示例是 copy-as-python-requests 扩展,它允许将请求复制为 Python 代码(仅作示例)。

监听器将收到由代理工具(代理监听器)或任何 Burp 工具(HTTP 监听器)处理的请求和响应的通知。扩展可以对这些消息执行自定义分析或修改。
换句话说,代理监听器拦截从浏览器到 Burp 的请求,以及从 Burp 到浏览器的响应。HTTP 监听器拦截从 Burp 到 Web 服务器的出站请求,以及从 Web 服务器返回的入站响应。

一个使用此扩展特性的真实示例插件是 AutoRepeater。
通过添加自定义生成器功能来扩展 Intruder 载荷。此功能的一种可能用途是生成随机有效的 IBAN 号码。一个真实示例是扩展 Intruder file payload generator(我并未使用它,仅作示例)。

通过添加自定义处理器功能来扩展 Intruder 载荷。一个可能的示例是基于静态密钥执行 AES 加密。

执行扫描时,Burp 将要求该检查对基础请求执行主动或被动扫描,并报告发现的任何扫描问题。
当请求被主动扫描时,扫描器将调用此提供者,提供者应提供一个自定义插入点列表,这些插入点将在扫描中使用。
每个已注册的操作都会在会话处理规则界面中可供用户选择作为规则操作。用户可以选择直接调用某个操作,或者在执行宏之后调用。

当扩展从 Burp 卸载时,监听器将收到通知。注意:任何启动后台线程或打开系统资源(如文件或数据库连接)的扩展都应注册一个监听器,并在扩展卸载时终止线程/关闭资源。
监听器将收到扫描器报告的新问题的通知。通过注册扫描器监听器,扩展可以对扫描器问题执行自定义分析或日志记录。
每当 Burp 的套件级目标范围发生变更时,监听器将收到通知。
可能用处不大,因为 Burp 不允许您访问全局范围定义。
本节解释模板开发中的一些决策。
首先,我并非 Java 粉丝。
您可能知道,BurpSuite 允许使用三种主要语言开发扩展:Java、Python 和 Ruby。实际上这并不完全正确。Burp 允许使用 Jython 和 JRuby 进行开发。真正的问题在于,当您在 Burp 扩展中使用 Jython 或 JRuby 时,您仍然需要以 Java 思维来思考(因为 Java 是 Burp 的主要语言)。因此,最终您将使用 Python 和 Java 进行开发,但在项目与带有自动补全等现代功能的真正 IDE 集成时会遇到很多问题。
另一个使用 Java 而非 Jython 的好理由是它基于 Python 2.7,而我没有使用 JRuby 是因为我不喜欢 Ruby,仅此而已。
您可能注意到,所有 Burp 接口的实现都遵循单例模式,这主要是出于主观原因。
事实是,Burp 是一个出色的工具,但其内部机制略显晦涩,可能有些混乱。例如,Burp 允许您注册多个 IHTTPListener,但您会失去这些监听器调用顺序等重要决策。在我看来,这种情况可能会使 Burp 扩展的理解和代码维护变得困难且复杂。
您可以将每个单例类视为与 Burp 的必要连接点,这些连接点必须是唯一的。从该连接点出发,您可以控制代码,执行任何类型的面向对象设计。
MIT © Raul Sampedro