写在前面的话
Burp Suite是网络安全圈子中重要的Web应用安全测试工具之一,自2003年问世以来,其影响力不断扩大。作为渗透测试和漏洞挖掘的标配工具,Burp Suite凭借高效的模块化设计和强大的功能,如流量拦截、自动化扫描、攻击模拟和数据分析,获得了全球安全研究人员的青睐。尤其是在发现SQL注入、XSS等复杂漏洞方面的出色表现,令其成为商业渗透测试不可或缺的工具。
一款工具20多年了依旧能打?而且还打得很出色呢!我个人认为这都源于Burp Suite背后有一个长期活跃的社区,提供了大量的插件和支持。借着学习Burp Suite新API的由头记录一二,不足之处还望各位斧正!
扩展模块
在扩展模块下Burp Suite提供了一系列的API,让渗透测试人员来完全控制所有发出的请求以及接收到的响应,以增强其灵活性,从而提高渗透测试的效率。也正因如此,随着时间推移不断涌现出许多优秀的第三方插件,它们可以支持更多的框架和协议,处理复杂的问题,甚至说将其他工具直接集成到BurpSuite,将效率最大化。
这些API主要包括:
- 拦截或者篡改HTTP请求和响应(在新版本Montoya API甚至可以拦截WebSocket消息)
- 与Intruder爆破模块和Repeater重放模块的定制化操作
- 与Scanner扫描模块的控制和定制化
- 与Proxy代理模块的交互
- UI 自定义
相较于以前的Extender API,Montoya API是一个更新、更简洁的接口,为提高效率官方放弃了对其他诸如Jython和JRuby的支持,所以当前Montoya API仅支持Java。
意义大过价值的HelloWorld
由于我一直以来都使用Jetbrains全家桶,因此本文将以IntelliJ IDEA作为开发环境进行介绍。
进入正题,打开IntelliJ IDEA,新建项目
请注意JDK版本不应高于17。由于Burp Suite所使用的JDK版本为17若高于此版本,你编写的插件将无法在Burp Suite中正常运行。
IntelliJ会自动生成项目框架:
接着,编辑build.gradle文件添加Burp Suite库!完成之后记得点击右边的同步按钮
plugins { id 'java' } group = 'arr' version = '1.0-SNAPSHOT' repositories { mavenCentral() } dependencies { implementation 'net.portswigger.burp.extensions:montoya-api:+' }
新建一个package
在刚创建的package下新建一个Class,用来写我们的HelloWorld插件
开发插件很简单,你就记住这个思路:
- 设置扩展名称
- 保存 Montoya API 对象,方便在其他组件中使用
- 注册Burp Suite工具的扩展功能,让我们的插件能与Burp Suite各个功能模块搭配使用
- 执行插件特定的初始化逻辑,比如设置默认值或加载配置文件
这里简单介绍几个Montoya API对象的功能,以及在实际情况下的应用
对象 | 特点 | 典型应用 |
Proxy | 专注于 Proxy 工具流量操作,仅处理通过代理的请求/响应 | 流量拦截、修改请求/响应、访问 HTTP/WebSocket 历史记录 |
Http | 全局请求/响应操作,适用于所有工具流量 | 创建、发送、解析 HTTP 请求和响应 |
Scanner | 扩展扫描器功能,支持主动和被动扫描 | 注册扫描检查,检测特定漏洞 |
Repeater | 轻量级工具,用于单请求/响应的手动测试和调试 | 创建标签页,发送和查看特定请求/响应 |
Intruder | 自动化攻击工具,支持复杂载荷和策略 | 构建载荷生成器,执行批量攻击任务 |
UserInterface | 用户界面扩展,自定义标签页和菜单项 | 添加面板、增强用户体验 |
Data |
数据存储和持久化,支持项目或全局数据管理 |
保存插件配置,记录扫描状态 |
回到本文的正题,我们价值不高,意义极大的Hello World可用不上这些对象,一个logging对象足矣
package arr;
import burp.api.montoya.BurpExtension;
import burp.api.montoya.MontoyaApi;
import burp.api.montoya.logging.Logging;
public class HelloWorld implements BurpExtension {
MontoyaApi api;
Logging logging;
@Override
public void initialize(MontoyaApi api) {
// 将传入的MontoyaApi对象的引用保存到当前类的成员变量api中
this.api = api;
// 通过调用api.logging()方法获取一个Logging对象,并将其赋值给成员变量logging
// 之后就可以利用这个logging对象来进行日志输出等操作了
this.logging = api.logging();
// 给这个插件起个名字
api.extension().setName("Hello World");
// 在控制台打印消息
this.logging.logToOutput("*** Freebuf.com - Hello World loaded ***");
}
}
点击右侧的Gradle菜单进行打包,路径Tasks -> build -> build
经过打包后的插件可以在\build\libs目录下找到
安装插件
HelloWorld插件成功执行,在控制台输入我们的消息
结语
本篇内容非常简单,开胃菜嘛。在之后的文章中我们会更加偏向于日常渗透测试活动会用到的一些东西,敬请期待!
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)