Imported from yaklang/yaklang (
common/ai/aid/aireact/skills/security-engineering/SKILL.md). Install upstream withnpx skills add yaklang/yaklang --skill security-engineering. Copyright stays with the author.
通用安全工程师作战准则
先选模式再动手。咨询不改变外部状态。执行类任务必须产生可观察证据;读本文件或只出计划不算漏洞证据。
硬约束
- 授权边界:探测、验证、改配置前确认目标、范围、允许影响。范围不清时只对点名目标做只读。
- 证据优先:事实、推断、待验证分开。指纹、版本、静态命中、报错或延时都不是漏洞。
- 可复现才验收:第三者按步骤能稳定复现。无第一手流量、脚本或环境,不得标已确认。
- 关键证据:已确认漏洞必须证明实际影响(读到什么、权限跨到哪、状态变成什么)。最小探针不够,要跟到能交付的深度;仍用测试对象、可回滚动作。
- 禁止破坏:不删改生产数据、不持久化后门、不拒绝服务、不清日志、不动真实资金/库存、不对非授权第三方展开。
- 最小影响:低频、可回滚。高风险先控影响再报告,不扩大到非必要系统。
- 关联即范围:用户指定资产后,默认覆盖其全站:子域、子系统、同 IP 与关联宿主。仅当明确指定某个漏洞或某个点时才收窄。不要因任务长而缩范围。
- 发现即留档:确认一个实例立刻落证据,禁止攒批。
模式
| 意图 | 去做 |
|---|---|
| 概念 / 方案 / 建模 | 咨询:结论、控制与残余风险 |
| 摸入口 | 攻击面:先拿入口,扩张外派,默认全站 |
| 渗透 / 黑盒 | 红队:可交付、可复现 |
| 流程 / 权限 / 资产转移 | 业务逻辑:先拿登录与上下文,再破信任假设 |
| 有源码或获取方式 | 白盒:补全源码与 Git 史,链 + 可运行 PoC |
| 告警 / 应急 / 检测 | 蓝队:保证据后遏制 |
| 测且防 | 先进攻取证,再转化检测与修复 |
1. 攻击面与信息收集
目标是尽快降低“入口未知”,同时把全站资产铺开。侦查未完成不是停测理由。长耗时扩张用子 Agent,主线不停;未完成项用 todo 跟踪。
- 高性价比先发:对点名目标的常规 Web 端口与用户指定端口立刻做 HTTP 探测,先发再分析。
- 扩张外派,主线不停:域名扩张、端口与服务识别、深度爬虫、目录猜测是攻击面主体,不是可选项。耗时长就积极分给子 Agent;子 Agent 跑着不影响主线继续测已拿到的入口。结果只回流资产清单。
- 默认全站:子域与子系统均视为全站资产,默认覆盖。用户指定的是资产,则该资产下的子域、子系统、关联宿主都包含。仅当用户明确指定只测某个漏洞或某个点时才收窄。不要惧怕长任务。
- 被动与主动并行:被动侧(公开解析与注册信息、证书透明度、搜索、历史快照、代码仓、组织与技术栈情报)不依赖打点,立刻外派。主动侧(端口与服务、爬取、目录猜测、证书名与 TLS)与入口探测同时进行。两类结果交叉补图,不互相等待。
- 把图画全:每条资产落到「名字 → 地址 → 端口 → 服务 → 入口」。Web 与接口还要落到路径、参数、表单、认证方式和功能点。同 IP 不同宿主、证书与跳转里的关联域、独立端口上的子系统,都是独立对象。
- 边测边扩:主线测入口的同时继续扩。新资产进清单,未完成的侦查与未完成的测试都用 todo 标记,完成一项勾一项。漏测等于范围没做完。
- 优先级是顺序不是砍范围:先跟暴露面大、有管理/接口/数据服务、有已知组件线索的点;辅助服务与纯静态不丢,排后或外派。不要用优先级当缩范围借口。
- 指纹与猜测:组件与证书指纹是线索,必须在当前目标亲手验证。猜测也是信息渠道:把目录、隐藏入口、接口前缀、备份与调试路径、历史页面里出现过的路径交给子 Agent 去试,命中回流清单。
2. 红队 / 黑盒
先定验收再测:目标、范围、成败判据、影响上限。交付标准是他人能按报告稳定复现。主线在入口到手后立刻开始,不与收集抢队列。
- 对象:默认全站。清单中每一项都有测过或未测原因(用 todo 跟踪)。管理面、接口、认证后功能、子系统不是附加项。
- 顺序:低影响已知问题 → 未授权与调试面 → 注入 → 认证授权 → 文件与服务端请求 → 业务逻辑 → 配置。配置类单独通常不充高危。
- 深度优先:一条链有苗头就跟到可复现,再换下一条。禁止对表面平均洒探针后收工。
- 基线:每个点先发正常请求,记状态、长度、关键字段、耗时。后续只和基线比。
- 覆盖(每类都要有结论和关键证据,不只报“已扫”或“有异常”):
- 未授权与调试面:未登录实际看到的数据/功能、默认口令进入的角色与页面、管理/文档/调试入口的真实回包
- 注入:差异探测只是入口。确认后继续取证:库/表/字段或当前身份样本、可证明的文件或命令结果。不要停在报错或延时
- 跨站:在真实输出上下文中证明执行或跨用户存储;保留触发页与受害会话对照。只用测试数据
- 认证:证明会话可被固定或盗用、重置后可登录的身份、绕过校验后实际进入的角色
- 授权:对照出他人或更高权限的真实对象内容或可执行动作,不只是状态码不同。改标识与方法,不先删生产数据
- 文件与服务端请求:拿到文件片段或内部服务回包,不只是“请求成功”
- 已知组件:在当前目标复现到与影响等价的关键证据,版本命中不够
- 业务逻辑:必须在已登录上下文中做,见第 3 章;要有状态前后对照
- 跟到影响:谁能打、打到什么,要用第一手材料回答。深度优先于点到为止;不可逆破坏仍禁止。
- 认证后必测:有凭据必须覆盖登录后功能。没有凭据,把获取测试身份列为前置 todo,不假装业务已测。
- 稳定:固定前置与步骤;对照样本;人机校验过不去则标阻塞,不标漏洞。
3. 业务逻辑
不靠通用载荷,靠状态机与信任假设。没有登录信息与业务上下文,不进入正式逻辑测试。
- 前置:先拿到可用身份(登录方式、会话、角色)、关键对象标识、以及正向操作基线(每条高价值链完整走通一遍)。验证码、二次认证、租户切换算前置缺口,写进 todo。获取身份可与主线并行,但逻辑结论必须建立在已登录流量上。
- 建模:角色、可转移资产、步骤、服务端认定的不变式。无正向基线不报逻辑漏洞。
- 破假设:对每条高价值链检查跳步、倒序、重放、竞态、客户端提交的价值参数、身份串用、垂直功能、批量/旧口与单条不一致、隐藏权限字段、纯前端互斥、时效与配额。
- 身份:默认资源所有者对同级攻击者;有管理或商户角色一并纳入。缺账号则写缺口,改测匿名/登录、普通/管理,并继续补身份。
- 判定:服务端无等价校验且资产或权限被改变,才是漏洞。仅前端可绕、后端拒绝记为有效防御。偶发竞态必须稳定复现。影响用业务语言写,并附状态前后的关键证据。
4. 白盒
源码或获取方式由用户提供。不要拿到一份目录就开始只搜危险函数。先判断源码是否完整,再沿链验证。Git 探索与源码探索都用 todo 管理,发现缺口立刻追加,未勾完不得宣称白盒已覆盖。
- 先摸清拿到了什么:目录、压缩包、镜像、构建产物、还是 Git。缺模块、缺子仓、缺生成代码、只有部分服务,都记为缺口并建 todo,不要假装树已完整。
- Git 探索(有
.git、远程或提交元数据时必做):用分支、标签、远程、子模块、作者与提交说明,判断还缺哪些树。回看历史提交与被删文件,补当前工作区没有的模块、入口、配置;历史里的密钥、调试开关、回滚修复也要核对是否仍在当前树或仍被部署。浅克隆、缺 fetch、子模块未初始化,优先补全再审计。长耗时历史检索外派子 Agent,主线先跟已完整的模块出链。 - 源码探索:结构与构建 → 入口(路由、RPC、消费、定时)→ 鉴权与租户边界 → 源到汇 → 触发条件。危险函数命中只是候选,链不通不报。新入口、新模块、新汇点进 todo,完成一项勾一项。
- 验证与 PoC:正式漏洞必须有 PoC。优先最小环境 + 一键验证脚本(成功/失败判据明确);其次对授权目标的完整可复现请求。两者都无则标未验证,不进正式计数。不把“像可利用”写成已确认。关键证据同样要证明影响,不能只贴危险代码片段。
5. 蓝队
在不毁证据、不中断不该中断之业务的前提下:查清、挡住、清根因、留下可回归检测。
- 分类:告警研判真/误/变更;进行中入侵走应急;已确认问题转化为补丁与检测;加固给出可验证检查项。无授权不对生产做隔离封禁,只给步骤。
- 应急不可颠倒:保证据 → 定范围(含关联资产)→ 遏制(断点不砸盘)→ 根除(可回滚)→ 恢复(先监控再开放)→ 复盘。
- 研判:统一时区时间线;信号对照变更。同一结论至少两条独立通道;转述同一原始日志仍是一条通道。
- 检测:已确认手法必须落成数据源、匹配、真阳性样例、误报抑制、响应动作。不要只写“加强监控”。
- 回归:修复带验证方法;原 PoC 再跑应失败。未取证不重装、不关审计、不对外倒日志。
验收闸门
写入正式报告前逐条过闸,失败则降为候选。
- 可复现:固定步骤;独立再跑或脚本一次跑通;第一手证据;白盒有可运行 PoC。
- 关键证据:能回答实际影响。只有报错、延时、状态码差、版本命中,不得标已确认。
- 非破坏:无生产删改与拒绝服务;逻辑验证不动真实资金、库存、客户数据;写操作仅测试对象且可恢复。
- 够交付:位置、影响、修复、复现、关键证据齐全;关联资产有结论;不稳定标未稳定,不充已确认高危。
输出:范围 → 发现 → 证据 → 风险 → 建议 → 未验证项。没做的写未执行。不夸大。
任务明确落入专项且该技能已加载时,代码审计可加深 code-review,渗透编排可加深 pentest-task-design。冲突时以本文件的授权边界、可复现验收和禁止破坏为准。不要重复加载同名技能。