授权书签完字,并不意味着测试可以马上开始。真正决定一次渗透测试是“合规交付”还是“事故复盘”的,是签字之后那段把条款翻译成动作的过程:授权书上的“测试范围:example.com”到底包不包含子域、CDN 回源 IP 和第三方 SaaS?时间窗写的是工作日 9:00–18:00,那凌晨跑完的扫描任务要不要停?“禁止拒绝服务”是否意味着连目录爆破的并发都要压到个位数?这些问题在授权书里往往只有一句话,落到执行层却对应几十个具体判断。
本文面向渗透测试人员、红蓝对抗团队,以及需要组织授权验证的开发运维团队,目标是把授权书条款转写成一份测试人员每天可对照、事后可复核的交战规则(Rules of Engagement,RoE)清单。内容聚焦规则对接与执行控制,不涉及具体漏洞利用链。前置条件是:已有书面授权、已确认应急联系人、已约定数据处理要求;如果这三项中任何一项缺失,正确做法是先补齐再开工。

把授权书拆成四类可执行字段
授权书是法律文本,交战规则是操作文本。两者之间需要一次翻译,翻译的产物应当能直接回答“这个动作现在能不能做”。建议按四类字段组织,每一类都要求写到没有解释空间为止。
第一类:目标资产。 不要写“example.com 及其相关系统”,而要写成可枚举的清单。域名要区分是否包含子域、是否包含通配符、是否包含历史解析记录;IP 要写具体网段并注明是否包含云厂商共享地址;应用要写清入口 URL 和登录方式。特别要单独列出的三类容易越界的资产:
- 第三方托管服务(CDN、对象存储、邮件网关、SaaS 后台),这些通常不在授权范围内,但很容易在信息收集阶段被扫到;
- 与目标共用 IP 或域名的关联业务,尤其是同一台服务器上的其他站点;
- 测试方自己搭建的跳板机、代理和扫描节点,需要明确其合法性来源。
第二类:时间窗与节奏。 时间窗不只是起止日期,还应包含每日可操作时段、是否允许自动化扫描、并发上限、是否避开业务高峰和结算窗口。授权书写“2026-10-01 至 2026-10-07”时,要追问:这七天是全天候可测,还是仅限工作时段?扫描器能否在夜间无人值守运行?一旦触发告警,谁来确认是测试流量而非真实攻击?
第三类:禁止项与限制项。 常见的禁止项包括拒绝服务类测试、社会工程、物理入侵、数据拖取、持久化后门、对生产数据的修改。这些词同样需要翻译:例如“禁止拒绝服务”应细化为“不使用高并发爆破、不发送超大请求体、不对登录接口做超过 N 次/分钟的尝试”;“禁止拖库”应细化为“单次查询返回行数上限、不导出完整表、发现可访问数据时立即停止并上报”。
第四类:停止条件与升级路径。 这是最容易被忽略、也最不该省略的一类。停止条件应当是可观测的信号,而不是主观判断,例如:目标服务出现 5xx 比例上升、监控系统触发告警、发现真实用户数据、触及未授权资产、应急联系人要求暂停。每一条都要绑定“谁有权宣布停止”和“停止后如何确认恢复”。
| 授权书常见表述 | 交战规则中的可执行写法 | 复核方式 |
|---|---|---|
| 测试范围:example.com | 仅 www.example.com 与 api.example.com,不含子域枚举结果 | 每日比对目标清单与实际请求 Host |
| 测试周期一周 | 10-01 至 10-07,每日 09:00–18:00,扫描并发≤10 | 留存工具日志时间戳 |
| 禁止影响业务 | 不对登录接口做高频尝试,不发送破坏性 payload | 请求量统计与 payload 白名单 |
| 发现数据及时报告 | 发现可访问用户数据立即停止,30 分钟内上报 | 事件记录与通知回执 |
范围边界写不歧义的三条规则
范围歧义是越界的第一来源。以下三条规则可以显著降低歧义。
规则一:用“允许清单”而不是“排除清单”。 “除内网外都可以测”这种写法几乎必然出问题,因为“内网”的边界无人能准确界定。正确做法是列出允许测试的资产,未列出的默认不允许。如果确实需要排除项,也要把排除项写成可枚举清单,并说明发现排除项资产时的处置动作。
规则二:对每个目标标注“可触达深度”。 同一个域名,允许被动信息收集、允许主动扫描、允许漏洞验证、允许权限提升,是四个不同层级。建议在清单中为每个目标标注深度等级,并明确该等级下允许使用的技术类别。这样在执行时,测试人员不需要每次重新判断“这一步算不算越界”。
规则三:把“不确定”设计成一种合法状态。 再详细的清单也会遇到未覆盖的情况,例如扫描过程中发现一个未列入清单但明显属于目标组织的域名。此时正确的流程不是“先测了再说”,而是暂停、记录、上报、等待书面确认。交战规则中应当明确:任何不在允许清单内的资产,一律视为范围外,发现后立即停止对其的任何主动操作。
越界信号与必须停止的时刻
停止条件要能在执行现场被快速识别。以下信号出现任一,就应当触发暂停并进入确认流程:
- 资产信号:请求的 Host、IP 或返回内容指向允许清单之外的资产,包括跳转后的落地页、接口返回的第三方地址、DNS 解析到的共享 IP。
- 数据信号:响应中出现真实用户数据、凭据、身份信息、业务敏感字段,尤其是可批量访问的情况。
- 可用性信号:目标响应时间明显上升、错误率升高、监控告警、业务方反馈异常。
- 授权信号:时间窗结束、应急联系人要求暂停、授权方撤回或变更范围。
- 工具信号:自动化工具开始对范围外目标发起请求,或代理配置失效导致流量走向不可控。
停止之后要做三件事:第一,保存当前状态与已产生的证据;第二,通过约定渠道通知应急联系人,说明触发原因、已影响范围和当前处置;第三,在获得书面确认前,不对相关资产发起任何新的主动请求。需要强调的是,“停止”不等于“删除”,证据在确认处置方式前应当保留。
发现可访问用户数据时的处置流程
发现可访问的用户数据是授权测试中最敏感的场景之一。处置原则是:不扩大、不下载、不传播、可复核。
具体步骤建议如下:
- 立即停止对该接口或存储的进一步访问,不再尝试翻页、导出或遍历。
- 记录最小必要证据:请求方法、URL(可脱敏)、时间戳、返回状态码、返回体字段结构(不记录完整数据内容)、数据量级估算。
- 按约定渠道上报,说明发现位置、可能影响范围和是否仍在可访问状态,避免在即时通讯工具中粘贴真实数据。
- 等待授权方指示,由其决定是否需要临时下线、加访问控制或调整测试范围。
- 在报告中以脱敏方式呈现,用字段名和数量级说明问题,不附带真实记录。
如果授权方要求测试方协助验证修复效果,也应在其确认后,用最小请求验证访问控制是否生效,而不是重新拉取数据。
证据留存字段与清理步骤
证据的价值在于可复核,而不是数量多。建议为每条发现保留以下字段:
- 发现编号与时间戳(含时区);
- 目标资产标识(域名、IP、应用名);
- 请求方法与路径(敏感参数可脱敏);
- 复现条件(账号角色、前置状态、必要参数);
- 观察到的结果(状态码、字段结构、数据量级);
- 影响判断与风险等级;
- 证据文件哈希与存放位置;
- 处置状态(已上报、已修复、待复测)。
证据本身也要有生命周期。测试结束后,按以下顺序清理:
- 确认报告已交付、授权方已确认无需补充材料;
- 删除测试过程中产生的临时数据、导出文件、本地缓存和代理日志;
- 回收或销毁测试账号、API 令牌、临时凭据和跳板机;
- 撤销测试期间为验证而添加的配置、规则或后门(如有授权);
- 对保留的证据文件做完整性校验并记录哈希,按约定保留期限存档,到期销毁;
- 形成一份清理确认记录,由双方确认。

让规则可复核的日常动作
交战规则不是签完就锁进抽屉的文件。执行期间,建议保持三个习惯:每天开工前对照允许清单确认当日目标;每次使用自动化工具前确认并发与范围配置;每天收工后记录当日操作的目标、时间与结果。这些记录既是自我约束,也是事后复盘和争议澄清的依据。
回到最初的问题:范围边界怎么写才不产生歧义,靠的是允许清单加触达深度;越界信号何时必须停止,靠的是把停止条件写成可观测信号;测试结束后如何安全处置,靠的是最小证据加明确清理流程。把这三件事写进交战规则并每天对照,授权测试才真正具备可复核性。

重庆市 1F
授权书签字后就开工,确实容易踩坑