JSHunter 是一款用于 JavaScript 安全分析和端点发现的综合命令行工具。它专为安全专业人员、渗透测试人员和开发人员打造,提供企业级分析能力,具备高精度检测算法和专业报告功能。
https://github.com/user-attachments/assets/5a5f60fa-f8dc-4aac-bd06-2e93779f9af4
JSHunter 实际运行 — CLI 的真实终端截图(所示所有密钥均为虚假测试数据)
企业级精度,配备高级分析算法
JSHunter 会解析其扫描的 JavaScript,而不仅仅是进行模式匹配。一个 单遍 ECMAScript 扫描器会将响应的每个字节分类为字符串 字面量、模板字面量、注释、正则表达式字面量或代码,检测规则 会基于该分类进行评估。
这一点很重要,因为正则表达式并不知道它匹配到了什么。同样的四十个 base64 字符,在字符串字面量中意味着“凭据”,在压缩标识符中意味着“分块哈希”, 而当它们横跨两个相邻令牌之间的接缝时则毫无意义。知道它究竟是哪一种, 就能用结构化的答案取代一堆邻近性启发式规则:
key,而是恢复该值实际绑定到的标识符或属性键 —
const stripeSecret = "..." 与 {contentHash: "..."} 的解读截然不同,
而仅基于形状的规则现在要求这种绑定。role 声明读取的 Supabase anon JWT、
Twilio SID — 会被分类,而不是作为泄露上报。
--include-public 仍会报告它们。每一次拒绝都以正文被确信为 JavaScript 或 JSON 为前提。
对于其他任何内容 — .env 文件、散文、原始 HTML — 引擎会提供
证据,但绝不抑制,因此被错误分类的输入永远不会隐藏密钥。
--no-structural 会关闭整个层并恢复 v0.7 的行为。
发现结果会在 --json、--ndjson 和
SARIF 属性包中以 evidence 对象的形式携带推理依据:```json
"exposure": "secret",
"evidence": {
"region": "string-literal",
"role": "assignment",
"bound_to": "awsAccessKeyId",
"shape": "opaque-token",
"charset": "alphanumeric",
"signals": [
{"name": "in-literal", "delta": 0.04, "detail": "value is a complete string-literal"},
{"name": "credential-binding", "delta": 0.12, "detail": "bound to 'awsAccessKeyId'"}
]
}
`--stats` 报告每个阶段丢弃了什么,因此流水线保持可审计。
### Chunk 图与路由发现
现代应用会发布一个入口 bundle 以及数百个懒加载 chunk,这些 chunk 的 URL 是在运行时根据打包器内联的 manifest 组装出来的。没有任何东西链接到它们,因此爬虫永远看不到它们。`-G` 会恢复该 manifest,并打印完整的资源列表和客户端路由表:```console
$ jshunter -u https://target.example/_next/static/chunks/main-a1b2c3.js -G
[CHUNKS] https://target.example/...: next runtime, 214 chunks, 37 routes
[CHUNK] https://target.example/... https://target.example/_next/static/chunks/settings.11aa22bb33cc.js
[ROUTE] https://target.example/... /admin/users/:id
支持的运行时:webpack 4 和 5(__webpack_require__.u、miniCssF、
jsonpScriptSrc)、Next.js 构建清单、Vite 和 Rollup(__vite__mapDeps、
__vitePreload)、普通动态 import(),以及来自 React Router、
Vue Router 和 Angular 的路由表。输出以制表符分隔并去重,因此可以直接
作为后续扫描的输入列表传回:```bash
jshunter -u https://target.example/main.js -G -q | awk -F'\t' '/^[CHUNK]/{print $3}' > chunks.txt
jshunter -l chunks.txt -s -j > findings.json
### 专业 HTTP 与网络套件
<details>
<summary><strong>企业级网络配置</strong></summary>
**认证与请求头:**
- **自定义请求头** (`-H`):可重复的认证请求头和自定义请求头
- **Cookie 管理** (`-c`):用于访问受保护资源的会话 Cookie
- **User-Agent 控制** (`-U`):自定义 UA 字符串或基于文件的轮换以实现隐蔽
**性能与可靠性:**
- **速率限制** (`-R`):可配置的请求延迟(毫秒)以规避检测
- **智能超时** (`-T`):针对不同网络条件的自定义超时设置
- **智能重试** (`-y`):针对失败请求的自动重试机制,采用指数退避策略
**专业集成:**
- **代理支持** (`-p`):完整的 Burp Suite 和自定义代理集成(HTTP/HTTPS/SOCKS5)
- **TLS 灵活性** (`-k`):可选的证书验证绕过,适用于测试环境
- **线程控制** (`-t`):可配置的并发请求处理以实现最佳性能
> **安全专业人员功能**:专为渗透测试和安全评估而设计
> **示例**:`jshunter -l targets.txt -p 127.0.0.1:8080 -H "Authorization: Bearer token" -R 1000`
</details>
### 高级 JavaScript 分析
<details>
<summary><strong>完整的代码分析与反混淆套件</strong></summary>
**核心分析工具:**
- **反混淆引擎** (`-d`):解包压缩和混淆的 JavaScript 以进行深度分析
- **Source Map 解析器** (`-m`):从 source map 中提取并分析原始源代码
- **混淆检测** (`-z`):识别并分类混淆技术和模式
**动态分析:**
- **Eval 分析** (`-e`):分析动态代码执行(`eval()`、`Function()`、运行时生成)
**代码智能:**
- **模式识别**:识别常见的 JavaScript 框架和库
- **代码结构分析**:映射应用程序架构和数据流
- **上下文感知检测**:理解代码上下文以减少误报
> **专业用法**:将分析工具与安全检测相结合以实现最大覆盖范围
> **示例**:`jshunter -u target.js -d -m -e -s -g`(完整反混淆 + 安全分析)
</details>
### 安全分析套件
<details>
<summary><strong>完整的安全评估工具包</strong></summary>
**核心安全检测:**
- **密钥检测** (`-s`):API 密钥、访问令牌、密码和硬编码凭据
- **JWT 令牌分析** (`-x`):认证令牌提取、验证和载荷检查
- **Firebase 安全** (`-F`):配置分析、API 密钥和数据库 URL 检测
**高级分析:**
- **参数发现** (`-P`):隐藏的表单参数、变量和配置键
- **URL 参数提取** (`-PU`):带完整 URL 上下文的高级参数分析
- **GraphQL 分析** (`-g`):Schema 检测、查询提取和端点发现
- **WAF 绕过检测** (`-B`):安全绕过模式和规避技术
**范围与上下文:**
- **内部端点过滤** (`-i`):私有/内部资源识别与分类
- **链接分析** (`-L`):全面的 URL 提取和关系映射
> **专业提示**:组合使用标志进行全面分析(例如 `jshunter -u target.js -s -x -F -g`)
</details>
### 范围与发现
<details>
<summary><strong>智能爬取与目标定位</strong></summary>
- **递归发现**:多深度 JavaScript 文件爬取
- **域名范围限定**:将分析聚焦于特定域名
- **扩展名过滤**:针对特定的 JavaScript 文件类型
</details>
### 专业报告与导出套件
<details>
<summary><strong>企业级输出与集成</strong></summary>
**核心输出格式:**
- **控制台显示**:彩色编码的终端输出,具有专业格式和清晰分类
- **文件导出** (`-o`):将综合结果保存到自定义文件位置
- **JSON 导出** (`-j`):用于自动化和程序化处理的结构化数据格式
- **CSV 导出** (`-C`):用于管理层报告和分析的电子表格兼容格式
**专业集成:**
- **Burp Suite 导出** (`-n`):与 Burp Suite Professional 直接集成以进行即时测试
- **正则过滤** (`-r`):用于定向结果过滤的自定义模式匹配
- **详细分析** (`-v`):带有调试信息和上下文的详细分析输出
**结果管理:**
- **简洁模式** (`--found-only`):隐藏空结果以生成聚焦的安全报告
- **静默模式** (`-q`):抑制横幅以用于自动化脚本和 CI/CD 集成
> **报告工作流**:使用 JSON 进行自动化,使用 CSV 生成管理报告,使用 Burp 导出进行即时测试
> **示例**:`jshunter -l targets.txt -s -j -o security-findings.json`(结构化安全报告)
</details>
---
## 安装
### Go 安装(推荐)```bash
# Install JSHunter
go install -v github.com/cc1a2b/jshunter/cmd/jshunter@latest
# Verify installation
jshunter --help
git clone https://github.com/cc1a2b/jshunter.git cd jshunter go build -o jshunter ./cmd/jshunter
### 系统要求
- **Go 1.22.5+**(用于从源码构建)
- **Linux、macOS 或 Windows**(64 位架构)
- **网络连接**(用于远程 JavaScript 分析)
---
## 快速开始
### 基础分析```bash
# Analyze a single JavaScript file
jshunter -u "https://example.com/app.js"
# Scan multiple URLs from file
jshunter -l urls.txt
# Analyze local JavaScript file
jshunter -f app.js
jshunter -u "https://target.com/app.js" -s
jshunter -u "https://target.com/app.js" -d -s -g -F -x -L
jshunter -u "https://target.com/app.js" -d -m -e -s -x -P -g -F -B -L
jshunter -l targets.txt -s -g -F -j -o security_findings.json
---
## 使用示例```bash
# Analyze single URL
jshunter -u "https://example.com/app.js"
# Analyze multiple URLs from file
jshunter -l urls.txt
# Pipe URLs from stdin
cat urls.txt | grep "\.js" | jshunter
# Complete security analysis - find secrets, API keys, and credentials
jshunter -u "https://example.com/app.js" -s -x -F
# Full analysis suite with deobfuscation and all security tools
jshunter -u "https://target.com/app.js" -d -m -e -s -x -P -g -F -B -L
# Professional assessment with source map analysis
jshunter -u "https://target.com/bundle.js" -d -m -s -g -F