被动侦察与攻击面映射器 — 零请求发送
PenScope 是一个 Chrome 扩展。安装它,浏览一个你有权限测试的网站,它会静默地绘制出整个攻击面——每个端点、每个密钥、每个配置错误的标头、每个隐藏的参数。当你下达指令时,它会使用你的真实会话 cookie 发送 36 种不同的探测攻击,并报告哪些攻击命中。
或者你设置好范围,点击狩猎,PenScope 就会在你做其他事情时完全自主地完成整个过程——为它命中的每个严重和高危发现起草完整的 HackerOne 格式的漏洞报告。你醒来时会看到一列可提交的草稿。
它是漏洞赏金猎人的日常工具,他们希望跳过“设置代理、在三个窗口中点击、Alt-Tab 切换到 payload 列表”的例程,直接看一个网站。或者完全停止观察,让工具替你狩猎。
读取一切,不发送任何内容——直到你告诉它这么做。 设置范围,点击狩猎,合上笔记本电脑。醒来看到已起草的严重漏洞。
基于审计的 8 阶段重构。主要新增内容:
.env 赋值、Vault s./b. 前缀——以及 Spring Boot / Rails ActiveRecord / Django DEBUG / ASP.NET YSOD / Express / Apollo / MSSQL 响应体检测器。alg、iss、sub、aud、exp、iat、role、scope...)。当 exp 在未来且角色为管理员形状时,严重性会提升。Accessibility.getFullAXTree 会暴露敏感的 aria-label(admin/sudo/delete/destroy 按钮)。Storage.getCookies 会暴露 chrome.cookies.getAll 无法获取的 CHIPS 分区 cookie。<script type="application/json"> 块(Next 的 __NEXT_DATA__、Nuxt 的 __NUXT__、Remix 的 __remixContext、Apollo 的 __APOLLO_STATE__)会被解析为端点和 ID 字段,而不仅仅是正则扫描。curl 按钮、每行的 unauth 按钮(在不带 cookie 的情况下重放请求,并排显示结果)。路由表视图将 /users/123、/users/124 折叠为 /users/{id} 并显示计数。为 admin.*、api.*、internal.* 子域名提供自动透视栏。ffuf -w。window.__ps_ctx 不再将用户的 Authorization 标头泄漏到页面上下文中。链式重放命令默认会隐去会话 cookie(红色模式有一个可选开关用于实时值)。探测 IIFE 在启动时快照 fetch/JSON/Promise/atob/btoa/等,以防止受分析工具监测的页面通过覆盖全局变量拦截探测。本地字体嵌入——弹出窗口打开时零出站请求。"type":"module" 加载。src/ 目录树已就位;STACK_ATTACK_PACKS 已提取到 src/probe/stack-packs.js。其余模块是存根,记录了提取路径。完整的逐阶段详解请参见 CHANGES.md。迁移说明请参见 MIGRATION.md。
Pin 扩展。访问任意网站。点击 **P** 图标。PenScope 已在监控。
---
## 你能做什么
PenScope 为每个标签页捕获 60 多个数据字段。以下是实际应用场景:
**查看完整的攻击面。** 每个端点,包括在 JavaScript 中被引用但从未实际调用的端点。隐藏在源码映射中的 API 路径、从 POST 请求体重构的 GraphQL 操作、通过框架内省推断出的隐藏管理路由。
**发现本不应存在机密的泄露。** 硬编码在 `.js` 包中的 API 密钥。存储在 `localStorage` 中的 JWT。环境转储中的 AWS 凭证。响应体中的内部 ID。这类问题通常会出现在 P1 报告中。
**在浏览器中执行 36 种攻击步骤。** 认证绕过、BAC、IDOR、CORS 反射、JWT alg=none、SSTI、XXE、CRLF 注入、原型污染、参数发现、API 版本降级。三种攻击强度——谨慎、中等、全开。可粘贴自定义标头。隐身模式会打乱请求顺序,避免触发 WAF。
**将单个发现串联成实际漏洞利用。** 内存中的 JWT 是一个发现。同一 JWT 加上一个接受未签名令牌的 API 端点,再加上解码后的角色为 admin——这就是一个漏洞链,PenScope 会在报告顶部显示该链,包含置信度评分、复现命令和后续步骤。
**编辑并重发任意请求。** 右键点击风格。Repeater 在新标签页中打开,全窗口显示。修改参数,点击发送,查看响应。可拖入 Diff 功能与基线对比。
**使用插入点进行模糊测试。** 在请求的任意位置标记 `§payload§`,选择一个 payload 集合(40 个 XSS 字符串、30 个 SQLi、28 个 LFI、18 个 SSTI、22 个 SSRF、24 个命令注入、ID 1-100、经典认证绕过、常用用户名),选择攻击模式(Sniper / Cluster bomb / Pitchfork / Battering ram),实时查看结果表。异常行会用星号标记。
**同时以五个不同用户身份进行测试。** 保存认证上下文(匿名用户、用户 A、用户 B、管理员、内部用户)。一键切换活动上下文——所有 Repeater 请求、所有 Intruder 运行、所有探测都将使用这些凭证。然后运行 **授权矩阵**:PenScope 遍历每个端点 × 每个上下文,生成颜色编码的网格。行之间的差异就是你的 IDOR/BAC 发现,自动呈现。
**生成真正适合网站的 CSP。** 遍历页面发出的每个请求,按资源类型分类,构建一个严格策略。添加 `default-src 'none'`、`frame-ancestors 'none'`、`upgrade-insecure-requests`。检测内联脚本和 `eval()`,并在需要保留 `'unsafe-inline'` 时发出警告。与现有 CSP 进行差异比较——绿色表示收紧,红色表示放宽。
**双向与 Claude 对话。** 点击 `→ Claude` 将整个扫描内容作为结构化简报复制到剪贴板。询问 Claude 下一步该测试什么。Claude 会返回一个带格式的 JSON 队列。点击 `⟳ Sync from Claude`,PenScope 解析该队列,对实时目标运行每次攻击,并将结果反馈到链分析器。
**随时间跟踪你的范围。** 今天对某个网站进行快照,下一个 sprint 再次快照,点击 Compare。PenScope 会告诉你哪些发现是新增的、哪些已解决、哪些未变化。将差异导出为 Markdown 分享到团队 Slack。
**将发现映射到合规控制项。** 点击 Compliance Audit。每个发现都会映射到 PCI-DSS v4、NESA UAE IAS、SAMA CSF、DESC ISR、ISO 27001、OWASP Top 10 2021 和 CWE 中的具体控制项。导出 JSON 用于 SIEM。导出 PDF 用于审计人员。
---
## 狩猎模式
点击弹出窗口标题中的 `🎯 Hunt`。将打开一个新标签页。底部的 **预检面板** 会显示你的引擎状态——已捕获的端点、机密信息、检测到的技术、已保存的认证上下文——这样你在点击开始之前就能知道是否有足够的攻击面来进行一次高效的狩猎。如果端点少于 20 个,会显示黄色警告,建议你先浏览目标,或者依赖新的 DOM 自动爬取步骤。配置目标范围(范围内的路径、范围外的路径、攻击强度、时间预算)。点击 `▶ Start Hunt`。
PenScope 会自动执行:
1. 完成被动侦察
2. **自动启用深度模式**(CDP 调试器静默附加——无需用户提示)
3. **DOM 自动爬取**——遍历当前页面上的所有 `<a href>`、`<form action>`、``、`[routerLink]`、`[ng-href]`、`[to]`、`[data-href]`。过滤到同源 URL。将新的 URL 添加到探测队列。_纯 URL 提取——不点击、不导航、不产生改变会话的副作用。_
4. 运行完整的 36 步探测管道 + 8 个堆栈感知攻击包
5. 扫描已保存认证上下文的 **授权矩阵**
6. 运行链关联器,按你的范围规则过滤
7. **为每个严重和高危发现起草完整的 HackerOne 格式报告**——包括漏洞链 *和* 单个高危发现(暴露的机密信息、JWT alg=none、确认的 SSTI/XXE/CRLF)。每个草稿包括标题、严重性(含 CVSS 评估)、摘要、包含两步 curl 的复现步骤(无认证探测 + 认证基线用于差异对比)、针对该发现的影响陈述、从代码片段库中提供的修复建议以及参考资料。
8. 每条严重级发现触发一条 Chrome 通知:_"Hunt Mode 在 /api/users 上发现一个严重级 IDOR——报告草稿已准备就绪"_
9. 将草稿持久化到 `chrome.storage.local` 中,以主机名为键(关闭标签页或浏览器重启后仍保留)
**实时标签页** 会实时叙述每个过滤步骤——范围过滤前后的链数量、严重性分布、哪些被丢弃及其原因。如果狩猎结束时报告数为 0,会出现一个 "为什么没有报告?" 的诊断信息,引导你逐个过滤点并提供具体建议("取消选中严重+高危过滤器"、"保存 2 个以上的认证上下文"、"先更多地浏览目标")。不再需要猜测为什么狩猎结果为空。
**当你醒来时,会看到一队列预先写好的漏洞报告。** 阅读每份报告,点击复制或导出,粘贴到你的 HackerOne / Bugcrowd / Intigriti 平台提交。
这是 Burp 甚至不愿尝试的工作流程。Burp 的主动扫描器会运行攻击,但你仍然需要编写报告。PenScope 掌控了从扫描 → 漏洞利用 → 报告 → 提交的整个路径。
> 设置范围。点击开始。合上笔记本电脑。醒来时面前是一队列起草好的严重级报告。
### 质量控制——维护你的声誉
狩猎模式会主动过滤误报,以避免你因提交它们而损害声誉:
- **SPA HTML 外壳**——Angular/React/Vue 引导页面会为认证和未认证请求返回相同的 HTML,因为 JS 在客户端处理认证。狩猎模式会检测此模式(路径以 `.html` 结尾 + `sameBody=true`)并抑制该发现。真实的 API 仍然会报告。
- **良性的 Azure SAS 令牌**——用于媒体文件(`image.jpg?sv=...&sp=r&se=...`)的短期只读 SAS URL 是合法的 CDN 交付,而非凭证泄露。狩猎模式会检查 `sp=r` + 媒体文件扩展名 + `se - st < 7 天` 并抑制。长期有效、可写或非媒体类型的 SAS 令牌仍会作为真实泄露报告。
- **哈希片段规范化**——`/Dashboard#!/` 是客户端路由,而非服务器端点。狩猎模式在进行链分析前会去除哈希片段,因此报告会显示 `/Dashboard`(实际的服务器路径)。
- **每条 curl 命令中的真实 `baseUrl`**——链分析器从 `tab.url`(仅 HTTP/HTTPS)推导目标主机,若失败则回退到第一个观察到的端点。你的报告中不再出现 `https://target.tld` 占位符 URL。
- **透明的诊断信息**——每个过滤步骤(范围、严重性、去重)都会在实时反馈中记录其前后数量。当狩猎结束时报告数为 0,反馈会以一个 "为什么没有报告?" 的区块结束,精确解释每个潜在发现是在哪里被丢弃的,并提供根据你的具体配置量身定制的具体下一步建议。
### 一个真实的狩猎模式草稿
以下是在一个政府 LMS 系统上仅用 4 分钟生成的真实狩猎模式草稿的节选(已脱敏处理):```markdown
# Authentication bypass on sensitive endpoint: /api/DashboardApi/getUsefulLinks