bennamrouche/dirbuster-ng
GitHub: bennamrouche/dirbuster-ng
一款基于 Java 21 重写的现代化 Web 目录与文件暴力破解安全工具,提供 GUI 与无头 CLI 双模式,用于发现隐藏的路径和敏感内容。
Stars: 0 | Forks: 0
# dirbuster-ng
**对 OWASP DirBuster 的一次现代化重写(基于 Java 21)——包含 JavaFX GUI 和无头 CLI。**
通过暴力破解目录和文件名,发现 Web 和应用服务器上未被链接但可访问的内容:管理面板、备份、配置文件、被遗忘的页面以及 API endpoint。





## 目录
1. [概述](#overview)
2. [状态](#status)
3. [功能](#features)
4. [截图](#screenshots)
5. [环境要求](#requirements)
6. [快速开始](#quick-start)
7. [用法](#usage)
- [GUI](#gui)
- [CLI](#cli-headless)
- [选项参考](#options-reference)
- [示例](#examples)
8. [扫描模式](#scan-modes)
9. [报告](#reports)
10. [恢复](#resume)
11. [HTTP 配置](#http-configuration)
12. [原生打包](#native-packaging)
13. [本地测试目标](#local-test-target)
14. [架构](#architecture)
15. [项目结构](#project-layout)
16. [开发](#development)
17. [路线图](#roadmap)
18. [法律与免责声明](#legal--disclaimer)
19. [致谢与许可](#credits--license)
## 概述
`dirbuster-ng` 接收一个目标 URL,并对候选路径发送大量 HTTP 请求,以查明哪些路径是存在的。候选项来自**字典(wordlist)**或通过**字符集生成**,可选择与**文件扩展名**列表(`.php`、`.bak` 等)结合使用。当它发现一个目录时,可以对其进行**递归**扫描,并且能够**解析返回的 HTML** 以发现更多需要探测的链接。为了保持结果整洁,它首先会学习目标对“未找到(not found)”情况的基础(baseline)响应,并根据该基准过滤匹配结果。
这是对经典 **OWASP DirBuster** 的全面现代化改造:
| | 旧版 DirBuster | dirbuster-ng |
| --- | --- | --- |
| Java | Java 6/7 时代 | **Java 21** |
| UI | Swing | **JavaFX**(浅色/深色)+ 无头 CLI |
| 并发 | OS 线程 | **虚拟线程** |
| HTTP | HttpClient 3.x | **Apache HttpClient 5** |
| 报告 | 文本/XML | 文本、**HTML**、**Markdown**、**JSON Lines** |
| 构建 | Ant | **Maven** |
| 包名 | `com.sittinglittleduck.DirBuster` | `net.alphaben.dirbusterng` |
- **包名:** `net.alphaben.dirbusterng`
- **坐标:** `net.alphaben:dirbuster-ng:0.1.0`
- **作者:** alphaben · **许可证:** MIT · **基于:** [OWASP DirBuster](https://owasp.org/www-project-dirbuster/)
## 状态
| 领域 | 状态 |
| --- | --- |
| 核心扫描引擎(所有模式) | ✅ 正常工作 |
| 无头 CLI | ✅ 正常工作 |
| JavaFX GUI(设置 → 运行 → 报告) | 🟡 可用,正在完善 |
| 递归 + HTML 链接解析 | ✅ 正常工作 |
| 虚拟线程并发 | ✅ 正常工作 |
| 基础 / 误报过滤 | ✅ 正常工作 |
| 报告:文本 / HTML / Markdown / JSON Lines | ✅ 正常工作 |
| 恢复 / 检查点(checkpointing) | 🟡 实验性(仅限基于列表的扫描) |
| 速率限制 | ✅ 正常工作 |
| 代理 / HTTP 认证 / 自定义 header | 🟡 已在引擎中接入,GUI 覆盖部分尚不完全 |
| 原生应用镜像(jpackage) | ✅ Linux 已验证;其他操作系统未测试 |
| 自动化测试 (JUnit 5) | 🟡 增加中(约 12 个类) |
✅ 正常工作 · 🟡 部分实现/进行中 · ❌ 未开始
## 功能
**扫描**
- 四种扫描模式:基于列表、纯暴力破解以及 URL 模糊测试(列表和暴力)—— 参见 [扫描模式](#scan-modes)。
- 递归目录发现(使用 `-R` 切换)。
- 文件扩展名模糊测试(例如 `-e php,bak,old`)。
- HTML 链接解析,用于从响应中发现更多路径(使用 `-P` 切换)。
- 基准检测,可处理 soft-404 和不一致的基础情况响应。
- 自动选择 HEAD/GET,或仅使用 GET(`-g`)。
**性能与控制**
- Java 21 **虚拟线程**工作线程池;可配置线程数(`-t`)。
- 请求**速率限制**以保持适度。
- 引擎内置暂停/恢复/停止控制。
**HTTP**
- 核心 Apache HttpClient 5。
- 代理(可选代理认证)、HTTP 认证、自定义 header、User-Agent、超时、可选的重定向跟随 —— 全部通过 `HttpConfig` 实现,并通过 Java `Preferences` 持久化。
**报告**
- 易于阅读的**文本**报告(在无头模式下退出时自动保存)。
- **HTML** 和 GitHub 风格的 **Markdown** 高级报告。
- **JSON Lines / NDJSON** 实时流(`-j`),用于通过管道传输给其他工具。
- 实时扫描统计(速度、总数、进度)。
**前端与打包**
- JavaFX GUI([AtlantaFX](https://github.com/mkpaz/atlantafx) 浅色/深色主题)和一个共享同一引擎的无头 CLI。
- 通过 `jpackage` 构建自包含的**原生应用镜像**(捆绑 jlink runtime —— 运行时无需单独的 JDK/JavaFX)。
## 截图
## 环境要求
- **JDK 21+**
- **Maven 3.8+**
- _(可选)_ Docker —— 用于内置的 nginx 测试目标。
## 快速开始
```
# 1. 构建 (生成 target/dirbuster-ng-0.1.0-full.jar)
mvn clean package
# 2a. 启动 GUI
java -jar target/dirbuster-ng-0.1.0-full.jar
# 2b. …或运行 headless 扫描
java -jar target/dirbuster-ng-0.1.0-full.jar -H -u https://example.com/
```
在开发过程中,您可以跳过构建 jar 包,直接使用 `mvn javafx:run` 从源码运行 GUI。
## 用法
### GUI
```
java -jar target/dirbuster-ng-0.1.0-full.jar # empty setup screen
java -jar target/dirbuster-ng-0.1.0-full.jar -u https://example.com/ # target prefilled
```
启动时**不带** `-H` 参数将打开 JavaFX 界面。在命令行中传入的任何 URL/字典/报告值都会用于预填充设置界面。
### CLI(无头模式)
```
java -jar target/dirbuster-ng-0.1.0-full.jar -H -u https://example.com/
```
`-H` 在无 GUI 模式下运行,并在退出时自动保存报告。非常适合自动化和 pipeline。
### 选项参考
| 选项 | 参数 | 描述 | 默认值 |
| --- | --- | --- | --- |
| `-h` | | 显示帮助并退出 | — |
| `-H` | | 无头模式(无 GUI);退出时自动保存报告 | GUI |
| `-u` | `标签:JavaFX, Web安全, 域名枚举, 目录爆破, 蓝队分析, 蓝队工具, 请求拦截