Vega-Starboard/vega-dom-comment-scanner

GitHub: Vega-Starboard/vega-dom-comment-scanner

一款 Tampermonkey 油猴脚本,用于在授权安全测试中扫描已渲染 DOM 内的 HTML 注释、隐藏字段、可疑属性与内部 URL,本地运行并自动脱敏,适合信息泄露审查。

Stars: 0 | Forks: 0

# Vega DOM 注释扫描器 [![Tampermonkey Userscript](https://img.shields.io/badge/Tampermonkey-Userscript-00485b?style=for-the-badge&logo=tampermonkey&logoColor=white)](https://www.tampermonkey.net/documentation.php) [![Grant: None](https://img.shields.io/badge/%40grant-none-16a34a?style=for-the-badge)](https://www.tampermonkey.net/documentation.php?ext=iikm&q=grant&version=4.16.1) [![Privacy: Local Only](https://img.shields.io/badge/Privacy-Local_Only-0f766e?style=for-the-badge)](PRIVACY.md) [![No Telemetry](https://img.shields.io/badge/Telemetry-None-111827?style=for-the-badge)](PRIVACY.md) [![No Network](https://img.shields.io/badge/Network-None-b91c1c?style=for-the-badge)](SECURITY.md) [![License: MIT](https://img.shields.io/badge/License-MIT-f59e0b?style=for-the-badge)](LICENSE) [![Static Verify](https://img.shields.io/badge/Static_Verify-Passing-22c55e?style=for-the-badge)](scripts/verify_userscript.py) [![GitHub Release](https://img.shields.io/github/v/release/Vega-Starboard/vega-dom-comment-scanner?style=for-the-badge&logo=github)](https://github.com/Vega-Starboard/vega-dom-comment-scanner/releases) [![shields.io](https://img.shields.io/badge/Badges-shields.io-blue?style=for-the-badge)](https://shields.io/) Vega DOM Comment Scanner 用于在已渲染的 DOM 中查找 HTML 注释、隐藏的表单字段、可疑的 属性名以及内部 URL。它运行在 当前标签页中,显示本地覆盖层,隐去敏感值,并导出 一份用于记录的小型报告。 它不会发起网络请求。它不会读取 cookies。它不会读取 localStorage 或 sessionStorage。它不会捕获凭证。它不会 上传遥测数据。 ## 状态 原型版:`0.1.0` 这是一个适用于 Tampermonkey 类管理器、可直接使用的用户脚本。它不是 浏览器扩展包,也不需要构建步骤。 ## 仅限合法使用 仅在你拥有的系统、你管理的系统、明确的漏洞赏金范围内、 书面的客户授权范围内或本地实验目标上使用此工具。 本项目专为以下用途设计: - 授权的应用程序安全审查 - 防御性的已渲染 DOM 检查 - 漏洞赏金报告准备 - 开发者发布前的自查 - 本地实验学习 本项目不适用于未经授权的侦察或漏洞利用。 ## 扫描内容 该扫描器会审查当前标签页中已渲染的 DOM: - 来自 `Document.createTreeWalker(..., NodeFilter.SHOW_COMMENT)` 的 HTML 注释。 - 来自 `document.querySelectorAll('input[type="hidden"]')` 的隐藏输入框。 - 可疑属性名,如 token、secret、api-key、auth、jwt、csrf、 session、debug、internal、admin、endpoint、env、uri、url、redirect 和 callback。 - 内联事件处理程序属性,如 `onclick`。 - 注释和选定属性中包含的类似内部 URL 的字符串。 - 类似端点的相对路径,如 `/api`、`/admin`、`/graphql`、`/auth`、 `/oauth`、`/sso` 以及带版本的 API 路径。 ## 不扫描的内容 - 无 cookies。 - 无 localStorage。 - 无 sessionStorage。 - 无 IndexedDB。 - 无浏览器历史记录。 - 无请求体。 - 无响应体。 - 无密码字段值。 - 无跨源 iframe 内容。 - 无后台爬取。 - 无远程页面。 ## 隐私边界 该用户脚本被特意声明为: ``` // @grant none ``` Tampermonkey 将 `@grant` 记录为用于白名单 `GM_*` API 和其他强大功能的元数据字段。此脚本使用 `@grant none`,不请求 GM API,也不包含 Tampermonkey 的网络或存储 API。 该扫描器还避免使用: - `fetch` - `XMLHttpRequest` - `WebSocket` - `EventSource` - `navigator.sendBeacon` - `document.cookie` - `localStorage` - `sessionStorage` - `GM_xmlhttpRequest` - `GM_setValue` - `GM_getValue` ## 脱敏模型 隐藏字段和可疑属性的值不会直接原样显示。扫描器 改为记录值的元数据: - 值长度 - 值形状标签,如 `jwt-like`、`uuid-like`、`url-like`、 `email-like`、`long-value` 或 `internal-looking` - `` 标记,用于替换原本应出现的原始值 URL 查询值将被替换为 ``。查询参数名称将被保留, 因为它们对端点和报告记录很有用。 ## 安装说明 ### 从 GitHub Raw 安装 在此仓库发布后,打开: ``` https://raw.githubusercontent.com/Vega-Starboard/vega-dom-comment-scanner/main/vega-dom-comment-scanner.user.js ``` Tampermonkey 应该会提示安装该脚本。 ### 手动安装 1. 安装 [Tampermonkey](https://www.tampermonkey.net/)。 2. 打开 Tampermonkey 仪表板。 3. 创建一个新脚本。 4. 用 `vega-dom-comment-scanner.user.js` 替换模板内容。 5. 保存。 6. 访问经过授权的 HTTP 或 HTTPS 页面。 7. 点击右下角的 **Vega DOM** 按钮。 ## 使用方法 1. 打开经过授权的目标页面。 2. 点击 **Vega DOM**。 3. 点击 **Scan DOM**。 4. 按文本或发现类型进行过滤。 5. 使用 **Highlight** 在关联元素可用时将其可视化高亮。 6. 使用 **Copy Markdown** 或 **Export JSON** 以便本地记录。 要进行本地冒烟测试,请运行包含的演示页面: ``` cd vibes/apps/dom-comment-scanner python3 -m http.server 8791 ``` 然后打开: ``` http://127.0.0.1:8791/demo/test-page.html ``` ## 输出格式 JSON 导出示例: ``` { "version": 1, "tool": "Vega DOM Comment Scanner", "scannedAt": "2026-05-09T14:30:00.000Z", "page": { "url": "https://example.test/app?view=", "origin": "https://example.test", "title": "Example App" }, "counts": { "total": 4, "review": 3, "comments": 1, "hiddenFields": 1, "attributes": 1, "urls": 1 }, "findings": { "comments": [ { "kind": "comments", "severity": "review", "title": "HTML comment", "selector": "html > head", "value": "TODO internal staging endpoint https://staging.internal.example.test/api/users?token=demo", "details": { "length": 88, "shape": ["internal-looking"] } } ] } } ``` ## 验证 运行本地验证器: ``` cd vibes/apps/dom-comment-scanner npm run verify ``` 验证器会检查: - 用户脚本元数据块 - `@grant none` - 预期的 `@match` 和 `@run-at` - 无网络 API - 无 cookie 访问 - 无 localStorage/sessionStorage 访问 - 无 Tampermonkey GM 网络/存储 API - 注释、隐藏字段、可疑属性和 URL 扫描逻辑是否存在 - README 安全标记 同时运行语法检查: ``` node --check vega-dom-comment-scanner.user.js ``` ## 项目结构 ``` . ├── vega-dom-comment-scanner.user.js ├── demo/ │ └── test-page.html ├── scripts/ │ └── verify_userscript.py ├── PRIVACY.md ├── SECURITY.md ├── CONTRIBUTING.md ├── LICENSE └── package.json ``` ## 设计选择 ### 采用用户脚本而非扩展 此工具不需要扩展级别的网络或主机权限。用户脚本 已足够,因为任务只是在当前页面上进行已渲染 DOM 检查。 ### 不显示原始隐藏值 隐藏字段通常包含 CSRF token、重定向目标、对象 ID 或其他 上下文值。扫描器报告字段名、ID、值长度和形状 标签,而不是原始值。 ### 仅限已渲染 DOM 扫描器只能看到浏览器当前渲染的内容。它不会抓取源 HTML、抓取链接、拦截请求或检查服务器响应。 ## 局限性 - 动态单页应用在路由更改后可能需要重新扫描。 - 封闭的 shadow root 无法检查。 - 跨源 iframe 内容无法检查。 - 当页面使用不寻常的 ID 或类名时,生成的选择器可能无法高亮每一个元素。 - 在构建/压缩过程中被剥离的注释将不会出现。 - 扫描结果仅为审查线索,并非漏洞声明。 ## 路线图 - 可选的 shadow DOM 开放根扫描。 - 改进针对注释和隐藏字段的分组导出。 - 针对每类发现进行严重性调整。 - 导入到未来的 Vega 证据仪表板。 - 如果用户脚本的限制成为实际问题,提供可选的 Firefox/Chrome 扩展包装器。 ## 遵循的官方文档 - [Tampermonkey 文档](https://www.tampermonkey.net/documentation.php) - [Tampermonkey `@grant`](https://www.tampermonkey.net/documentation.php?ext=iikm&q=grant&version=4.16.1) - [MDN: Document.createTreeWalker](https://developer.mozilla.org/en-US/docs/Web/API/Document/createTreeWalker) - [MDN: Document.querySelectorAll](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll) - [MDN: ``](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input/hidden) - 用于 README 徽章的 [shields.io](https://shields.io/) ## 关键词 `tampermonkey`、`userscript`、`dom-scanner`、`html-comments`、`hidden-fields`、 `attribute-scanning`、`internal-urls`、`rendered-dom`、`security-testing`、 `authorized-testing`、`bug-bounty`、`defensive-security`、`appsec`、 `privacy-tool`、`local-only`、`no-telemetry`、`no-network` ## GitHub Topics 建议的仓库主题: ``` tampermonkey userscript dom-scanner html-comments hidden-fields attribute-scanning internal-urls security-testing bug-bounty defensive-security privacy-tool local-only no-telemetry appsec ``` ## 许可证 MIT。参见 [LICENSE](LICENSE)。
标签:CMS安全, DOM审查, DOM扫描, HTML注释扫描, JavaScript, MIT许可, Tampermonkey, Web安全, XSS检测辅助, 前端安全, 安全测试, 客户端安全, 攻击性安全, 敏感信息发现, 数据可视化, 数据泄露, 数据脱敏, 本地渲染, 油猴脚本, 浏览器脚本, 漏洞赏金工具, 策略控制器, 网络安全, 自定义脚本, 蓝队分析, 逆向工具, 隐私保护, 隐藏表单字段, 零网络请求