如何用Gradle构建并部署Freddy扩展:从源码到Burp插件jar的完整快速开始
【免费下载链接】freddyAutomatically identify deserialisation issues in Java and .NET applications by using active and passive scans项目地址: https://gitcode.com/gh_mirrors/fre/freddy
Freddy(Deserialization Bug Finder)是 NCC Group 出品的 Burp Suite 扩展,能自动识别 Java 与 .NET 应用中的反序列化漏洞,支持主动扫描和被动扫描。本文带你用Gradle完成从克隆源码、编译打包到生成Burp 插件 jar并部署的完整流程,新手也能快速上手。
一、环境准备:安装 JDK 11 与 Gradle
在开始构建前,请先确认本机环境:
- JDK 11:build.gradle 中声明了
sourceCompatibility = 1.11,即项目按 Java 11 编译,请确保java -version输出为 11 或更高版本; - Gradle:Freddy 使用 Gradle 构建系统,安装后可通过
gradle --version验证; - 能访问 Maven Central 仓库:构建时会自动拉取依赖,如 Burp Extender API、JUnit 等。
💡 提示:如果 JDK 版本不匹配,编译时会直接报错,这是新手最常踩的坑。
二、克隆 Freddy 源码并认识目录结构
在项目根目录执行以下命令克隆代码:
git clone https://gitcode.com/gh_mirrors/fre/freddy克隆完成后,几个关键文件值得先了解:
| 文件 | 作用 |
|---|---|
settings.gradle | 声明根项目名为freddy |
build.gradle | 核心构建脚本:依赖、Java 版本、jar 打包规则 |
src/burp/BurpExtender.java | 插件入口,对接 Burp 扩展 API |
src/nb/freddy/modules/java/ | Java 平台反序列化检测模块(XStream、SnakeYAML、Kryo 等 21 个) |
src/nb/freddy/modules/dotnet/ | .NET 平台检测模块(Json.Net、XmlSerializer 等 12 个) |
BappManifest.bmf | BApp 应用清单,声明插件入口与构建命令 |
注意:Freddy 的目录结构与 Gradle 标准布局略有不同,源码放在src、测试放在test,这一点已在build.gradle中通过sourceSets显式配置。
三、执行 gradle jar 一键构建插件
一切就绪后,进入项目根目录执行构建命令(这也是 BApp 清单中声明的官方 BuildCommand):
gradle jar这条命令会自动完成三件事:
- 从 Maven Central 下载依赖:包括
net.portswigger.burp.extender:burp-extender-api:1.7.22、minlog日志库,以及测试用的 JUnit 4 和 PowerMock; - 运行单元测试:验证代码正确性,全部通过后才会继续打包;
- 打出"胖 jar":
build.gradle中的jar任务会把编译类路径上的所有依赖类合并进同一个 jar,生成开箱即用的自包含插件包。
构建成功后,产物位于:
build/libs/freddy-2.2.5.jar版本号2.2.5和发布组trust.nccgroup均在build.gradle中定义,文件名由项目名-版本号.jar规则自动生成。
四、部署 jar 到 Burp Suite:三步加载插件
⚠️ Freddy 需要Burp Suite Pro 或 Enterprise版本才能运行(清单中
ProOnly: True)。
- 打开 Burp Pro,进入Extender(扩展)页签;
- 点击Add,选择刚才构建出的
build/libs/freddy-2.2.5.jar; - 点击Load,加载成功后扩展列表会出现Freddy, Deserialization Bug Finder,日志区显示扩展启动信息即代表部署成功。
BappManifest.bmf中声明的EntryPoint: build/libs/freddy-2.2.5.jar与上面的产物路径完全对应,说明构建与部署环节已正确衔接。
五、部署后快速上手:被动 + 主动双扫描
插件加载后,Freddy 会提供两类能力帮你定位反序列化风险:
- 被动扫描:监控 HTTP 流量中的类型指定符与异常特征。例如 FastJson 会在 JSON 中通过
$type字段指定对象类型,Freddy 能据此识别目标使用的序列化库; - 主动扫描:采用异常型(触发特征报错)、时间型(利用
ping造成响应延迟)、Collaborator 型(外域回连确认,标记为RCE (Collaborator))三种探测手段,尽可能把"检测"升级为"漏洞确认"。
支持的目标覆盖面很广:Java 侧含 XStream、SnakeYAML、Hessian、Kryo、BlazeDS/Red5 AMF 等 21 项;.NET 侧含 BinaryFormatter、DataContractSerializer、Json.Net 等 12 项,多个模块已具备 RCE 利用能力。
六、常见问题与排查清单
- 构建报"无效的目标发行版 11"→ 当前 JDK 低于 11,切换 JDK 后重新执行
gradle jar; - 找不到 build/libs 目录→ 尚未成功执行构建,先确认
gradle jar是否无报错退出; - Burp 中加载 jar 无反应→ 确认使用的是 Burp Pro/Enterprise,社区版不支持加载该插件;
- 想单独跑测试→ 可执行
gradle test,便于在改代码后快速验证。
七、总结
回顾整个流程:克隆源码 → 配置 JDK 11 环境 → 执行gradle jar→ 在 Burp Pro 中加载freddy-2.2.5.jar,四步即可完成 Freddy 反序列化检测插件的本地构建与部署。之后你只需在 Burp 中正常发起扫描,就能自动发现目标应用中的 Java / .NET 反序列化风险点。
【免费下载链接】freddyAutomatically identify deserialisation issues in Java and .NET applications by using active and passive scans项目地址: https://gitcode.com/gh_mirrors/fre/freddy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考