Omar-OM7/jshunter

GitHub: Omar-OM7/jshunter

一款专为漏洞赏金场景设计的命令行 JavaScript 密钥扫描器,支持管道组合、代理转发和多层误报过滤。

Stars: 2 | Forks: 0

# jshunter 🔍 一款快速、利于管道组合的 JavaScript 密钥扫描器,专为漏洞赏金猎人设计。 从 stdin 读取 JS URL,抓取每个文件,并将发现的任何密钥直接打印到终端——没有 HTML 输出,没有杂乱信息。 ## 功能 - **原生支持管道** — 专为 `cat urls.txt | jshunter` 设计 - **低误报率** — 熵检查、CamelCase 过滤、单词边界匹配以及已知嘈杂 URL 跳过列表 - **30 多种密钥类型** — AWS、GitHub、Slack、Stripe、Twilio、Firebase、OpenAI、Discord、Telegram、JWT 等 - **支持 Burp/代理** — 使用 `-p` 通过 Burp Suite 路由流量 - **支持 Cookie/header** — 使用 `-c` 扫经过身份验证的 JS 文件 - **彩色输出** — 突出显示发现结果,状态消息输出至 stderr ## 安装说明 ``` git clone https://github.com/YOUR_USERNAME/jshunter cd jshunter pip install -r requirements.txt chmod +x jshunter.py sudo ln -s $(pwd)/jshunter.py /usr/local/bin/jshunter ``` ## 用法 ``` # 基本用法 cat js_urls.txt | jshunter # 仅打印有发现的 URL(更简洁的输出) cat js_urls.txt | jshunter --only-findings # 配合 Burp Suite cat js_urls.txt | jshunter -p 127.0.0.1:8080 # 使用 cookies(已认证的 JS) cat js_urls.txt | jshunter -c "session=abc123; token=xyz" # 通过管道传递给 grep 以查找特定的 secret 类型 cat js_urls.txt | jshunter | grep aws # 将发现保存到文件 cat js_urls.txt | jshunter --only-findings | tee findings.txt ``` ## 输出格式 ``` https://target.com/app.js [aws_access_key_id] AKIAIOSFODNN7EXAMPLE https://target.com/app.js [google_api_key] AIzaSyXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX https://target.com/main.js [json_web_token] eyJhbGciOiJIUzI1NiJ9.eyJ... ``` - **发现结果** → stdout(支持通过管道传输) - **状态消息** → stderr(在通过管道传输时不可见) ## 选项 | 参数 | 描述 | |------|-------------| | `--only-findings` | 隐藏“未找到”提示行 | | `-c, --cookie` | Cookie header(例如 `"session=abc"`) | | `-p, --proxy` | 代理 host:port(例如 `127.0.0.1:8080`) | | `-H, --headers` | 额外的 headers(`"Name:Value\nName:Value"`) | | `-t, --timeout` | 请求超时时间(秒)(默认:10) | | `--no-color` | 禁用 ANSI 颜色 | ## 检测到的密钥类型 | 类别 | 类型 | |----------|-------| | **AWS** | Access Key ID, Secret Access Key, MWS Token, S3 URL | | **Google** | API Key, OAuth Token | | **GitHub** | PAT Classic, PAT Fine-Grained, OAuth, Actions, Refresh Token | | **Slack** | Bot Token, User Token, App Token, Webhook | | **Stripe** | Secret Key, Publishable Key, Test Secret, Restricted Key | | **Twilio** | API Key, Account SID, App SID | | **Firebase** | Server Key, Database URL | | **OpenAI / Anthropic** | API Keys | | **Discord** | Bot Token, Webhook | | **Telegram** | Bot Token(上下文感知) | | **Shopify** | Access Token, Shared Secret, Custom App | | **Email** | SendGrid, Mailgun, Mailchimp | | **Payment** | PayPal/Braintree, Square | | **Other** | npm token, Databricks, Heroku, Facebook | | **Auth** | Basic, Bearer, API Key, JWT | | **Crypto** | Private Keys(RSA, EC, DSA, OpenSSH, PGP) | | **Generic** | 硬编码密码,通用密钥 | ## 推荐工作流 ``` # 1. 收集 JS URL echo "https://target.com" | gau --blacklist png,jpg,gif,css | grep "\.js$" > js_urls.txt # 或者使用 katana katana -u https://target.com -jc -d 3 | grep "\.js$" >> js_urls.txt # 2. 去重 sort -u js_urls.txt -o js_urls.txt # 3. 搜索 cat js_urls.txt | jshunter --only-findings | tee findings.txt ``` ## 降低误报 jshunter 包含多层噪声过滤机制: - **嘈杂 URL 跳过列表** — 完全跳过 Cloudflare 验证脚本、Zaraz、reCAPTCHA 加载器 - **熵检查** — 拒绝低熵匹配(纯单词、连续字符) - **CamelCase 检测** — 拒绝与 token 模式匹配的 Salesforce/LWC schema 名称 - **严格十六进制的 Twilio/Databricks** — SID 和 token 仅限十六进制,拒绝字母数字组成的类名 - **单词边界 auth headers** — `basic`/`bearer` 后面需要空格,拒绝匹配到 `basicPageSchema=` - **大小写敏感模式** — AWS 和 token 前缀进行精确匹配,而非大小写不敏感匹配 ## 环境要求 ``` requests requests-file jsbeautifier urllib3 ``` ## 致谢 灵感来自 m4ll0k 的 [SecretFinder](https://github.com/m4ll0k/SecretFinder)。 为真实世界的漏洞赏金用途构建了额外的误报过滤机制。 ## 免责声明 此工具仅用于授权的安全测试。请仅对您拥有明确测试许可的目标使用。作者不对任何滥用行为负责。
标签:Python, StruQ, 敏感信息扫描, 无后门, 逆向工具