YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Bounty Nightwatch
一个 scope-first 的夜间漏洞研究流水线 MVP。它的目标是把授权项目中的证据整理成少量、可复核的候选,而不是制造大规模扫描器。
当前版本提供:
- 严格的授权与 scope 配置校验;
- 默认 dry-run,实时请求必须显式加
--execute; - 只允许配置中明确列出的 URL,且仅支持
HEAD/GET; - 不跟随重定向、限制响应体大小、全局请求数和请求速率;
- HAR 离线导入、敏感值脱敏、低风险配置异常分析;
- SQLite 运行记录、候选去重、Markdown 夜间报告;
- 人工反馈与赏金记录,为 7 天可行性评估积累数据。
快速开始
要求 Python 3.11+。项目本身只使用标准库。
py -m venv .venv
.venv\Scripts\python -m pip install -e . # 可选,仅安装 nightwatch 短命令
$env:PYTHONPATH = "$PWD\src"
.venv\Scripts\python -m bounty_agent.cli validate --program programs/local-demo.json
.venv\Scripts\python -m bounty_agent.cli run --program programs/local-demo.json --har examples/sample.har
.venv\Scripts\python -m bounty_agent.cli batch --program programs/local-demo.json --inbox inbox
夜间脚本直接加载 src/,因此即使离线环境缺少 setuptools,也不需要执行可选的安装步骤。
无需安装 pytest;测试也只使用标准库:
python -m unittest discover -s tests -v
最后一条命令只做离线 HAR 分析,并在 reports/ 生成报告。实时请求默认为 dry-run:
nightwatch run --program programs/local-demo.json
只有配置通过全部安全检查后,以下命令才会访问 seed URL:
nightwatch run --program programs/local-demo.json --execute
不要把模板中的授权状态改为 approved,除非你已经阅读并保存了项目规则,确认目标、自动化方式和请求速率均在授权范围内。
接入真实项目
- 复制
programs/program-template.json。 - 将平台规则保存到本地,填写来源、确认时间和失效时间。
- 精确填写资产、排除项、允许的方法、速率和总请求数。
- 先运行
validate,再用 dry-run 检查计划。 - 首次实时运行时人工观察;不要直接设为无人值守。
配置中的排除项总是优先于包含项。*.example.com 只匹配子域名,不匹配根域;路径按规范化后的前缀匹配。程序不做子域名爆破、目录爆破、口令尝试、漏洞利用、数据修改、命令执行或自动提交报告。
命令
nightwatch validate --program FILE
nightwatch run --program FILE [--har FILE] [--execute]
nightwatch batch --program FILE [--inbox DIR]
nightwatch feedback --db FILE --fingerprint ID --status valid --reward 500
nightwatch summary --db FILE [--days 7]
feedback 的状态可用:unreviewed、false_positive、valid、duplicate、accepted、rejected。
夜间任务
scripts/nightly.ps1 是夜间入口:它读取 inbox/ 中的 HAR,每个文件按 SHA-256 只成功处理一次。运行被中断时,下次会跳过已完成项并重试失败项。先手工运行并确认报告正确,再启用计划任务。脚本永远不传 --execute,因此不会访问真实目标。
脚本运行期间会通过 Windows 的临时执行状态阻止系统睡眠,但不会强制点亮屏幕,也不会永久修改电源计划。脚本完成或失败后会在 finally 中清除保持唤醒状态。这个机制不能唤醒一台已经进入睡眠的电脑;要保证 23:00 能启动,电脑在触发前必须保持唤醒,或者另行使用 Windows 任务计划程序的“唤醒计算机运行此任务”。
.\scripts\nightly.ps1 -Program programs\local-demo.json -Inbox inbox
当前边界与下一阶段
v0.1 重点是建立可信的数据和安全边界。下一阶段才应加入:OpenAPI/JS 静态分析、模型漏斗、Verifier/Critic、平台 scope 同步适配器。任何模型生成的主动验证动作都必须再次经过同一个 policy gate,不能绕过它。