jclee941/bug

GitHub: jclee941/bug

一个基于 Go 和 Node.js 的个人 Bug Bounty 自动化工具包,通过 Makefile 编排完整的安全研究工作流,涵盖侦察、监控和漏洞搜寻。

Stars: 0 | Forks: 0

# Bug Bounty 自动化工具包 / Bug Bounty 自动化工具包 [![状态:个人研究](https://img.shields.io/badge/status-personal%20research-blue)](#운영-상태--status) [![Go 脚本:仅使用标准库](https://img.shields.io/badge/go-stdlib--only-00ADD8)](#구성요소--package-contents) [![Node:Playwright](https://img.shields.io/badge/node-playwright%201.61-339933)](#구성요소--package-contents) [![许可证:ISC](https://img.shields.io/badge/license-ISC-green)](LICENSE) [![仓库:仅限本地](https://img.shields.io/badge/outputs-local--only-lightgrey)](#운영-상태--status) ## 概览 / 概览 此代码库将一个完整的 Bug Bounty 周期(`setup → recon → monitor → hunt → lab`)封装在一个 `Makefile` 中,用于个人安全研究。Go 脚本仅依赖标准库,并通过 `os/exec` 调用第三方 CLI;Node.js + Playwright 组合(`lab-runner.mjs`、`lab-solver.mjs`)涵盖了隔离的基于浏览器的实验工作流。所有输出产物都保存在带有时间戳且被 gitignored 的目录中,在没有明确的转发步骤下,绝不离开操作者的机器。 ## 运营状态 / 状态 | 领域 | 状态 | 备注 | |------|-------|------| | 生产就绪情况 | 个人研究工具包 — 非托管服务 | 个人研究用套件,非托管服务 | | Go 脚本 | 仅标准库,通过 `go run scripts/*.go` 运行 | 无外部 Go 模块,无需 `go.mod` | | Node 脚本 | `lab-runner.mjs`, `lab-solver.mjs` 由 Playwright `^1.61.0` 驱动 | 专门负责隔离实验工作流 | | 外部工具 | 封装了 `subfinder`, `httpx`, `nuclei`, `waybackurls`, `nuclei-templates`, `SecLists` | 安装责任由操作者承担 | | 输出范围 | 仅限本地,已被 gitignored | `recon/`, `targets/`, `reports/`, `wordlists/` | | 通知 | Discord webhook(通过 `config/targets.json` 选填) | 发生监控差异时 | | 默认速率限制 | `100 req/s`(针对 nuclei) | 可通过各个脚本的标志调整 | | 许可证 | ISC(详见 [`LICENSE`](LICENSE)) | | | 授权关卡 | 操作者必须持有书面的项目授权 | 仅在授权范围内运行 | ## 操作流程摘要 / 操作流程 | 阶段 | 命令 | 入口点 | 输出 | |-------|---------|-----------|---------| | 1. 设置 | `make setup` | `scripts/setup.go` | `wordlists/`,工具验证报告 | | 2. 侦察 | `make recon TARGET=domain.com` | `scripts/recon.go` | `recon//` — 5 阶段侦察产物 | | 3. 监控 | `make monitor TARGET=domain.com` | `scripts/monitor.go` | `targets//baseline.json`,差异日志 | | 4. 漏洞搜寻 | `make hunt TARGET=domain.com` | `scripts/hunt.go` | `recon//hunt/` — 潜在发现 | | 5. 实验 | `node scripts/lab-runner.mjs` / `lab-solver.mjs` | node + Playwright | 浏览器会话,隔离练习 | | 组合 | `make full-scan TARGET=domain.com` | 侦察 + 搜寻 | 两棵产物树 | | 清理 | `make clean` | 本地 rm | 清除 `recon/`, `targets/`, `reports/` | ## 组件 / 包内容 ### 顶层结构 / 顶层布局 | 路径 | 用途 | |------|---------| | `Makefile` | 单一入口点 — 通过 `make ` 暴露所有步骤 | | `package.json` | 声明 Playwright 依赖 + npm 脚本插槽 | | `config/targets.json` | 目标列表、通知频道、标志 | | `scripts/setup.go` | 外部工具验证 + 下载 wordlist | | `scripts/recon.go` | 5 阶段侦察流水线 | | `scripts/monitor.go` | 差异监控 + crt.sh + Discord 通知 | | `scripts/hunt.go` | 4 阶段针对性漏洞搜寻 | | `scripts/lab-runner.mjs` | 基于 Playwright 的隔离实验运行器 | | `scripts/lab-solver.mjs` | 基于 Playwright 的隔离实验解决器 | | `scripts/monitor.go` 及其他 Go 文件 | 全部通过 `go run` 单文件执行,无 `go.mod` | | `notes/phase2-checklist.md` | 学习检查清单 | | `notes/report-template.md` | Bug 报告模板 | | `notes/vulnerability-study.md` | 漏洞学习笔记 | | `LICENSE` | ISC 许可证全文 | ### 脚本职责 / 脚本职责 | 脚本 | 阶段 | 关键标志(默认) | |--------|-------|---------------------| | `setup.go` | 设置 | (无标志) — 验证二进制文件,下载 `SecLists` | | `recon.go` | 侦察 | `-d ` (必需), `-skip-nuclei` (关闭) | | `monitor.go` | 监控 | `-d ` (必需) — 对比 `targets//baseline.json` 差异 | | `hunt.go` | 漏洞搜寻 | `-d ` (必需), `-type idor|ssrf|` | | `lab-runner.mjs` | 实验 | Node CLI 参数,Playwright `chromium` | | `lab-solver.mjs` | 实验 | Node CLI 参数,Playwright `chromium` | ### 产物目录 / 产物目录(已被 gitignored) | 目录 | 生产者 | 内容 | |-----------|----------|---------| | `recon/` | `recon.go`, `hunt.go` | 带时间戳的扫描结果 | | `targets/` | `monitor.go` | 各域名的基线和差异 | | `reports/` | 操作者编写 | 提交的报告副本 | | `wordlists/` | `setup.go` | 下载的 SecLists,nuclei-templates | ## 入口点及扩展性 / 入口点及扩展性 | 界面 | 如何调用 | 备注 | |---------|-------------|-------| | CLI 编排器 | `make help` | 输出所有命令 + 使用示例 | | 单目标侦察 | `make recon TARGET=domain.com` | `recon.go -d ` | | 快速侦察 | `make recon-fast TARGET=domain.com` | 跳过 nuclei 步骤 | | 变更监控 | `make monitor TARGET=domain.com` | 基线差异 + 可选的 Discord 通知 | | 广泛搜寻 | `make hunt TARGET=domain.com` | `hunt.go` 全类别 | | 聚焦搜寻 | `make hunt-idor TARGET=domain.com`, `make hunt-ssrf TARGET=domain.com` | 单一类别 | | 组合运行 | `make full-scan TARGET=domain.com` | 侦察 + 搜寻 串联 | | 实验练习 | `node scripts/lab-runner.mjs` / `lab-solver.mjs` | 隔离的浏览器会话 | | 清理 | `make clean` | 仅删除产物,保留代码 | 扩展点 / 扩展点: | 目标 | 在此编辑 | |------|-----------| | 添加新的搜寻类别 | `scripts/hunt.go` → `huntTypes` slice | | 修改侦察阶段 | `scripts/recon.go` 主体中的阶段函数 | | 修改通知频道 | `scripts/monitor.go` + `config/targets.json` | | nuclei 速率限制 | 各脚本的标志默认值 | | 注册新目标 | `config/targets.json` | ## 快速开始 / 快速开始 | 步骤 | 命令 | 说明 | |------|------|------| | 1 | `git clone ` | 克隆代码库 | | 2 | 安装前置要求工具:Go 1.20+, Node.js 18+, `subfinder`, `httpx`, `nuclei`, `waybackurls`, `Discord webhook URL` (可选) | 操作者直接在系统中安装 | | 3 | `npm install` | 下载 Playwright 浏览器 | | 4 | `make setup` | 下载 wordlist,验证工具 | | 5 | `make recon TARGET=` | 首次侦察运行 | | 6 | `make hunt TARGET=` | 针对发现的攻击面进行搜寻 | | 7 | `node scripts/lab-runner.mjs` | 隔离实验工作流 | **操作者需自行满足的前置条件 / 操作者需自行满足的前置条件:** - 项目管理方提供的**书面授权**(所有扫描必须仅在授权范围内进行) - 本地安装 Go 工具链、Node.js 以及上述指定的安全 CLI - Discord webhook URL(如果需要监控通知,请在 `config/targets.json` 中配置) - 足够的本地磁盘空间,确保产物不会发送到外部 ## 配置 / 配置 `config/targets.json` 承担两项职责:声明目标域名/范围、配置通知。 | 键 | 用途 | 示例 | |-----|---------|---------| | `targets` | 操作者明确注册的目标数组 | `[{ "domain": "example.com", "scope": ["*.example.com"] }]` | | `discord.webhook` | 用于监控差异通知的 webhook URL(可选) | 环境变量或明文 | | `discord.rate_limit` | 防止通知泛滥 | 每秒消息数 | | `defaults.rate_limit` | nuclei 默认速率 | 默认 `100 req/s` | 可通过脚本标志在运行时进行覆盖(除了 Make 目标中的 `TARGET=`,还可通过环境变量/CLI 标志传递)。 ## 命令参考 / 命令参考 | Make 目标 | 底层命令 | 使用场景 | |-------------|------------|----------| | `help` | print + grep 自带文档 | 查看命令列表 | | `setup` | `go run scripts/setup.go` | 首次设置环境 | | `recon TARGET=x` | `go run scripts/recon.go -d x` | 完整侦察 | | `recon-fast TARGET=x` | `go run scripts/recon.go -d x -skip-nuclei` | 快速侦察 | | `monitor TARGET=x` | `go run scripts/monitor.go -d x` | 追踪新发现 | | `hunt TARGET=x` | `go run scripts/hunt.go -d x` | 全类别搜寻 | | `hunt-idor TARGET=x` | `go run scripts/hunt.go -d x -type idor` | 仅搜寻 IDOR | | `hunt-ssrf TARGET=x` | `go run scripts/hunt.go -d x -type ssrf` | 仅搜寻 SSRF | | `full-scan TARGET=x` | recon + hunt 串联 | 一键全部运行 | | `clean` | 本地 rm | 清理产物 | ## 本地开发 / 本地开发 | 任务 | 方法 | |------|------| | 直接运行单个脚本 | `go run scripts/recon.go -d example.com` | | 直接运行 Node 脚本 | `node scripts/lab-runner.mjs` | | 更新依赖 | `npm install`(仅限 Playwright) | | 管理 go.mod | 不需要 — 采用单文件仅标准库策略 | | 添加新步骤 | 在现有脚本的阶段函数中添加 hook | | 更新文档 | [`notes/phase2-checklist.md`](notes/phase2-checklist.md), [`notes/report-template.md`](notes/report-template.md) | | 审查产物 | `recon//`, `targets//` | 编码规范 / 编码规范: - 所有 Go 脚本均为独立文件,仅使用标准库 - 外部工具通过 `os/exec` 调用 - 产物保存在 `recon//` 树中 - 严禁提交扫描结果 — `recon/`, `targets/`, `reports/`, `wordlists/` 均被 gitignored - 切勿在代码中硬编码域名 — 统一通过 `config/targets.json` 或 `TARGET=` 标志注入 ## 负责任的使用 / 负责任的使用 作为一款安全自动化工具包,我们严格遵守以下规则。 | 规则 | 原因 | |------|------| | 仅在书面授权的程序/范围内执行 | 未经授权的扫描违反法律及政策 | | 不盲目提高默认 `100 req/s` 的 nuclei 速率 | 保护目标服务 | | 产物不会自动发送到外部 — 需要明确的转发步骤 | 防止数据泄露 | | 不在代码中硬编码域名 | 避免范围外目标 | | 发现漏洞时遵循 [`notes/report-template`](notes/report-template.md) 负责任地报告 | 优先选择可协调的披露途径 | | 通知频道需由操作者有意开启 | 防止监控通知泛滥 | ## 测试 / 测试 此代码库**不包含自动化测试套件** — `package.json` 中的 `test` 脚本有意设为占位符。 | 项目 | 策略 | |------|------| | 单元测试 | 无(因外部安全 CLI 编排和侦察工具的特性,需要真实目标/模拟环境) | | 集成测试 | 由操作者在本地通过 `make full-scan TARGET=` 手动验证 | | 测试目标 | 本地实验域名或明确授权的自有资产 | | CI/CD | 无 — 个人研究工具包 | 添加新步骤时,请务必先在模拟目标上进行 dry-run 测试。 ## 维护者 / 维护者 | 角色 | 备注 | |------|------| | 所有者 | 个人运营者 — `jclee@dev/bug` 标识符 | | 联系方式 | 此代码库的 Issue 跟踪器 | | 响应时间 | 尽力而为,视个人时间而定 | | 升级支持 | 无(非托管服务) | ## 附加文档 / 更多文档 | 主题 | 文档 | |-------|----------| | 操作者知识库 | [`AGENTS.md`](AGENTS.md) | | 贡献指南 | [`CONTRIBUTING.md`](CONTRIBUTING.md) | | 学习检查清单 | [`notes/phase2-checklist.md`](notes/phase2-checklist.md) | | 报告模板 | [`notes/report-template.md`](notes/report-template.md) | | 漏洞学习笔记 | [`notes/vulnerability-study.md`](notes/vulnerability-study.md) | | 外部工具(由操作者安装) | `subfinder`, `httpx`, `nuclei`, `waybackurls`, `SecLists` 的项目页面 | ## 许可证 / 许可证 ISC — 全文见:[`LICENSE`](LICENSE). 本套件仅用于**授权的安全研究和学习**,操作者需对滥用行为承担责任。
标签:EVTX分析, MITM代理, 实时处理, 密码管理, 数字取证, 日志审计, 浏览器自动化, 特征检测, 自动化脚本, 运行时操纵