From 04f40daa5c7a6648c6547bcea91c61897954091a Mon Sep 17 00:00:00 2001 From: Autumn-27 <53844290+Autumn-27@users.noreply.github.com> Date: Sat, 8 Aug 2026 12:59:58 -0400 Subject: [PATCH] =?UTF-8?q?fix(goals):=20URL/=E5=B8=A6=E5=AD=90=E5=9F=9F?= =?UTF-8?q?=E7=9B=AE=E6=A0=87=E7=99=BB=E8=AE=B0=E4=B8=BA=20subdomain?= =?UTF-8?q?=EF=BC=8C=E7=A6=81=E6=AD=A2=E7=BC=A9=E6=88=90=E6=A0=B9=E5=9F=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正目标设定 agent 把带子域的 URL 目标(如 https://xxx.example.net/) 误登记成整个根域 example.net、放大测试范围的问题。goalsScopeTail 明确: URL/主机名一律取完整主机名 kind=subdomain,禁止归约到 eTLD+1;仅裸根域名 或用户明说「整站/所有子域」才用 root_domain。 Co-Authored-By: Claude Opus 4.8 --- agent/goals.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/agent/goals.go b/agent/goals.go index 8c7b47a..185182e 100644 --- a/agent/goals.go +++ b/agent/goals.go @@ -39,14 +39,15 @@ const goalsDefaultTmpl = `你是渗透测试目标分解器。你的职责是从 const goalsScopeTail = ` **额外职责:登记测试资产范围** -除拆分目标外,你还要从上面的「任务目标 / 任务描述」里识别出**明确给出的测试资产范围**,并调用 add_task_scope 登记为本任务范围(资产测试覆盖度的分母,也是授权边界): -- 完整根域名(如 example.com,其所有子域都在测试范围)→ kind=root_domain,value=example.com -- 单个精确子域名(如 app.example.com,只测这一个)→ kind=subdomain,value=app.example.com -- IP 或网段 → kind=ip / cidr,value=IP 或 CIDR -规则(务必遵守): +除拆分目标外,你还要从「任务目标 / 任务描述」里识别出**明确给出的测试资产范围**,调用 add_task_scope 登记(资产测试覆盖度的分母,也是授权边界)。**最小范围原则:只登记用户明确点到的那一个目标,绝不擅自放大。** +- 目标是 URL 或带主机名的地址(如 https://xxx.example.com/path、app.example.com)→ 取其**完整主机名**,kind=subdomain,value=完整主机名。 + 例:目标 https://a1b2c3.lab.example.net/path → kind=subdomain,value=a1b2c3.lab.example.net(**不是** example.net)。 + **严禁**把带子域的主机名缩成根域名——看到 xxx.example.com 就登记整个 example.com 会把范围扩到用户目标之外,违背最小范围原则。 +- 仅当用户给的就是**裸根域名、且不含任何子域**(如直接写 example.com),或明确说“整个站点 / 所有子域 / 全域名” → 才用 kind=root_domain,value=example.com。 +- 纯 IP 或网段 → kind=ip / cidr,value=IP 或 CIDR。 +- **不要**登记公司范围(company)——任务刚建立、资产系统里通常还没有这家公司,登记不上,公司级范围交由后续 plan 阶段处理。 +其它规则: - 只登记**目标/描述里明确写出**的范围;严禁臆造或推断未提及的域名/IP。 -- 粒度拿不准时选更**精确**的那种(宁可 subdomain,不要轻易升级为 root_domain)。 -- 只处理域名 / IP / 网段;**不要**登记公司范围(company)——任务刚建立、资产系统里通常还没有这家公司,登记不上,公司级范围交由后续 plan 阶段处理。 - reason 简述依据来自哪句话,便于审计。 - 若目标/描述中没有任何明确资产范围,则**不要**调用 add_task_scope。 先用 add_task_scope 登记范围(如有),再调用 set_goals 提交目标。`