
JavaScript静的解析のための強力なBurp Suite拡張機能です。インテリジェントなノイズフィルタリングにより、JavaScriptファイルからAPIエンドポイント、URL、シークレット、メールアドレスを抽出します。正確性を確保するため、ノイズを可能な限り削減することを目的としています。
Extensions > Extensions-Settings > Python EnvironmentExtensions > Installed > AddPythonを選択し、js_analyzer.pyを参照しますHTTP historyまたはDashboardから複数のリクエストを選択し、まとめてJS Analyzerに送信できます。
| パターン | 例 |
|---|---|
| APIパス | /api/v1/users, /api/v2/auth |
| RESTエンドポイント | /rest/data, /graphql |
| OAuth/認証 | /oauth2/token, /auth/login, /callback |
| 管理者ルート | /admin, /dashboard, /internal |
| Well-known | /.well-known/openid-configuration |
| 種別 | パターン |
|---|---|
| AWSアクセスキー | AKIA[0-9A-Z]{16} |
| Google APIキー | AIza[0-9A-Za-z\-_]{35} |
| Stripeライブキー | sk_live_[0-9a-zA-Z]{24,} |
| GitHub PAT | ghp_[0-9a-zA-Z]{36} |
| Slackトークン | xox[baprs]-... |
| JWT | eyJ... |
| 秘密鍵 | -----BEGIN PRIVATE KEY----- |
| データベースURL | mongodb://, postgres://, mysql:// |
#注記: 必要に応じてフォークして、シークレット検出をさらに追加してください。
この拡張機能は以下を自動的にフィルタリングします:
schemas.openxmlformats.org, www.w3.org)./, ../, @angular/ など)/Type, /Font, /Filter)xl/, docProps/, worksheets/)en.js, fr-ca.js)sha.js, aes, bn.js)機密ファイルタイプへの参照を検出します:
| カテゴリ | 拡張子 |
|---|---|
| データ | .sql, .csv, .xlsx, .json, .xml, .yaml |
| 設定 | .env, .conf, .ini, .cfg, .config |
| バックアップ | .bak, .backup, .old, .orig |
| 証明書 | .key, .pem, .crt, .p12, .pfx |
| ドキュメント | .pdf, .doc, .docx |
| アーカイブ | .zip, .tar, .gz |
| スクリプト | .sh, .bat, .ps1, .py |
独自のPythonプロジェクトやAPIで使用する場合:
from js_analyzer_engine import JSAnalyzerEngine
engine = JSAnalyzerEngine()
results = engine.analyze(javascript_content)
print(results["endpoints"]) # ['/api/v1/users', ...]
print(results["urls"]) # ['https://api.example.com', ...]
print(results["secrets"]) # [{'type': 'AWS Key', 'value': '...', 'masked': '...'}, ...]
print(results["emails"]) # ['[email protected]', ...]
from flask import Flask, request, jsonify
from js_analyzer_engine import JSAnalyzerEngine
app = Flask(__name__)
engine = JSAnalyzerEngine()
@app.route('/analyze', methods=['POST'])
def analyze():
content = request.json.get('content', '')
results = engine.analyze(content)
return jsonify(results)
if __name__ == '__main__':
app.run(port=5000)
JSextension/
├── js_analyzer.py # Main Burp extension entry point
├── ui/
│ ├── __init__.py
│ └── results_panel.py # Burp UI panel
├── README.md
└── LICENSE
コントリビューションを歓迎します!以下のことは自由に行ってください:
MITライセンス - LICENSEファイルを参照してください。
以下に触発されています:
Jenish Sojitra (https://x.com/_jensec)
InfoSecとテックコミュニティのために❤️を込めて作成されました。