NoTme3/JS-Recon
GitHub: NoTme3/JS-Recon
一款面向安全专业人士的客户端JavaScript侦察与分析工具,集成了Secret检测、端点提取、漏洞扫描、AST解析、污点流追踪和可选AI增强分析,帮助渗透测试人员和Bug Bounty猎人高效审计前端代码。
Stars: 6 | Forks: 1
# JS Recon 分析器
一款面向安全专业人士的高级客户端 JavaScript 侦察工具。分析 JS 文件以提取 secrets、API endpoints、漏洞等信息——通过 NVIDIA NIM 提供可选的 AI 驱动增强分析。
## 功能特性
### 核心分析引擎
- **Secret 检测** — API 密钥、token、密码、数据库 URL、Bearer token(包括 `.concat()` 混淆)
- **Endpoint 提取** — REST API 路由、GraphQL 端点、WebSocket URL
- **漏洞扫描** — DOM XSS sinks、原型链污染、postMessage 处理器、开放重定向
- **AST 分析** — 通过 Acorn 进行深度代码解析,实现变量级别的 secret 检测和危险赋值分析
- **污点流分析** — 追踪数据从来源(用户输入)到 sinks(eval、innerHTML)的流向
- **库指纹识别** — 检测 25+ 个 JS 库(jQuery、React、Angular、Lodash 等)并匹配已知 CVE
- **动态沙盒** — 在隔离的 iframe 中执行 JS,捕获运行时行为
### AI 增强 (NVIDIA NIM)
- 一键使用 **Meta Llama 3.3 70B** 对所有发现进行 AI 分析
- 提供严重性推理、风险上下文以及建议的测试 payload
- API 密钥本地存储在浏览器中——绝不发送到第三方服务器
- 通过 serverless 函数代理,绕过 CORS 限制
### 导出与报告
- 生成 **JSON / CSV / HTML** 报告
- 导出 **Postman Collection** 以便端点测试
- 从发现的路由生成 **OpenAPI Spec**
- 包含发现项、严重性分类和漏洞利用详情的完整 HTML 报告
### 附加功能
- 远程 JS 文件获取(粘贴 URL,自动分析)
- 从 JS bundles 中收集子域名
- Source map 检测与解析
- Webpack chunk 抓取
- 代码美化(集成 js-beautify)
- 工作区管理,用于组织分析任务
- 带行号的语法高亮代码编辑器
## 快速开始
### 方式 1:本地开发
需要 **Node.js**(v18+)。
```
git clone git@github.com:NoTme3/JS-Recon.git
cd JS-Recon
node server.js
```
在浏览器中打开 **http://localhost:8000**。
### 方式 2:Vercel(生产环境)
本仓库已开箱即用地配置了 Vercel 部署:
1. 将 GitHub 仓库连接到 Vercel
2. 部署——无需构建步骤或环境变量
3. AI 代理作为 serverless 函数在 `/api/analyze` 路径下运行
## AI 增强设置
1. 转到右上角导航栏中的 **Settings**
2. 滚动至 **AI Enrichment**
3. 开启 **Enable AI Analysis**
4. 选择 **NVIDIA NIM** 作为提供者
5. 粘贴来自 [build.nvidia.com](https://build.nvidia.com/meta/llama-3_3-70b-instruct) 的 API 密钥
6. 运行分析,然后在结果工具栏中点击 **AI Enrich**
AI 将分析您的发现并添加:
- 带推理的**严重性评估**
- 解释现实世界影响的**风险上下文**
- 用于验证的**建议测试 payload**
## 架构
```
js-analyzer/
├── index.html # Main UI
├── server.js # Local dev server + AI proxy (Node.js)
├── vercel.json # Vercel deployment config
├── api/
│ └── analyze.js # Vercel serverless function (AI proxy)
└── src/
├── main.js # Core app logic, UI wiring, rendering
├── patterns.js # Regex-based detection rules (50+ patterns)
├── ast-analyzer.js # Acorn-based AST analysis
├── ai-analyzer.js # AI enrichment engine (NVIDIA NIM client)
├── vuln-scanner.js # Library fingerprinting + CVE database
├── taint-analyzer.js # Source-to-sink taint flow tracking
├── route-extractor.js # API route extraction from code
├── dynamic-sandbox.js # Runtime analysis in isolated iframe
├── fingerprint.js # JS library version detection
├── subdomain-harvester.js # Subdomain extraction from bundles
├── chunkcrawler.js # Webpack chunk URL discovery
├── sourcemap-parser.js # Source map detection
├── exporters.js # JSON, CSV, Postman, OpenAPI export
├── report.js # HTML report generation
├── workspace-store.js # IndexedDB workspace persistence
├── analyzer.worker.js # Web Worker for background analysis
└── style.css # Full UI stylesheet
```
### AI 代理工作原理
```
Browser (ai-analyzer.js)
│
▼ POST /api/analyze { apiKey, prompt, model }
│
┌───┴───────────────────────┐
│ server.js (local) │ ← Development
│ OR │
│ api/analyze.js (Vercel) │ ← Production
└───┬───────────────────────┘
│
▼ POST (Bearer token)
│
┌───┴───────────────────────┐
│ NVIDIA NIM API │
│ integrate.api.nvidia.com │
└───────────────────────────┘
```
之所以需要代理,是因为浏览器会拦截对 NVIDIA API 的直接跨域请求。API 密钥由浏览器在每个请求中传递,从不在服务器端存储。
## 检测类别
| 类别 | 示例 |
|---|---|
| **Secrets** | AWS 密钥、Stripe 密钥、Bearer token、数据库 URL、通用 token、长十六进制字符串 |
| **Endpoints** | REST API、GraphQL、WebSocket URL、绝对/相对路径 |
| **Routes** | 通过 AST 提取的 Express/Fastify/Koa 路由定义 |
| **Vulnerabilities** | innerHTML、eval、document.write、postMessage、开放重定向、原型链污染 |
| **Libraries** | jQuery、Lodash、React、Angular、Vue、Moment.js、Handlebars 等 18+ 个包含 CVE 数据的库 |
| **Taint Flows** | location.hash → eval、用户输入 → innerHTML、cookie → document.write |
| **Integrations** | S3 buckets、Firebase URLs、Google Maps 密钥、Slack webhooks |
## 技术栈
- **前端**: 原生 HTML/CSS/JS — 零构建步骤,无框架
- **代码解析**: [Acorn](https://github.com/acornjs/acorn) (AST)、[js-beautify](https://github.com/beautifier/js-beautify)、[Highlight.js](https://highlightjs.org/)
- **AI**: 通过 OpenAI 兼容 API 使用 NVIDIA NIM (Meta Llama 3.3 70B Instruct)
- **后端**: Node.js (本地) / Vercel Serverless Functions (生产环境)
- **存储**: localStorage (设置)、IndexedDB (工作区)
## 许可证
MIT
标签:Acorn解析器, AI安全分析, API密钥泄露, API端点提取, Bug Bounty, CISA项目, CORS绕过, DOM XSS, ESC4, GNU通用公共许可证, Meta Llama 3, MITM代理, Node.js, NVIDIA NIM, OpenAPI, OSINT, Postman导出, Webpack, 代码混淆逆向, 前端安全, 原型污染, 可自定义解析器, 子域名收集, 安全报告生成, 客户端安全, 对抗攻击, 敏感信息检测, 数据可视化, 数据泄露, 本地优先, 源码映射, 网络安全, 隐私保护