提交一次已授权入口,自动完成预检、发现、采集、分析和证据报告;Web、API、CLI 共用同一核心服务。
普通用户只需输入 HTTP(S) URL;不需要创建 target、复制任务 ID 或手动运行中间 CLI。
validate → discover → collect → normalize → analyze → report 六阶段持久化执行,进度、失败、覆盖缺口和报告位置均可查询。
默认允许已授权公网与本机目标、不做破坏性检查、secret 不直接存储、evidence 默认脱敏、所有关键操作记审计日志。
HTML、Sitemap、匿名浏览器、Hash 路由、JS 静态线索和 URL/OpenAPI 导入,共用同一清单、来源筛选和导出。
默认 HTTP 采集;在 Web「发现选项」中开启地图、JS 线索或匿名浏览器。动态请求只允许 GET/HEAD;表单、JS 静态声明和 OpenAPI 操作保留为候选,不自动提交或调用。
路由视图与 HTTP 响应分别记录。每条记录可查看脱敏来源,按来源筛选;详情页、CLI 和报告说明发现、新候选、重复、请求尝试与响应观察。统计不是站点发现率,执行结束也不表示覆盖完整。
候选、地图递归、页面、资源和浏览器请求均有上限。输入原文不回显;预览临时保留 15 分钟,历史任务导入内容需重新提供。新增发现选项当前用于匿名扫描,已有认证采集流程保留。
garden scan https://authorized.example --sitemap --js
garden scan https://authorized.example --collection-mode browser --max-browser-requests 150
garden assets list --source scan --run-id N --source-kind sitemap
本地验收:入口 + 页面链接 + URL 种子得到 3 条已有响应;POST 表单保留为 1 条未请求候选。按 URL 导入来源筛选和导出均为 1 条,查询值在预览、清单及报告中脱敏。
升级执行 garden db upgrade 至迁移 0007;JSON/CSV 使用资产 schema 1.3,旧记录未知来源不补造。
清单标注疑似登录回退、软 404、统一响应和重定向别名,可筛选、展开原因,并随 JSON/CSV 导出。
候选视图单独展示 quick scan 保存的未请求队列,不混入资产记录总数。历史任务或未提供队列时显示未知;切换视图不改变任务已有响应计数。
规则只分析已有采集结果,不增加探测。同站点、同身份且完整的响应才参与内容对比。HTTP 200 或未命中线索不代表已确认业务资产,所有业务有效性结论保持待确认。
Web、CLI 和导出采用相同规则 passive-v1;升级数据库至迁移 0006 后使用新增元数据。
在资产清单切换“归并资产”,查看同一路由下保留的原始观察、请求变体及证据入口。
garden assets list --source scan --run-id N --view grouped 使用版本化规则,隔离站点、方法、类型和精确路径;JSON/CSV 导出保留全部匹配观察。
新捕获请求区分参数值、请求体和请求头差异,并保留响应状态。历史数据无法还原精确变体数时显示未知。路由归并不代表业务等价,也不是跨任务资产库。
从扫描结果或 inventory 任务进入资产表,按类型、身份、观察状态筛选,追溯来源并导出。
garden assets list --source scan --run-id N 查看已有记录;garden assets export --source scan --run-id N --format json --output assets.json 导出全部匹配记录,也支持 CSV 与 inventory 来源。
计数来自实际资产记录,不跨身份或任务归并。“已有响应”不代表资源有效或目标安全;缺失信息保持未知。来源详情保留记录 ID 和已有证据关联,常规输出对 URL 查询值脱敏。
清单查询与导出不会重新访问目标;不改变现有登录和采集流程。N 为已存在的任务 ID。
检查当前安装、配置来源、浏览器文件、数据库版本、本地端口与存储权限,给出正常、需要处理或无法确认。
garden doctor 输出脱敏诊断与建议;garden doctor --json 方便收集结构化结果。可用 --ui-port 指定本机端口。
只读检查不会自动安装、迁移、创建目录、启动或停止服务,也不会访问扫描目标。端口有监听不等于 Garden 健康;浏览器文件存在不等于已验证实际运行能力。
结果页、CLI 和新报告共用解释。执行进度 100% 不代表覆盖完整。
这是示例说明。新匿名扫描按页面数、资源数和发现深度分别记录已发现但未请求的同源 URL,附最多 3 条脱敏样例。已尝试但失败的请求另行说明。
旧记录、超时和身份上下文失败无法提供可靠数量时显示“数量未知”。认证覆盖仍按匿名、普通用户、管理员解释缺口;未观察到的内容保留 unknown。
沿用匿名任务配置 → 调整预算 → 重新预览 → 确认新任务。没有缺口条目不代表整个站点已覆盖。
6 个自动阶段,每个阶段产出结构化数据,不是纯文本日志。
Burp/ZAP 强在代理抓包、手工测试、主动扫描。Garden 补的是登录编排、结构化 Inventory、Finding 生命周期、证据脱敏、复测与报告导出。
Nuclei 擅长匿名协议级模板扫描。Garden 专注登录后的业务路径验证,产出面向团队协作的结构化结果。
录制工具解决"流量怎么拿"。Garden 解决"拿到之后怎么办"——把流量变成 inventory、findings、证据、复测对象。
API 越权测试只看接口权限。Garden 同时覆盖浏览器态、页面态、接口态和登录后的完整业务路径。
$ git clone https://github.com/Moxxkidd/Garden.git $ cd garden $ pip install -e '.[dev]' $ cp .env.example .env $ make demo # open http://127.0.0.1:8000 and submit one URL # or use the same core service from CLI: $ gardenctl scan --url http://127.0.0.1:8888/