liwidale/linspector

GitHub: liwidale/linspector

一款浏览器内运行的页面级网络流量拦截器,集成了针对 Web 应用的主动安全测试工具包和被动漏洞扫描能力。

Stars: 1 | Forks: 0

Linspector # Linspector **拦截。检查。测试。** 页面内的 Fetch、XHR、WebSocket 和 SSE 拦截器,内置安全测试工具包。 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/liwidale/linspector/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-white.svg)](LICENSE) ![Chromium](https://img.shields.io/badge/Chromium-111%2B-lightgrey) English · [Русский](README.ru.md)
## 截图 每个标签页及其功能说明,都可以在[截图页面](SCREENSHOTS.md)上找到。 ## 功能 - 实时捕获 Fetch 和 XHR,包括请求和响应头、payload、主体和时间。 - WebSocket 和 Server Sent Events 捕获,提供每个连接的帧日志。 - 请求按主机分组到不同区域,每个区域都可以全部归档和清除,此外还提供带恢复和删除功能的历史记录。 - Repeater 用于编辑和重新发送任何请求,并支持导出为 cURL、Python 和 Burp 格式。 - 断点功能可暂停匹配的 fetch 请求,以便您对其进行编辑、转发或丢弃。 - Tamper 规则可自动替换 URL、主体或头部中的内容,并支持正则表达式。 - Auth 和会话切换器带有头部预设,用于快速检查 IDOR 和破坏访问控制漏洞。 - 被动安全扫描器:JWT 解码和审计、密钥和 API key 检测、堆栈跟踪泄露检查、CORS 和安全头部审计。 - 攻击工具:用于 XSS、SQLi、SSTI 和 SSRF 的 payload 库、响应差异比较工具以及 JWT 解码器。 - 将请求转发到 Burp Suite 或 Caido 中继 endpoint。 - LocalStorage 和 cookie 检查器,带有 cookie 属性审计功能。 - 实时搜索、最小状态过滤器、排除域名、LocalStorage 持久化以及主题选择。 ## 安全检查 | 漏洞 | 描述 | Linspector 如何发现或测试它 | | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | JWT 漏洞 | 使用 `alg: none` 签名的 token、弱 HMAC 密钥,或者缺失和过期的声明,会让攻击者能够伪造或重用会话 | 被动扫描器会解码每个 Bearer JWT,并标记 `none`、HMAC、过期的 `exp` 以及缺失的 `exp` 或 `iat`。Attack 标签页还提供了手动 JWT 解码器和审计工具 | | 密钥和 API key 泄露 | 流量中暴露的 AWS、Google、Slack、GitHub 和 Stripe 密钥、私钥或 Bearer token 会直接导致服务被访问 | 被动扫描器会对请求和响应主体运行正则表达式库进行扫描,并报告带有截取证据片段的每个匹配项 | | 堆栈跟踪泄露 | 响应中的服务器错误跟踪信息会暴露框架、文件路径和内部逻辑 | 扫描器可检测响应主体中的 Python、Node、Java 和通用堆栈跟踪,并生成一个发现项 | | CORS 配置错误 | 通配符 `Access-Control-Allow-Origin` 与凭证结合使用,会让任何 origin 都能读取已认证的响应 | 头部审计会检查响应的 CORS 头部并标记通配符 origin,特别是与 `Allow-Credentials: true` 结合使用时 | | 缺失安全头部 | 缺少 CSP、X-Frame-Options、HSTS、X-Content-Type-Options 或 Referrer-Policy 会使页面面临点击劫持、MIME 嗅探和降级攻击的风险 | 头部审计会检查每个响应,并列出缺失的头部及其严重程度 | | 不安全的 Cookie | 没有 Secure、HttpOnly 或 SameSite 的 Cookie 可能会通过 HTTP 被窃取、被脚本读取或被跨站发送 | Storage 检查器会列出 Cookie 并标记每个缺失的属性 | | IDOR 和破坏访问控制 | 通过交换 ID 或 token 来访问其他用户对象,会暴露当前用户不应看到的数据 | Session 切换器存储 token 预设,Repeater 会以不同的身份重新发送相同的请求,以便您比较授予的访问权限 | | XSS | 未经过滤的输入被反射或存储,并作为脚本执行,从而在受害者的浏览器中运行攻击者代码 | payload 库提供 XSS 向量,Tamper 和 Repeater 会注入这些向量,Response diff 通过比较响应来发现反射情况 | | SQL injection | 到达 SQL 查询的不可信输入可能会读取或更改数据库 | payload 库为 Repeater 提供 SQLi 探测向量,Response diff 会突出显示 payload 之间的行为或时间差异 | | SSTI | 被服务器端模板引擎执行的用户输入可能导致远程代码执行 | payload 库提供诸如 `{{7*7}}` 的 SSTI 探测向量,以便通过 Repeater 发送并观察渲染后的输出 | | SSRF | 服务器获取攻击者控制的 URL,可能会访问内部服务和云元数据 | payload 库为 Repeater 提供诸如 `127.0.0.1`、`169.254.169.254` 和 `file://` 的 SSRF 目标 | ## 技术栈 - TypeScript,采用严格的编译器设置。 - 使用 esbuild 打包成 Manifest V3 content scripts。 - 使用 Shadow DOM 实现与宿主页面的完全隔离。 - 原生 DOM 渲染,无运行时依赖。 - 使用 Vitest 进行单元测试,ESLint 和 Prettier 保证代码质量。 ## 架构 ``` src/ interceptor.ts MAIN world script: patches fetch, XHR, WebSocket and SSE content.ts ISOLATED world entry: bridge, store and UI core/ types.ts shared data model bus.ts two way message protocol bridge.ts postMessage transport ids.ts id helper store/ observable state, settings and LocalStorage persistence tamper/ tamper and auto replace rules, shared by interceptor and UI security/ jwt, secrets, header audit and the scan orchestrator attack/ curl, python and burp export, payload library, response diff repeater/ request resend and relay forwarding inspect/ LocalStorage and cookie access utils/ colors, formatting, url and header helpers ui/ panel controller, shared parts and per tab views ``` 拦截器在页面的 main world 中运行,以便能够包装真实的网络 API。它通过 `window.postMessage` 将记录和流帧流式传输到隔离的 content script,并通过同一通道接收运行时配置和断点决策。Content script 拥有 store,并在 Shadow DOM 根节点内渲染面板。 ## 安装和构建 环境要求:Node.js 18 或更高版本。 ``` npm install npm run build ``` 构建输出将写入 `dist/` 目录。 ## 在浏览器中加载 1. 打开 `chrome://extensions`。 2. 启用开发者模式。 3. 点击“加载已解压的扩展程序”并选择 `dist/` 文件夹。 4. 打开任何页面并使用右下角的浮动按钮。 运行 main world content scripts 需要 Chromium 浏览器 111 或更高版本。 ## 使用说明 - 断点适用于 fetch 请求。Tamper 规则和会话注入适用于 fetch 和 XHR。 - Repeater 在包含凭证的扩展上下文中重新发送请求,并遵循页面的同源规则。 - 转发功能会将序列化后的请求以 JSON 格式发送到“设置”中的 endpoint。将其指向接受 JSON 的本地 Burp 或 Caido 监听器,或者使用 Burp 导出功能将原始请求粘贴到 Repeater 中。cURL 导出支持使用 `-x` 代理标志通过代理进行路由。 - 扫描器是被动的。它只读取页面已经生成的流量。 ## 开发 ``` npm run dev # rebuild on change npm run typecheck # type checking npm run lint # eslint npm run format # prettier write npm test # unit tests npm run check # typecheck, lint, format check and tests ``` ## 发布 发布一个 GitHub release。发布工作流将构建项目,打包 `dist/` 目录并附带该归档文件。 ## 作者 由 [liwidale](https://github.com/liwidale) 开发。 ## 许可证 基于 [MIT License](LICENSE) 发布。
标签:API测试, CISA项目, Web安全, 流量拦截, 浏览器扩展, 自动化攻击, 蓝队分析