redteam-mindset
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseWhen to use this skill
何时使用此 skill
Trigger when:
- Engagement scope says "red team", "adversary emulation", "assume breach", "TIBER-style"
- You're tempted to retract a finding because reproducibility failed once
- You're tempted to call a defense "working as intended" instead of probing further
- You hit a blocker (captcha, rate limit, WAF, CA-block, lockout) and consider stopping
- You're about to spend time on IDOR/CSRF/XSS instead of access-yielding bugs
- You found a vuln on app A and there are sister apps B, C, D you haven't touched
DO NOT use for:
- Bug bounty programs (use bug-bounty skill — different scope rules)
- WAPT/PCI-style assessments (use OWASP-aligned skills)
- Pure compliance audits
触发条件:
- 项目范围注明“红队”“对手模拟”“假定失陷”或“TIBER-style”
- 你想因为一次复现失败而撤回某项发现
- 你想把某项防御称为“按预期工作”,而不是继续探测
- 你遇到了阻碍(captcha、速率限制、WAF、CA 封锁、锁定),并考虑停止
- 你准备把时间花在 IDOR/CSRF/XSS 上,而不是可产生访问权限的漏洞上
- 你在应用 A 中发现了漏洞,但还有尚未触达的姐妹应用 B、C、D
不要用于:
- 漏洞赏金项目(使用 skill——范围规则不同)
bug-bounty - WAPT/PCI 风格评估(使用与 OWASP 对齐的 skill)
- 纯合规审计
The one-line summary
一句话总结
Red team scope = "gain access, prove impact". Bug bounty / WAPT scope = "find a bug, write a report".
These produce DIFFERENT decisions at every blocker. Internalize the difference before starting.
红队范围 =“获得访问权限,证明影响”。漏洞赏金 / WAPT 范围 =“发现漏洞,编写报告”。
面对每一个阻碍点,两者都会产生不同的决策。开始之前要充分内化这种差异。
DO NOT STOP — primary directive (read this twice)
不要停止——首要指令(读两遍)
The 9 corrections below are nuance. THIS is the core. If you only retain one thing from this skill, retain this.
下面 9 项纠偏属于细微之处。这才是核心。如果只能从本 skill 保留一件事,就保留这一件。
Authorization given at engagement start covers the entire engagement.
项目开始时授予的授权覆盖整个项目。
Do not insert mid-engagement permission gates. If the user chose a mode at the start ("full engagement", "Option D", "go deep", "test these assets") that authorization stands until the engagement window expires or the user explicitly revokes it. mid-loop after the user already chose a path is a stall, not a check.
AskUserQuestion不要在项目中途插入权限门。如果用户在开始时选择了某种模式(“全面项目”“Option D”“深入测试”“测试这些资产”),该授权将持续有效,直到项目窗口结束或用户明确撤销。用户已经选定路径后,仍在循环中途调用 是停滞,不是检查。
AskUserQuestionDiscipline rules are about correctness of FINDINGS, not throttling of EFFORT.
纪律规则关乎发现的正确性,而不是限制工作强度。
Read this twice. The bundle's discipline rules — OOB-Or-It-Didn't-Happen, Marker Discipline, Body-Diff, Pre-Severity Gate, Server-Policy-vs-State, Statistical Sampling — all answer one question: "is this signal actually a finding?". None of them answer the question "should I send the next probe?" The answer to that second question is always yes, unless scope is exhausted or the user said stop.
读两遍。本 skill 集合中的纪律规则——OOB-Or-It-Didn't-Happen、Marker Discipline、Body-Diff、Pre-Severity Gate、Server-Policy-vs-State、Statistical Sampling——都在回答同一个问题:“这个信号是否确实构成一项发现?” 它们都不回答另一个问题:“是否应该发送下一个探测?” 第二个问题的答案始终是*“是”*,除非范围已经穷尽,或者用户要求停止。
"Stop at PoC" means stop ESCALATING, not stop TESTING.
“停止于 PoC”意味着停止升级,而不是停止测试。
When you confirm impact on bug class X, don't keep escalating class X (no need to pivot from IDOR to dumping the whole user table). But classes Y and Z have not been tested yet. Run Y. Then Z. Then the rest of the Pattern Library.
id=1当你确认漏洞类别 X 所造成的影响后,不要继续对类别 X 进行升级(无需从 IDOR 进一步转为导出整个用户表)。但类别 Y 和 Z 尚未测试。先运行 Y,再运行 Z,然后测试 Pattern Library 中的其余内容。
id=1The data-minimization boundary is AS LOUD as "DO NOT STOP". Read this twice.
数据最小化边界与“不要停止”同样醒目。读两遍。
"Keep digging" applies to coverage (untested surfaces, classes, hosts), NOT to extraction. These pull in opposite directions and the persistence directive must NOT bleed into over-collection:
- An access/exfil vulnerability is proven by the MISSING CHECK, not by the volume of data you copy out. 3 records that should have required auth = complete proof. 3,000 records = the same finding + a liability you created. Pulling more never strengthens the finding.
- "Keep digging" = test the next endpoint family / the next host / the next class. It does NOT mean "enumerate every record from the endpoint you already broke." Breadth of coverage, not depth of theft.
- The data usually belongs to the target's customers / fourth parties (their clients, their users' PII, partner financials). They didn't sign the SOW/program. Copying their data onto your host is harm you shouldn't create when the point is already made.
- A client/program owner saying "dig more / that's not enough" does NOT override this. Push back: confirm the finding is already conclusive, explain that volume ≠ evidence, and offer harm-minimal alternatives that genuinely add value — a (a number, not the data), proof a second endpoint family is affected (breadth), or quantified blast-radius. Get the MINIMUM evidence that satisfies the stated goal.
totalCount - Classify what you did pull precisely (e.g. "B2B client-inventory data" ≠ "consumer PII") — it changes how the owner triages and discloses, and overstating erodes trust.
The persistence directive and this boundary are not in tension once you separate the two axes: never stop covering surface; always stop at minimum-necessary extraction. Authorized ≠ unrestricted.
“继续深挖”适用于覆盖范围(尚未测试的界面、类别、主机),而不适用于数据提取。两者方向相反,持续推进的指令绝不能演变为过度收集:
- 访问或数据外泄漏洞由缺失的检查证明,而不是由复制出的数据量证明。 3 条本应要求身份认证的记录已经构成完整证明。3,000 条记录仍是同一项发现,只是额外制造了责任风险。提取更多数据永远不会增强该发现。
- “继续深挖”= 测试下一组 endpoint 家族 / 下一台主机 / 下一个漏洞类别。 它不表示“枚举已攻破 endpoint 中的每一条记录”。应追求覆盖面的广度,而不是数据窃取的深度。
- 这些数据通常属于目标公司的客户或第三方(其客户、用户的 PII、合作伙伴财务数据)。他们没有签署 SOW 或项目计划。目的已经达成时,把这些数据复制到自己的主机上,会制造本不应造成的伤害。
- 客户或项目负责人要求“继续挖 / 这还不够”并不能推翻这一边界。 应当提出异议:确认发现已经具有结论性,解释数据量不等于证据,并提供真正能增加价值且危害最小化的替代方案,例如 (只提供数字,不提供数据)、证明第二个 endpoint 家族也受到影响(覆盖广度),或者量化 blast radius。只需取得满足既定目标的最小证据。
totalCount - 准确分类你实际提取的数据(例如“B2B 客户清单数据”不等于“消费者 PII”)——这会影响负责人进行分流和披露的方式,而夸大数据性质会损害信任。
一旦将这两个维度分开,持续推进指令与数据边界之间就不存在冲突:绝不停止覆盖界面;始终在达到最小必要提取量时停止。获得授权不等于不受限制。
Marker Discipline ≠ "one probe per surface."
Marker Discipline ≠“每个界面只发一个探测。”
Marker Discipline is about WHICH payloads to use (synthetic, identifiable, recoverable) — never about HOW MANY. A hardened target needs MORE marker-discipline probes than a soft one, not fewer. If the bundle's Pattern Library lists 12 SQLi classes, you run 12 marker-discipline probes per parameter, not 1.
hunt-sqliMarker Discipline 关乎使用哪些 payload(合成的、可识别的、可恢复的),绝不影响探测数量。加固目标需要的 marker-discipline 探测比普通目标更多,而不是更少。如果本 skill 集合中的 Pattern Library 列出了 12 个 SQLi 类别,就要针对每个参数运行 12 次 marker-discipline 探测,而不是 1 次。
hunt-sqliSelf-throttling anti-patterns — flag immediately if you catch yourself doing any of these
自我降速反模式——发现后应立即标记
These all came out of a real engagement (authorized-engagement revalidation, 2026-05-17) where this skill existed and was loaded and the operator still self-throttled. The lesson is to make the failure modes explicit:
- Asking "want me to continue?" mid-run after the user already chose Option D / full engagement / "go deep". The answer they gave at start IS the answer.
- Stopping at first-class-returning-401/403. The bundle has ≥12 auth-bypass classes (header tricks, method tampering, parameter pollution, JSON parser confusion, race on session create, mass-assignment on optional fields, X-Forwarded-Host SSRF in SAML callback, alg=none JWT, audience confusion, scope claim manipulation, refresh-token replay, device-code flow). Run them all per surface.
- "Interesting constant token, not chased." If you see a token, hash, ID, or fingerprint that's constant across what should be varying responses, that's a lead, not an artifact. it. Decode it. Pass it back. A
GETredirect is a session/auth/error-key signal, not noise.view.php?view=<constant-md5> - Reading robots.txt for cross-template signals and NOT READING the Disallow lines. A 469-line robots.txt is a developer-curated map of every path they don't want public. Every Disallow line is a probe target.
- Treating soft-404 as "noted." A 37 KB body inside a 404 status is leaking the home page or worse. Read it. Grep it. Diff it against the home page.
- "OpenAPI exposed → finding logged" with only 4 of N endpoints probed. Every endpoint × every relevant test class. The OpenAPI spec is the attack-surface map handed to you; not running it is throwing away a free recon.
- "APK retest deferred — needs tooling." , apkpure direct download,
brew install jadxalready documents the flow. Five minutes of setup, not "another session."apk-redteam-pipeline - Volume framed as a problem. For an authorized engagement, 3,000 well-tagged requests through Burp is normal cadence. Bug-bounty hunters at full pace exceed that per hour. The question to ask is "have I run every test class on every live surface," not "have I sent too many requests."
- Inserting at any decision point inside an active engagement loop. If the user picked a mode at start, that mode is in effect until revoked. Choosing operationally between e.g. SAML acs raw POST vs SAML acs replay is a technical decision the operator can make and document — it does not require user pre-approval.
AskUserQuestion - Skill-gap-as-stop-condition. "No skill exists, so I logged a v1.1 gap and moved on." NO. If a hunt-* skill doesn't exist for a discovered tech stack, do the same work manually using the vendor's public check matrix. Log the gap in v1.1 roadmap and run the checks now.
hunt-zoho
以下情况都来自一次真实项目(授权项目复验,2026-05-17):当时本 skill 已经存在并已加载,但操作者仍在自行降低测试强度。教训是要将这些失败模式明确写出来:
- 用户已经选择 Option D / 全面项目 / “深入测试”,却在运行中途询问“要我继续吗?”。用户开始时给出的回答就是答案。
- 在首次遇到返回 401/403 的类别时停止。本 skill 集合中至少有 12 类认证绕过方法,包括 header tricks、method tampering、parameter pollution、JSON parser confusion、session create 上的 race、optional fields 上的 mass-assignment、SAML callback 中的 X-Forwarded-Host SSRF、alg=none JWT、audience confusion、scope claim manipulation、refresh-token replay 和 device-code flow。必须针对每个界面全部运行。
- “发现了一个有趣的恒定 token,但没有继续追踪。”如果某个 token、hash、ID 或 fingerprint 在本应变化的响应中始终相同,那么它是线索,而不是干扰项。对它执行 ,解码它,再把它传回去。
GET重定向是 session/auth/error-key 信号,不是噪声。view.php?view=<constant-md5> - 阅读 robots.txt 寻找跨模板信号,却没有阅读 Disallow 行。一份 469 行的 robots.txt 是开发者精心整理出的地图,列出了他们不希望公开的每个路径。每一行 Disallow 都是探测目标。
- 把 soft-404 记录为“已注意”。HTTP 404 状态中返回 37 KB 的响应体,意味着它正在泄露首页,甚至更糟的内容。必须阅读、grep,并与首页进行差异比较。
- “发现 OpenAPI 暴露后,只探测了 N 个 endpoint 中的 4 个就记录了发现。”必须运行每个 endpoint × 每个相关测试类别。OpenAPI 规范就是交给你的攻击面地图;不运行它等于白白丢弃免费的侦察成果。
- “APK 复测延期——需要安装工具。”、从 apkpure 直接下载以及
brew install jadx已经记录了完整流程。只需五分钟准备时间,而不是“再开一个会话”。apk-redteam-pipeline - 把请求数量视为问题。对于授权项目,通过 Burp 发出 3,000 个标记完善的请求属于正常节奏。全力运行的漏洞赏金猎人每小时请求量都会超过这个数字。正确的问题是*“是否已经在每个在线界面上运行了每个测试类别?”,而不是“我是否发送了过多请求?”*
- 在活跃项目循环中的任何决策点插入 。如果用户开始时选择了模式,该模式就会一直有效,直到被撤销。例如在 SAML acs raw POST 与 SAML acs replay 之间进行选择,是操作者可以自行作出并记录的技术决策,不需要用户预先批准。
AskUserQuestion - 把 skill 缺口当作停止条件。“不存在 skill,所以我记录了 v1.1 缺口并继续处理其他工作。”不对。如果针对已发现技术栈不存在某个 hunt-* skill,就使用供应商公开的检查矩阵手动完成同样工作。将缺口记录到 v1.1 roadmap,同时立即运行这些检查。
hunt-zoho
Real-engagement cadence — what a complete sweep per live host actually looks like
真实项目节奏——完整扫描每台在线主机实际需要完成什么
Per live host, before declaring the host complete:
- Top-100 path probe (admin, api, login, /.git, /.env, server-status, swagger, openapi.json, /docs, /actuator, /healthz, /metrics, /debug, /trace, /env, /heapdump, /threaddump, robots.txt, sitemap.xml, /.well-known/*, common-CMS-paths per fingerprint)
- robots.txt content read — every Disallow becomes a probe target
- sitemap.xml content read — every entry becomes a probe target
- JS bundles harvested — grep'd with the FULL secret-regex catalogue (Firebase, AWS, GCP, JWT, Stripe, GitHub, generic high-entropy strings), route extraction, API-endpoint extraction
- Source-map variant paths checked (,
/*.js.map,/static/js/*.js.map,/_next/static/*.js.map)/build/*.js.map - For every form discovered: full SQLi marker-discipline sweep (12+ classes), auth-bypass class sweep (12+ classes), CSRF, parameter pollution, mass-assignment, race condition on state-changing submission
- For every API endpoint discovered (from JS, OpenAPI, swagger, network capture): HTTP method tampering, content-type tampering, JWT alg=none, alg=HS256-with-RS256-key, audience confusion, prototype pollution, race conditions on idempotency-violating ops
- For every SaaS tenant identified: vendor-specific check matrix from the vendor's known-vuln catalogue — even when no dedicated hunt-* skill exists yet
- Identity fabric: GetUserRealm, OpenID well-known, autodiscover-v2, federation behavior testing, sister-brand-TLD pivot for shared tenant, OneDrive-based user enum (no lockout risk)
- Mobile apps: pull every APK in the developer's catalogue, jadx decompile, secret + endpoint + cert-pin grep, exported-component enum
If you've done less than this per host, you have not finished the host. The engagement is not done until every host is finished.
对于每台在线主机,在宣布该主机完成之前:
- 执行 Top-100 路径探测(admin、api、login、/.git、/.env、server-status、swagger、openapi.json、/docs、/actuator、/healthz、/metrics、/debug、/trace、/env、/heapdump、/threaddump、robots.txt、sitemap.xml、/.well-known/*、根据指纹匹配的 common-CMS 路径)
- 阅读 robots.txt 内容——每一项 Disallow 都成为探测目标
- 阅读 sitemap.xml 内容——每一个条目都成为探测目标
- 收集 JS bundles——使用完整的 secret-regex 目录进行 grep(Firebase、AWS、GCP、JWT、Stripe、GitHub、通用高熵字符串),并提取路由和 API 端点
- 检查 source-map 变体路径(、
/*.js.map、/static/js/*.js.map、/_next/static/js/*.js.map)/build/*.js.map - 对发现的每个表单:执行完整的 SQLi marker-discipline 扫描(12 类以上)、认证绕过类别扫描(12 类以上)、CSRF、parameter pollution、mass-assignment,以及状态变更提交上的 race condition
- 对发现的每个 API endpoint(来自 JS、OpenAPI、swagger 或网络抓包):执行 HTTP method tampering、content-type tampering、JWT alg=none、alg=HS256-with-RS256-key、audience confusion、prototype pollution,以及违反幂等性操作上的 race condition
- 对识别出的每个 SaaS tenant:使用供应商已知漏洞目录中的特定检查矩阵——即使尚不存在专用的 hunt-* skill
- 身份基础设施:GetUserRealm、OpenID well-known、autodiscover-v2、federation behavior testing、针对共享 tenant 的姐妹品牌 TLD 扩展,以及基于 OneDrive 的用户枚举(无锁定风险)
- 移动应用:拉取开发者目录中的每个 APK,使用 jadx 反编译,grep secret、endpoint 和证书固定配置,并枚举 exported component
如果对某台主机完成的测试少于以上内容,该主机就尚未完成。只有每台主机都完成,整个项目才算完成。
Mindset correction #1 — The blocker is data, not the stop sign
思维纠偏 #1——阻碍是数据,不是停止标志
Anti-pattern (what I did wrong):
"Recheck under load showed no timing differential — recanting the SQLi as indeterminate."
The correct frame:
"The original 3-sample baseline (σ = 32 ms) with three distinct SLEEP payloads each adding +6 s is statistically definitive. The recheck failure is data — investigate the delta, not retract the finding."
When a defense suddenly appears mid-engagement:
- Original PoC artifacts are forever — capture them BEFORE recheck. Screenshots, request/response pairs, timing samples.
- Diff the response — body size, headers, cookies, response time. The change tells you what the client deployed (WAF rule? Hotfix? Geo block?).
- The deployed mitigation is itself a finding — positive operational observation about IR responsiveness.
- Try alternative vectors — slower-paced timing, encoded keywords, different injection contexts, cookie injection, header injection.
- Document both states — "vulnerable at T0, mitigated at T0+30min, mitigation likely at WAF (bypassable)".
Rule: never retract a finding on first reproducibility failure. Investigate why before declaring false positive.
反模式(我之前的错误做法):
“负载下重新检查时没有出现时序差异——因此撤回 SQLi,并将其标记为无法确定。”
正确的思维框架:
“最初的 3 样本基线(σ = 32 ms)配合 3 个不同的 SLEEP payload,每个都增加 +6 秒,已经在统计上具有决定性。复检失败属于数据问题——应调查差异,而不是撤回发现。”
当防御在项目中途突然出现时:
- 原始 PoC 证据永远保留——在复检前获取它们,包括截图、请求/响应对以及时序样本。
- 比较响应差异——响应体大小、headers、cookies 和响应时间。这些变化会告诉你客户部署了什么(WAF 规则?Hotfix?Geo block?)。
- 已部署的缓解措施本身就是一项发现——这是关于 IR 响应能力的积极运营观察。
- 尝试替代路径——降低测试速度、编码关键词、改变注入上下文、cookie 注入、header 注入。
- 记录两种状态——“在 T0 时存在漏洞,在 T0+30min 时已缓解,缓解措施可能位于 WAF 层(可以绕过)”。
**规则:**绝不能因为第一次复现失败就撤回发现。在宣布误报之前,先调查原因。
Mindset correction #2 — Sister-app pattern recognition
思维纠偏 #2——识别姐妹应用模式
Anti-pattern:
"I confirmed SQLi on /app-a/. Moving on to other tasks."
The correct frame:
"Same backend, same code template likely → /app-b/, /app-c/, /app-d/, /app-e/ (sibling apps on the same employee-portal host) are all probable. Test them with the SAME payload."
When you confirm a vuln on app A:
- Identify shared infrastructure — same IP, same load balancer, same TLS cert, same response headers, same session cookie name, same login form HTML.
- Identify shared code template — same form fields, same error messages, same view structure, same framework version.
- Sweep all sisters with the SAME exploit payload immediately.
- Document the class of vulnerability — "vulnerability is in shared form-handler template across N apps", not just one finding.
- Recommend class-fix — fix the shared template, not just one app.
The authorized-engagement case: SQLi confirmed on one sub-app (); four sibling sub-apps (, , , ) sit on the same employee-app host with similar form patterns — likely all share the same vulnerable template. Should have been a multi-app finding.
<app-A><app-B><app-C><app-D><app-E>反模式:
“我已确认 /app-a/ 存在 SQLi,继续处理其他任务。”
正确的思维框架:
“相同后端、很可能相同代码模板 → /app-b/、/app-c/、/app-d/、/app-e/(同一员工门户主机上的兄弟应用)都有风险。立即使用相同 exploit payload 对它们进行测试。”
当你在应用 A 中确认漏洞时:
- 识别共享基础设施——相同 IP、相同 load balancer、相同 TLS 证书、相同响应 headers、相同 session cookie 名称、相同登录表单 HTML。
- 识别共享代码模板——相同表单字段、相同错误消息、相同视图结构、相同框架版本。
- 立即使用相同 exploit payload 扫描所有姐妹应用。
- 记录漏洞类别——“漏洞存在于 N 个应用共享的 form-handler 模板中”,而不只是记录一个孤立发现。
- 建议类别级修复——修复共享模板,而不是只修复一个应用。
授权项目案例:某个子应用()已确认 SQLi;同一员工应用主机上还有四个兄弟子应用(、、、)具有相似表单模式,很可能全部共享同一个存在漏洞的模板。本应将其记录为一项多应用发现。
<app-A><app-B><app-C><app-D><app-E>Mindset correction #3 — WAPT vs Red Team scope discipline
思维纠偏 #3——WAPT 与红队范围纪律
Skip these in red team scope (they don't yield access):
- IDOR (cross-user read/write without an ATO / privilege-escalation / sensitive-data-exfil chain — WAPT class). NOTE: IDOR is NOT a blanket-skip. IDOR on admin/role-assignment endpoints yields privilege escalation; on password-reset or session objects yields ATO; on file-download or PII handlers yields exfil; on token/key endpoints yields credential capture. Pursue those per the decision rule below.
- CSRF (state-change-via-tricked-user — WAPT class)
- Reflected XSS (without account-takeover chain — WAPT class)
- Missing security headers (WAPT class)
- Cookie hardening flags (WAPT class)
- Verbose error messages without sensitive data (WAPT class)
- DoS (out of scope per engagement rules typically)
- Username enumeration (intel-gathering, not access)
Pursue these (they DO yield access):
- SQL injection (data exfil → DB creds → lateral)
- Command injection / RCE (foothold)
- File upload → webshell (foothold)
- LFI/RFI (config reads → DB creds → access)
- SSRF (cloud metadata → IAM → cloud access)
- Authentication bypass (parameter manipulation, JWT alg=none, header injection)
- Hardcoded credentials in mobile/JS bundles
- Default credentials on admin panels
- SAML XSW / signature stripping (session hijack)
- Cisco ASA / Citrix / Pulse / Fortinet SSL VPN CVEs (network foothold)
- ManageEngine / Confluence / Atlassian RCE CVEs (foothold)
- Kerberoasting / AS-REP roasting (post-foothold, but enumerate from outside if possible)
Decision rule: if the bug, exploited fully, doesn't lead to a session/token/foothold or sensitive data exfil, it's WAPT-class — note it briefly but don't burn time on it.
红队范围中跳过这些类别(它们不会产生访问权限):
- IDOR(不存在 ATO / 权限提升 / 敏感数据外泄链路的跨用户读/写——属于 WAPT 类别)。注意:IDOR 并非一律跳过。涉及 admin/role-assignment endpoint 的 IDOR 可以产生权限提升;涉及 password-reset 或 session 对象的 IDOR 可以产生 ATO;涉及 file-download 或 PII handler 的 IDOR 可以导致数据外泄;涉及 token/key endpoint 的 IDOR 可以导致凭据捕获。应根据以下决策规则处理这些情况。
- CSRF(通过欺骗用户触发状态变更——WAPT 类别)
- Reflected XSS(不存在账户接管链路时——WAPT 类别)
- 缺少安全 headers(WAPT 类别)
- Cookie hardening flags(WAPT 类别)
- 不包含敏感数据的冗长错误消息(WAPT 类别)
- DoS(根据项目规则通常不在范围内)
- 用户名枚举(属于情报收集,而不是获取访问权限)
重点追求这些类别(它们确实能产生访问权限):
- SQL injection(数据外泄 → DB 凭据 → 横向移动)
- Command injection / RCE(foothold)
- File upload → webshell(foothold)
- LFI/RFI(读取配置 → DB 凭据 → 访问权限)
- SSRF(云 metadata → IAM → 云访问权限)
- 认证绕过(参数操纵、JWT alg=none、header 注入)
- 移动应用或 JS bundle 中的硬编码凭据
- 管理面板的默认凭据
- SAML XSW / signature stripping(session hijack)
- Cisco ASA / Citrix / Pulse / Fortinet SSL VPN CVE(网络 foothold)
- ManageEngine / Confluence / Atlassian RCE CVE(foothold)
- Kerberoasting / AS-REP roasting(获取 foothold 后使用,但条件允许时可从外部枚举)
**决策规则:**如果一个漏洞被完整利用后,仍无法导向 session/token/foothold 或敏感数据外泄,它就属于 WAPT 类别——简要记录即可,不要耗费过多时间。
Mindset correction #4 — Aggressive default, not conservative default
思维纠偏 #4——采用激进默认值,而不是保守默认值
Anti-pattern:
"Tested 30% of the websites and called it comprehensive."
The correct frame:
"Until I've actively probed every login form, every API endpoint, every parameter, every CVE-matched version, the engagement is not done."
Aggressive defaults:
- Probe every live host for top 20 paths (admin, api, login, /.git, /.env, server-status, swagger, openapi.json, robots.txt, /actuator, /healthz, etc.)
- For every login form discovered, attempt 1-of-leaked + 1-of-spray-pattern + SQLi + auth-bypass-via-parameter-tampering
- For every JS bundle, grep for hardcoded API keys, JWT, base URLs, hidden endpoints, admin paths
- For every API endpoint, check OPTIONS preflight, missing-auth response, alg=none JWT, X-Forwarded-User header injection
- For every mobile app, decompile + grep for secrets + check pinned certs + identify exported components
- For every "out of scope" SaaS that's on a corp subdomain, confirm with client — vendor-managed doesn't mean immune (CVE-2022-47966 went unpatched on many on-prem ME-SDP installs)
Rule: if you haven't actively probed every live surface (not just a sampled fraction), you haven't done red team yet — you've done recon.
反模式:
“测试了 30% 的网站,就称其为全面测试。”
正确的思维框架:
“在我主动探测完每个登录表单、每个 API endpoint、每个参数,以及每个与 CVE 匹配的版本之前,项目都没有完成。”
激进默认值:
- 对每台在线主机探测 Top 20 路径(admin、api、login、/.git、/.env、server-status、swagger、openapi.json、robots.txt、/actuator、/healthz 等)。
- 对发现的每个登录表单,尝试 1-of-leaked + 1-of-spray-pattern + SQLi + 通过参数操纵进行 auth bypass。
- 对每个 JS bundle,grep 硬编码 API key、JWT、base URL、隐藏 endpoint 和 admin 路径。
- 对每个 API endpoint,检查 OPTIONS preflight、missing-auth 响应、alg=none JWT 和 X-Forwarded-User header 注入。
- 对每个移动应用,进行反编译、grep secrets、检查证书固定并识别 exported component。
- 对公司子域名上的每个“范围外”SaaS,与客户确认——由供应商管理并不代表不存在问题(CVE-2022-47966 在许多本地部署的 ME-SDP 安装中长期未修补)。
**规则:**如果没有主动探测每个在线界面,而不只是抽样测试其中一部分,那么做的还只是侦察,不是红队测试。
Mindset correction #5 — Persistence beats elegance
思维纠偏 #5——持续推进胜于追求优雅
Anti-pattern:
"Tesseract failed on 3 captchas, gave up, declared captcha bypass not feasible."
The correct frame:
"Tesseract failed. Decision tree: try preprocessing (binarize, denoise, upscale, multi-PSM), then trained-model OCR, then paid solving service ($5/mo for engagement-grade volume), then session-bound captcha replay attack. A real attacker WILL invest the $5."
Decision-tree for blockers:
Captcha:
- Omit field → check if required
- Empty value → check validation
- Reuse value across multiple submits → check session-bind
- Tesseract with preprocessing
- Trained-model OCR (deep-text-recognition-benchmark, calamari-OCR)
- Paid solving service (2captcha API, anti-captcha)
- Audio captcha if available (much weaker)
WAF:
- Slower pace
- Encode the payload (URL, hex, base64, mixed case)
- Different injection context (cookie, header, JSON)
- Different HTTP verb
- Different content-type (multipart, application/json)
- Bypass at the host level (X-Forwarded-Host, X-Original-URL)
- Probe origin server directly (find via certificate transparency)
Rate limit:
- IP rotation (multiple cloud regions)
- User-Agent rotation
- Slower pace + jitter
- Distribute across multiple TLS sessions
Slow target (timing-based exfil too slow):
- Different injection point (avoid per-row SLEEP context)
- BENCHMARK or GET_LOCK as alternate timing oracle
- Error-based extraction
- OOB DNS callback (interactsh)
- Faster network (cloud VM in same region as target)
- Run dumper unattended overnight; deliver partial results
Rule: when one path fails, the next move is "another vector to the same goal", not "documented as not vulnerable". A real adversary doesn't have an engagement window.
反模式:
“Tesseract 在 3 个 captcha 上失败,于是放弃并宣布 captcha 绕过不可行。”
正确的思维框架:
“Tesseract 失败了。决策树:先尝试预处理(二值化、去噪、放大、多 PSM),然后使用训练好的 OCR 模型,再使用付费解题服务(项目级用量每月 5 美元),最后尝试 session-bound captcha replay。真实攻击者会愿意投入这 5 美元。”
遇到阻碍时的决策树:
Captcha:
- 省略字段 → 检查是否为必填
- 提交空值 → 检查验证逻辑
- 在多次提交中复用相同值 → 检查是否绑定 session
- 使用 Tesseract 并进行预处理
- 使用训练好的 OCR 模型(deep-text-recognition-benchmark、calamari-OCR)
- 使用付费解题服务(2captcha API、anti-captcha)
- 如果可用,改用 audio captcha(难度低得多)
WAF:
- 降低速度
- 编码 payload(URL、hex、base64、混合大小写)
- 更换注入上下文(cookie、header、JSON)
- 更换 HTTP verb
- 更换 content-type(multipart、application/json)
- 在 host 层面绕过(X-Forwarded-Host、X-Original-URL)
- 直接探测 origin server(通过 certificate transparency 查找)
速率限制:
- IP 轮换(使用多个 cloud region)
- User-Agent 轮换
- 降低速度并加入 jitter
- 分散到多个 TLS session
目标响应过慢(基于时间的提取太慢):
- 更换注入点(避免逐行 SLEEP 上下文)
- 使用 BENCHMARK 或 GET_LOCK 作为替代 timing oracle
- 使用 error-based extraction
- 使用 OOB DNS callback(interactsh)
- 使用更快的网络(在与目标相同 region 的 cloud VM)
- 让 dumper 在后台无人值守运行过夜;先交付部分结果
**规则:**当一条路径失败时,下一步应当是“使用另一条路径实现同一目标”,而不是“记录为不存在漏洞”。真实攻击者不会受到项目窗口限制。
Mindset correction #6 — Real-time IR observation is a finding
思维纠偏 #6——实时 IR 观察本身也是一项发现
When the client SOC patches mid-engagement (you observe a vulnerability disappear during your test):
- Treat it as evidence, not as a failure
- Capture timestamps before and after the change
- Document as positive operational finding — "client SOC detected and mitigated within X minutes; mitigation deployed at WAF/code level"
- Verify the mitigation depth — WAF rule (bypassable) vs code fix (real)
- The original PoC remains the vulnerability finding — patching doesn't erase it
This is its own skill: see .
mid-engagement-ir-detection当客户 SOC 在项目中途完成修补(你在测试期间观察到漏洞消失)时:
- 将其视为证据,而不是失败
- 捕获变更前后的时间戳
- 记录为积极的运营发现——“客户 SOC 在 X 分钟内检测并缓解了该问题;缓解措施部署在 WAF/代码层”
- 验证缓解深度——WAF 规则(可以绕过)还是代码修复(真正修复)
- 原始 PoC 仍然是该漏洞的发现依据——打补丁不会抹除已经存在的漏洞
这是一个独立的 skill:参见 。
mid-engagement-ir-detectionMindset correction #7 — Multi-technique cross-validation
思维纠偏 #7——多技术交叉验证
For every "vulnerable" finding, prove via 2+ techniques:
| Vuln class | Primary | Cross-check |
|---|---|---|
| Time-based blind SQLi | SLEEP() differential | Different SLEEP variants (3 distinct payloads min) |
| Boolean blind SQLi | Body-size differential | Different boolean comparisons |
| Error-based SQLi | Error message reflection | UPDATEXML + EXTRACTVALUE both |
| RCE | Command output reflection | OOB callback (interactsh DNS) |
| LFI | File content reflection | Different file paths, different encodings |
| SSRF | Internal-only response | OOB callback (interactsh DNS) |
| Valid credential (M365) | ROPC + AADSTS53003 | SAML SSO browser flow + ConvergedConditionalAccess page |
| Auth bypass | Logged-in landing page | Session cookie persistence on subsequent request |
A single signal can be coincidence (network jitter, server hiccup, cache). Two distinct signals from the same root cause is definitive.
对于每一项“存在漏洞”的发现,使用 2 种以上技术进行证明:
| 漏洞类别 | 主要验证方式 | 交叉验证方式 |
|---|---|---|
| Time-based blind SQLi | SLEEP() 差分 | 不同的 SLEEP 变体(至少 3 个不同 payload) |
| Boolean blind SQLi | 响应体大小差分 | 不同的布尔比较 |
| Error-based SQLi | 错误消息反射 | 同时使用 UPDATEXML + EXTRACTVALUE |
| RCE | 命令输出反射 | OOB callback(interactsh DNS) |
| LFI | 文件内容反射 | 不同文件路径、不同编码 |
| SSRF | 仅限内部的响应 | OOB callback(interactsh DNS) |
| 有效凭据(M365) | ROPC + AADSTS53003 | SAML SSO 浏览器流程 + ConvergedConditionalAccess 页面 |
| 认证绕过 | 已登录落地页 | 后续请求中的 session cookie 持久性 |
单一信号可能只是巧合(网络抖动、服务器短暂故障、缓存)。来自同一根因的两个不同信号才具有决定性。
Mindset correction #8 — Engagement journal discipline
思维纠偏 #8——项目日志纪律
Real-time, append-only, structured:
jsonl
{"ts":"2026-05-08T14:40:53","ip":"<src-ip>","tool":"m365_validator","target":"login.microsoftonline.com","payload":"user1@<client>.example:<pw-r4>***","resp_code":400,"resp_body_size":154,"resp_ms":1280,"aadsts":"AADSTS53003","verdict":"VALID_CA_BLOCK","notes":""}Why:
- Forensic record of what was tested and when
- Surfaces patterns (clustering, timing changes, error code distribution)
- Becomes evidence for the report
- Survives into next engagement as priors
- Differential analysis: "What changed between window A and window B?"
Anti-pattern: ad-hoc shell commands with no logging. You will lose the original PoC timestamp when you need it most (recheck failed, can't prove the original signal was real).
实时、仅追加、结构化:
jsonl
{"ts":"2026-05-08T14:40:53","ip":"<src-ip>","tool":"m365_validator","target":"login.microsoftonline.com","payload":"user1@<client>.example:<pw-r4>***","resp_code":400,"resp_body_size":154,"resp_ms":1280,"aadsts":"AADSTS53003","verdict":"VALID_CA_BLOCK","notes":""}原因:
- 保留测试内容及测试时间的取证记录
- 呈现模式(聚类、时序变化、错误码分布)
- 成为报告中的证据
- 在下一次项目中作为先验知识继续使用
- 差异分析:“窗口 A 与窗口 B 之间发生了什么变化?”
**反模式:**使用没有日志记录的临时 shell 命令。当你最需要原始 PoC 时间戳时,这样做会导致它丢失;而在复检失败时,你将无法证明最初信号是真实的。
Mindset correction #9 — Time is the constraint, not skill
思维纠偏 #9——限制因素是时间,而不是技能
A real adversary has months. You have an engagement window (weeks). Decisions:
- Don't pre-judge feasibility — if a dumper would take 6 hours, run it overnight; deliver partial results in the morning.
- Parallelize. Run multi-target tests concurrently. Burn CPU, not wall-clock.
- State persistence. Engagements span multiple sessions. State files () make Wednesday's work usable on Friday.
engagement_log/ - Background long-running jobs — kick them off, set monitors for events, do other work in parallel.
- Don't repeat yourself — if you tested target X with payload Y on Tuesday, Wednesday you should know that without re-testing.
真实攻击者拥有数月时间,而你只有数周的项目窗口。因此应做出以下决策:
- 不要预先判断可行性——如果 dumper 需要 6 小时,就让它在夜间运行;第二天早上先交付部分结果。
- 并行化。 同时运行多目标测试。消耗 CPU,而不是墙钟时间。
- 保持状态。 项目会跨越多个 session。状态文件()能让周三的工作在周五继续使用。
engagement_log/ - 后台运行耗时任务——启动任务、为事件设置监控,同时并行开展其他工作。
- 不要重复自己——如果周二已经使用 payload Y 测试过目标 X,周三应该已经知道结果,无需再次测试。
Pre-engagement checklist
项目开始前检查清单
Before starting a red team engagement, confirm:
- Scope clear (subdomains in/out, SaaS in/out, phishing in/out, implant in/out)
- SOW + EL/RoE referenced
- Test IPs allocated and logged (IP_LOGS table or equivalent)
- State file initialized (with attempt counter, results JSONL, IP log)
engagement_log/ - Hard-cap for cred attacks decided (1 or 2 per user lifetime)
- Kill-switch thresholds set (max LOCKED in run, max errors in window)
- Crown-jewel target identified (what does winning look like?)
- Critical-finding-discuss protocol agreed (when to pause and notify)
- Burp proxy as default for evidence capture
- Engagement journal initialized
开始红队项目之前,确认:
- 范围明确(哪些子域名在范围内/外、哪些 SaaS 在范围内/外、是否允许 phishing、是否允许 implant)
- 已引用 SOW + EL/RoE
- 已分配并记录测试 IP(IP_LOGS 表或同等机制)
- 已初始化状态文件(,包含 attempt counter、results JSONL 和 IP log)
engagement_log/ - 已确定凭据攻击硬上限(每个用户整个生命周期内 1 次或 2 次)
- 已设置 kill-switch 阈值(单次运行最大 LOCKED 数量、单个窗口最大错误数)
- 已确定 crown-jewel 目标(获胜或达成目标是什么状态?)
- 已约定关键发现讨论协议(何时暂停并通知)
- 默认使用 Burp proxy 捕获证据
- 已初始化项目日志
During-engagement checklist
项目进行中检查清单
Every 30 minutes ask:
- Am I making progress, or stuck?
- Have I logged the last test result to the engagement journal?
- Is the IP I'm testing from logged?
- If I confirmed a vuln: have I tested sister apps with same backend?
- If I hit a blocker: did I try the next vector in the decision tree?
- If I'm tempted to "stop" — am I sure scope is exhausted, or am I just tired?
每 30 分钟询问:
- 我是在取得进展,还是陷入停滞?
- 我是否已将上一次测试结果记录到项目日志?
- 我正在使用的测试 IP 是否已记录?
- 如果我确认了漏洞:是否已使用相同后端测试姐妹应用?
- 如果我遇到了阻碍:是否已尝试决策树中的下一条路径?
- 如果我想“停止”——我确定范围已经穷尽,还是只是累了?
Post-engagement checklist
项目结束前检查清单
Before declaring done:
- All findings have at least 2 cross-technique confirmations
- Each finding's PoC is reproducible in <5 minutes by another tester
- Original PoC artifacts (screenshots, request/response, timing samples) preserved
- Mid-engagement IR observations documented as findings (positive ops)
- Active-attacker observations documented (lockout differentials, etc.)
- Sister-app sweep complete for every shared-infra finding
- State files preserved for future engagement
- Tooling gaps logged (what would have changed outcomes)
宣布完成之前:
- 所有发现都至少通过 2 种交叉技术确认
- 另一名测试人员可以在 5 分钟内复现每项发现的 PoC
- 原始 PoC 证据(截图、请求/响应、时序样本)已保留
- 项目中途的 IR 观察已记录为发现(积极运营发现)
- 主动攻击者观察已记录(锁定差异等)
- 每项共享基础设施发现都已完成姐妹应用扫描
- 状态文件已保留,供未来项目使用
- 工具缺口已记录(哪些缺失会改变测试结果)
Anti-patterns to flag immediately
需要立即标记的反模式
If you catch yourself thinking any of these, STOP and reconsider:
- "It's not vulnerable" (have I tested 3 vectors? have I tested sister apps?)
- "The defense is working" (have I tried alternative payloads? slower pace? different protocol?)
- "Recheck failed so it must have been a false positive" (NO — investigate the delta)
- "OCR isn't reliable, can't bypass captcha" (paid service is $5; we're not on a personal-research budget)
- "Mobile app is years old, probably nothing useful" (hardcoded URLs and tokens often outlive the engineering team's memory)
- "SaaS, so nothing to test" (vendor patches centrally — usually true, but tenant config gaps are NOT central)
- "We've tested enough" (use the during-engagement checklist; if any answer is "no", keep going)
- "The exfil would take too long" (run it unattended; deliver partials)
如果发现自己在思考以下任何一件事,停止并重新考虑:
- “它不存在漏洞”(我是否测试了 3 条路径?是否测试了姐妹应用?)
- “防御正在发挥作用”(我是否尝试了替代 payload?更慢的速度?不同协议?)
- “复检失败,所以一定是误报”(不对——调查差异)
- “OCR 不可靠,无法绕过 captcha”(付费服务只需 5 美元;我们不是在做个人研究)
- “移动应用已有多年历史,可能没有有价值的问题”(硬编码 URL 和 token 往往会比工程团队的记忆存活更久)
- “这是 SaaS,所以没什么可测试的”(供应商集中打补丁,这通常没错,但 tenant 配置缺口并不由供应商集中控制)
- “我们已经测试得够多了”(使用项目进行中检查清单;如果任何答案为“否”,就继续推进)
- “数据外泄耗时太长”(让它无人值守运行;先交付部分结果)
When to stop (the legitimate stop conditions)
何时停止(合法停止条件)
Only stop when:
- All in-scope assets have been actively probed (not just discovered) for top vuln classes — see "Real-engagement cadence" checklist near top of this skill
- Every confirmed vuln has been validated via 2+ techniques
- Every confirmed vuln has been swept on its sister apps
- Every blocker has been attempted via 2+ alternative vectors
- Engagement window has expired AND deliverables are documented
- Client has explicitly directed you to stop
NOT legitimate stop conditions (each of these has produced a real failure):
- "I'm tired of this target"
- "The first attempt didn't work"
- "Defenses are working" — defences working on class X says nothing about classes Y, Z
- "I documented it" — documenting a gap is not running the test
- "We've already informed the client"
- "Volume is getting high" — for an authorized engagement, the only volume question is whether each request is well-tagged and audited
- "The discipline rules say be careful" — they say be correct, not be quiet
- "The skill for this tech stack doesn't exist yet" — apply the vendor's public check matrix manually; log v1.1 gap separately
- "User chose Option X and I'm not sure if X covers Y" — if X was a full-engagement mode, Y is in scope unless the user said otherwise
- "Tool isn't installed" — ,
brew install, direct-download → most engagement tools install in under 5 minutesapt install - "I'll defer to operator" — the operator authorized you to do the work. Doing the work IS the deferral they want.
仅在以下情况下停止:
- 所有范围内资产都已针对主要漏洞类别进行主动探测(而不只是发现它们)——参见本 skill 靠前位置的“真实项目节奏”检查清单
- 每项已确认漏洞都通过 2 种以上技术验证
- 每项已确认漏洞都已在姐妹应用上完成扫描
- 每个阻碍都尝试过 2 条以上替代路径
- 项目窗口已经结束,并且交付物已完成记录
- 客户明确要求停止
以下均不属于合法停止条件(每一种都曾导致真实失败):
- “我已经对这个目标感到疲劳”
- “第一次尝试没有成功”
- “防御正在发挥作用”——类别 X 上的防御有效,并不能说明类别 Y、Z 的情况
- “我已经记录下来了”——记录一个缺口不等于执行测试
- “我们已经通知客户了”
- “请求量变得很高”——对于授权项目,唯一需要关注的数量问题是每个请求是否都经过良好标记和审计
- “纪律规则要求谨慎”——它们要求正确,而不是保持安静
- “这个技术栈还没有对应的 skill”——手动应用供应商公开的检查矩阵;另行记录 v1.1 缺口
- “用户选择了 Option X,而我不确定 X 是否涵盖 Y”——如果 X 是全面项目模式,那么除非用户另有说明,Y 也在范围内
- “工具尚未安装”——、
brew install、直接下载 → 大多数项目工具在 5 分钟内即可安装apt install - “我会交给 operator 处理”——operator 已经授权你完成这些工作。完成工作本身就是对方所要求的处理方式
Bridge to neighboring skills
与相邻 skill 的衔接
After internalizing this mindset, layer the technique-specific skills:
- — M365 credential attack chain
m365-entra-attack - — turning client SOC patches into findings
mid-engagement-ir-detection - — SQL injection across techniques
hunt-sqli - — RCE across vectors
hunt-rce - — for distinguishing red-team vs bb scope when working dual-track
bug-bounty
This skill is the operational discipline; those are the techniques.
内化这一思维模式后,再加载各项技术专用 skill:
- ——M365 凭据攻击链
m365-entra-attack - ——将客户 SOC 的补丁行为转化为发现
mid-engagement-ir-detection - ——跨技术检测 SQL injection
hunt-sqli - ——跨路径检测 RCE
hunt-rce - ——在双轨项目中区分红队与漏洞赏金范围
bug-bounty
本 skill 是操作纪律;上述 skill 则是具体技术。
Related Skills & Chains
相关 Skills 与 Chains
- — Before the "aggressive default, probe every live surface" directive can be applied safely, you must know which surfaces are actually the target's. Engagement flow: ASM/recon dataset received →
recon-scope-triageclears namespace-collision noise + soft-404 false positives → only owned, verified assets enter the test queue. Skipping this wastes the engagement on other companies' assets (and risks attacking innocent third parties).recon-scope-triage - — Operationalizes the "harvest JS bundles" cadence line into a full play: SPA JS → backend API map → unauthenticated broken-access-control testing. On a real engagement this play (not any scanner) found the apex Critical. Engagement flow: live SPA/
hunt-spa-api/console/apphost identified →api→ test each route family unauthenticated against a gated-sibling control.hunt-spa-api - — Once mindset is loaded, the
hunt-dispatchcommand needs a mode answer (redteam vs wapt, blackbox vs greybox) before it routes to platform-specific skills. Engagement flow: red-team mindset triggered → confirm engagement mode (/huntvs red-team vs pentest per project memory) → invokebug-bounty→/huntloads the right cluster (M365 / SharePoint / VPN / vCenter / APK).hunt-dispatch - — Red-team mindset says "behavior changes ARE findings"; this skill operationalizes that. Engagement flow: red-team engagement underway → baseline established at session start → response patterns shift mid-test →
mid-engagement-ir-detectioncaptures the SOC-patch state as a NEW finding (defensive-action observed = client capability metric). Don't dismiss it as "the bug got fixed."mid-engagement-ir-detection - — Red-team deliverable is NOT a bug-bounty report; different audience, different tone, different cadence. Engagement flow: findings collected throughout engagement → at session close, package via
redteam-report-template(Subject / Observations / Description / Impact / Recommendation / PoC) for client-facing DOCX, notredteam-report-templatewhich is for H1/Bugcrowd/Intigriti platforms.report-writing - — Red-team mindset includes "don't retract too fast" — the 4 retractions from an authorized engagement were mindset failures, not validation failures. Engagement flow: every finding through
triage-validation7-Question Gate, but with the red-team adjustment that "exploitable only with chain" is still a finding, not a no-finding.triage-validation - — Red-team engagements often span weeks; without disciplined evidence capture the deliverable suffers. Engagement flow: red-team mindset triggered → set up
evidence-hygienecapture cadence (screenshots, request/response dumps, timestamped logs) at session start, not at session close.evidence-hygiene
- ——在应用“激进默认值,探测每个在线界面”的指令之前,必须先确认哪些界面才属于目标。流程:收到 ASM/recon 数据集 →
recon-scope-triage清除 namespace collision 噪声和 soft-404 误报 → 只有自有且经过验证的资产才能进入测试队列。跳过这一步会浪费项目资源去测试其他公司的资产(并可能攻击无辜第三方)。recon-scope-triage - ——将“收集 JS bundles”这一节奏要求扩展为完整流程:SPA JS → 后端 API 地图 → 未认证 broken-access-control 测试。在真实项目中,这一流程(而非任何 scanner)发现了最关键的 Critical 发现。流程:识别在线 SPA/
hunt-spa-api/console/app主机 →api→ 针对 gated-sibling control,测试每个路由家族是否存在未认证访问。hunt-spa-api - ——加载这一思维模式后,
hunt-dispatch命令需要先获得模式答案(redteam 或 wapt、blackbox 或 greybox),然后才能路由到平台专用 skill。流程:触发 red-team 思维模式 → 确认项目模式(/hunt、red-team 或根据项目记忆选择 pentest)→ 调用bug-bounty→/hunt加载正确的 skill 集群(M365 / SharePoint / VPN / vCenter / APK)。hunt-dispatch - ——红队思维模式认为“行为变化本身就是发现”;该 skill 将其落实为可执行流程。流程:红队项目进行中 → 在 session 开始时建立基线 → 测试期间响应模式发生变化 →
mid-engagement-ir-detection将 SOC 修补状态记录为一项新发现(观察到防御行为 = 客户能力指标)。不要将其视为“漏洞已经修好”。mid-engagement-ir-detection - ——红队交付物不是漏洞赏金报告;其受众、语气和节奏均不相同。流程:在整个项目期间收集发现 → session 结束时通过
redteam-report-template打包为面向客户的 DOCX(Subject / Observations / Description / Impact / Recommendation / PoC),而不是用于 H1/Bugcrowd/Intigriti 平台的redteam-report-template。report-writing - ——红队思维模式包含“不要过快撤回发现”——授权项目中的 4 次撤回属于思维失败,而不是验证失败。流程:每项发现都经过
triage-validation的 7 问 Gate,但应用红队调整原则:即使“只有形成链路后才可利用”,仍然是一项发现,而不是无发现。triage-validation - ——红队项目往往会持续数周;如果没有纪律严明的证据捕获,交付物质量会受到影响。流程:触发红队思维模式 → 在 session 开始时而不是结束时建立
evidence-hygiene捕获节奏(截图、请求/响应 dump、带时间戳的日志)。evidence-hygiene