burpsuite-project-parser
Burp Suiteのプロジェクトファイル(.burp)をコマンドラインから検索・探索するスキルです。正規表現によるレスポンスヘッダーやボディの検索、セキュリティ監査結果の抽出、プロキシ履歴やサイトマップデータのダンプ、BurpプロジェクトにキャプチャされたHTTPトラフィックの分析を行う際に使用します。
description の原文を見る
Searches and explores Burp Suite project files (.burp) from the command line. Use when searching response headers or bodies with regex patterns, extracting security audit findings, dumping proxy history or site map data, or analyzing HTTP traffic captured in a Burp project.
SKILL.md 本文
Burp Project Parser
Burp Suite プロジェクトファイルから burpsuite-project-file-parser 拡張機能を使用してデータを検索・抽出します。
使用場面
- 正規表現パターンを使用してレスポンスヘッダーまたはボディを検索する
- Burp プロジェクトからセキュリティ監査結果を抽出する
- プロキシ履歴またはサイトマップデータをダンプする
- Burp プロジェクトファイルでキャプチャされた HTTP トラフィックを分析する
前提条件
このスキルは Burp Suite Professional に解析を委譲します - .burp ファイルを直接解析しません。
必須:
- Burp Suite Professional - インストール済みであること (portswigger.net)
- burpsuite-project-file-parser 拡張機能 - CLI 機能を提供します
拡張機能のインストール:
- github.com/BuffaloWill/burpsuite-project-file-parser からダウンロード
- Burp Suite で: Extender → Extensions → Add
- ダウンロードした JAR ファイルを選択
クイックリファレンス
ラッパースクリプトを使用してください:
{baseDir}/scripts/burp-search.sh /path/to/project.burp [FLAGS]
スクリプトはプラットフォーム互換性のために環境変数を使用します:
BURP_JAVA: Java 実行ファイルへのパスBURP_JAR: burpsuite_pro.jar へのパス
セットアップ手順については プラットフォーム設定 を参照してください。
サブコンポーネントフィルター (これを使用してください)
常に完全なダンプの代わりにサブコンポーネントフィルターを使用してください。 完全な proxyHistory または siteMap はギガバイト単位のデータを返すことができます。サブコンポーネントフィルターは必要なものだけを返します。
利用可能なフィルター
| フィルター | 返すデータ | 典型的なサイズ |
|---|---|---|
proxyHistory.request.headers | リクエスト行 + ヘッダーのみ | 小 (< 1KB/レコード) |
proxyHistory.request.body | リクエストボディのみ | 可変 |
proxyHistory.response.headers | ステータス + ヘッダーのみ | 小 (< 1KB/レコード) |
proxyHistory.response.body | レスポンスボディのみ | 大 - 回避すること |
siteMap.request.headers | サイトマップの上記と同じ | 小 |
siteMap.request.body | 可変 | |
siteMap.response.headers | 小 | |
siteMap.response.body | 大 - 回避すること |
デフォルトアプローチ
ボディではなくヘッダーから始める:
# 良い例 - ヘッダーのみ、安全に取得できる
{baseDir}/scripts/burp-search.sh project.burp proxyHistory.request.headers | head -c 50000
{baseDir}/scripts/burp-search.sh project.burp proxyHistory.response.headers | head -c 50000
# 悪い例 - 完全なレコードにはボディが含まれる可能性があり、ギガバイトになることも
{baseDir}/scripts/burp-search.sh project.burp proxyHistory # 絶対にこれをしないこと
ヘッダーを確認した後、特定の URL のボディのみを取得し、常に切り詰める:
# 1. まずヘッダーから興味深い URL を見つける
{baseDir}/scripts/burp-search.sh project.burp proxyHistory.response.headers | \
jq -r 'select(.headers | test("text/html")) | .url' | head -n 20
# 2. その後、対象を絞った正規表現でボディを検索 - ボディを 1000 文字に切り詰める必須
{baseDir}/scripts/burp-search.sh project.burp "responseBody='.*specific-pattern.*'" | \
head -n 10 | jq -c '.body = (.body[:1000] + "...[TRUNCATED]")'
厳格なルール: 1000 文字を超えるボディコンテンツはコンテキストに入ってはいけません。 ユーザーが完全なボディコンテンツが必要な場合、Burp Suite の UI で表示する必要があります。
正規表現検索操作
レスポンスヘッダーを検索
responseHeader='.*regex.*'
すべてのレスポンスヘッダーを検索します。出力: {"url":"...", "header":"..."}
例 - サーバー署名を検索:
responseHeader='.*(nginx|Apache|Servlet).*' | head -c 50000
レスポンスボディを検索
responseBody='.*regex.*'
必須: ボディコンテンツを常に最大 1000 文字に切り詰めてください。 レスポンスボディはそれぞれメガバイト単位になることがあります。
# 必須形式 - 常に .body フィールドを切り詰める
{baseDir}/scripts/burp-search.sh project.burp "responseBody='.*<form.*action.*'" | \
head -n 10 | jq -c '.body = (.body[:1000] + "...[TRUNCATED]")'
完全なボディコンテンツを取得しないでください。 特定のレスポンスをもっと見る必要がある場合、ユーザーに Burp Suite の UI で開くよう依頼してください。
その他の操作
監査項目を抽出
auditItems
すべてのセキュリティ結果を返します。出力には以下が含まれます: name、severity、confidence、host、port、protocol、url。
注: 監査項目は小さい (ボディなし) - head -n 100 で安全に取得できます。
プロキシ履歴をダンプ (回避)
proxyHistory
これを直接使用しないでください。 代わりにサブコンポーネントフィルターを使用してください:
proxyHistory.request.headersproxyHistory.response.headers
サイトマップをダンプ (回避)
siteMap
これを直接使用しないでください。 代わりにサブコンポーネントフィルターを使用してください。
出力制限 (必須)
重要: データを取得する前に結果のサイズを常に確認してください。 広い範囲の検索は数千のレコードを返す可能性があり、それぞれメガバイト単位になることがあります。これはコンテキストウィンドウをオーバーフローさせます。
ステップ 1: 常にサイズを先に確認
検索の前に、レコード数とバイト数の両方を確認してください:
# レコード数と総バイト数を確認 - このステップをスキップしないこと
{baseDir}/scripts/burp-search.sh project.burp proxyHistory | wc -cl
{baseDir}/scripts/burp-search.sh project.burp "responseHeader='.*Server.*'" | wc -cl
{baseDir}/scripts/burp-search.sh project.burp auditItems | wc -cl
wc -cl の出力は: <バイト数> <行数> を表示します (例: 524288 42 は 42 レコードで 512KB を意味します)。
結果を解釈 - どちらも合格する必要があります:
| メトリック | 安全 | 狭い検索 | 広すぎる | 停止 |
|---|---|---|---|---|
| 行数 | < 50 | 50-200 | 200+ | 1000+ |
| バイト数 | < 50KB | 50-200KB | 200KB+ | 1MB+ |
1 行に 10MB の単一レスポンスは高いバイト数を示しますが行数は 1 のみ - バイト数チェックがこれをキャッチします。
ステップ 2: 広すぎる検索を絞り込む
カウント/サイズが高い場合:
-
サブコンポーネントフィルターを使用 (上記の表を参照):
# 代わりに: proxyHistory (ギガバイト) # 使用: proxyHistory.request.headers (キロバイト) -
正規表現パターンを絞り込む:
# 広すぎる (すべてにマッチ): responseHeader='.*' # 良い例 - 特定のヘッダーをターゲット: responseHeader='.*X-Frame-Options.*' responseHeader='.*Content-Security-Policy.*' -
取得前に jq でフィルター:
# 特定のコンテンツタイプのみを取得 {baseDir}/scripts/burp-search.sh project.burp proxyHistory.response.headers | \ jq -c 'select(.url | test("/api/"))' | head -n 50
ステップ 3: 常に出力を切り詰める
絞り込み後も、常に切り詰めにパイプスルー:
# 常に head -c を使用して総バイト数を制限 (最大 50KB)
{baseDir}/scripts/burp-search.sh project.burp proxyHistory.request.headers | head -c 50000
# ボディ検索の場合、各 JSON オブジェクトの body フィールドを切り詰める:
{baseDir}/scripts/burp-search.sh project.burp "responseBody='pattern'" | \
head -n 20 | jq -c '.body = (.body | if length > 1000 then .[:1000] + "...[TRUNCATED]" else . end)'
# レコード数とバイト数の両方を制限:
{baseDir}/scripts/burp-search.sh project.burp auditItems | head -n 50 | head -c 50000
実装する厳格な制限:
head -c 50000(最大 50KB) をすべての出力に使用- .body フィールドを 1000 文字に切り詰める - 必須、例外なし
jq -c '.body = (.body[:1000] + "...[TRUNCATED]")'
カウント前と切り詰めなしでこれらを実行しないでください:
proxyHistory/siteMap(完全ダンプ - 常にサブコンポーネントフィルターを使用)responseBody='...'検索 (ボディはそれぞれメガバイト単位になることがあります).*や.+のような広い正規表現
調査ワークフロー
-
スコープを特定 - 何を探していますか? (特定の脆弱性タイプ、エンドポイント、ヘッダーパターン)
-
先に監査項目を検索 - Burp の結果から始める:
{baseDir}/scripts/burp-search.sh project.burp auditItems | jq 'select(.severity == "High")' -
信頼度スコアを確認 - 実行可能な結果でフィルター:
... | jq 'select(.confidence == "Certain" or .confidence == "Firm")' -
影響を受ける URL を抽出 - 攻撃対象を把握:
... | jq -r '.url' | sort -u -
コンテキストのために生のトラフィックを検索 - 実際のリクエスト/レスポンスを確認:
{baseDir}/scripts/burp-search.sh project.burp "responseBody='pattern'" -
手動で検証 - Burp の結果はインジケーター、証拠ではありません。それぞれを検証してください。
結果の理解
深刻度と信頼度
Burp は 深刻度 (High/Medium/Low) と 信頼度 (Certain/Firm/Tentative) の両方をレポートします。トリアージ時に両方を使用してください:
| 組み合わせ | 意味 |
|---|---|
| High + Certain | 本物の脆弱性の可能性が高い、調査を優先 |
| High + Tentative | 誤検知のことが多い、報告前に検証 |
| Medium + Firm | 調査の価値あり、手動検証が必要かもしれません |
「High severity、Tentative confidence」の結果は頻繁に誤検知です。深刻度だけに基づいて結果をレポートしないでください。
プロキシ履歴が不完全な場合
プロキシ履歴には Burp がキャプチャしたものだけが含まれます。以下のため、トラフィックが欠落している可能性があります:
- スコープフィルター がドメインを除外
- インターセプト設定 がリクエストをドロップ
- ブラウザトラフィック が Burp プロキシにルーティングされていない
予想されるトラフィックが見つからない場合、元のプロジェクトで Burp のスコープとプロキシ設定を確認してください。
HTTP ボディエンコーディング
レスポンスボディは gzip で圧縮、チャンク化、または非 UTF8 エンコーディングを使用している可能性があります。プレーンテキストで機能する正規表現パターンはエンコード済みレスポンスで静かに失敗する可能性があります。検索が予想より少ない結果を返す場合:
- レスポンスが圧縮されているか確認
- より広いパターンを試すか、ヘッダーを先に検索
- Burp の UI を使用して生のレスポンスとレンダリングされたレスポンスを検査
拒否する正当化
見落とされた脆弱性または誤った報告につながる一般的なショートカット:
| ショートカット | 何が間違っているか |
|---|---|
| 「このパターンは良さそう」 | サンプルデータで最初に検証 - エンコーディングとエスケープにより静かに失敗 |
| 「High severity = 必ず修正」 | 信頼度スコアも確認。Burp には誤検知があります |
| 「すべての監査項目が関連」 | 実際の脅威モデルでフィルター。すべての結果がすべてのアプリに関連するわけではありません |
| 「プロキシ履歴は完全」 | Burp のスコープ/インターセプト設定でフィルターされる可能性あり。Burp がキャプチャしたものだけが表示されます |
| 「Burp が見つけたから脆弱性」 | Burp の結果は手動検証が必要 - 可能性のある問題を示す、証拠ではありません |
出力形式
すべての出力は JSON で、行ごとに 1 つのオブジェクトです。jq にパイプスルーしてフォーマット:
{baseDir}/scripts/burp-search.sh project.burp auditItems | jq .
grep でフィルター:
{baseDir}/scripts/burp-search.sh project.burp auditItems | grep -i "sql injection"
例
CORS ヘッダーを検索 (バイト制限付き):
{baseDir}/scripts/burp-search.sh project.burp "responseHeader='.*Access-Control.*'" | head -c 50000
すべての high severity 結果を取得 (監査項目は小さいが、それでも制限):
{baseDir}/scripts/burp-search.sh project.burp auditItems | jq -c 'select(.severity == "High")' | head -n 100
プロキシ履歴からリクエスト URL のみを抽出:
{baseDir}/scripts/burp-search.sh project.burp proxyHistory.request.headers | jq -r '.request.url' | head -n 200
レスポンスボディを検索 (ボディを 1000 文字に切り詰める必須):
{baseDir}/scripts/burp-search.sh project.burp "responseBody='.*password.*'" | \
head -n 10 | jq -c '.body = (.body[:1000] + "...[TRUNCATED]")'
プラットフォーム設定
ラッパースクリプトは Burp Suite のバンドル Java と JAR ファイルを見つけるために 2 つの環境変数が必要です。
macOS
export BURP_JAVA="/Applications/Burp Suite Professional.app/Contents/Resources/jre.bundle/Contents/Home/bin/java"
export BURP_JAR="/Applications/Burp Suite Professional.app/Contents/Resources/app/burpsuite_pro.jar"
Windows
$env:BURP_JAVA = "C:\Program Files\BurpSuiteProfessional\jre\bin\java.exe"
$env:BURP_JAR = "C:\Program Files\BurpSuiteProfessional\burpsuite_pro.jar"
Linux
export BURP_JAVA="/opt/BurpSuiteProfessional/jre/bin/java"
export BURP_JAR="/opt/BurpSuiteProfessional/burpsuite_pro.jar"
永続性のためにこれらのエクスポートをシェルプロファイル (.bashrc、.zshrc など) に追加してください。
手動呼び出し
ラッパースクリプトを使用しない場合、直接呼び出してください:
"$BURP_JAVA" -jar -Djava.awt.headless=true "$BURP_JAR" \
--project-file=/path/to/project.burp [FLAGS]
ライセンス: CC-BY-SA-4.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- trailofbits
- リポジトリ
- trailofbits/skills
- ライセンス
- CC-BY-SA-4.0
- 最終更新
- 不明
Source: https://github.com/trailofbits/skills / ライセンス: CC-BY-SA-4.0
関連スキル
hugging-face-trackio
Trackioを使用してMLトレーニング実験を追跡・可視化できます。トレーニング中のメトリクスログ記録(Python API)、トレーニング診断のアラート発火、ログされたメトリクスの取得・分析(CLI)が必要な場合に活用してください。リアルタイムダッシュボード表示、Webhookを使用したアラート、HF Space同期、自動化向けのJSON出力に対応しています。
btc-bottom-model
ビットコインのサイクルタイミングモデルで、加重スコアリングシステムを搭載しています。日次パルス(4指標、32ポイント)とウィークリー構造(9指標、68ポイント)の2カテゴリーにわたる13の指標を追跡し、0~100のマーケットヒートスコアを算出します。ETFフロー、ファンディングレート、ロング/ショート比率、恐怖・貪欲指数、LTH-MVRV、NUPL、SOPR(LTH+STH)、LTH供給率、移動平均倍率(365日MA、200週MA)、週次RSI、出来高トレンドに対応します。市場サイクル全体を通じて買いと売りの両方の推奨を提供します。ビットコインの底値拾い、BTCサイクルポジション、買い時・売り時、オンチェーン指標、MVRV、NUPL、SOPR、LTH動向、ETFの流出入、ファンディングレート、恐怖指数、ビットコインが過熱状態か、マイナーコスト、暗号資産市場のセンチメント、BTCのポジションサイジング、「今ビットコインを買うべきか」「BTCが天井をつけているか」「オンチェーン指標は何を示しているか」といった質問の際にこのスキルを活用します。
protein_solubility_optimization
タンパク質の溶解性最適化 - タンパク質の溶解性を最適化します。タンパク質の特性を計算し、溶解性と親水性を予測し、有効な変異を提案します。タンパク質配列の特性計算、タンパク質機能の予測、親水性計算、ゼロショット配列予測を含むタンパク質エンジニアリング業務に使用できます。3つのSCPサーバーから4つのツールを統合しています。
research-lookup
Parallel Chat APIまたはPerplexity sonar-pro-searchを使用して、最新の研究情報を検索できます。学術論文の検索にも対応しています。クエリは自動的に最適なバックエンドにルーティングされるため、論文の検索、研究データの収集、科学情報の検証に活用できます。
tree-formatting
ggtree(R)またはiTOL(ウェブ)を使用して、系統樹の可視化とフォーマットを行います。系統樹を図として描画する際、ツリーレイアウトの選択、分類学に基づく枝やラベルの色付け、クレードの折りたたみ、サポート値の表示、またはツリーへのオーバーレイ追加が必要な場合に使用してください。系統推定(protein-phylogenyスキルを使用)やドメイン注釈(今後の独立したスキル)には使用しないでください。
querying-indonesian-gov-data
インドネシア政府の50以上のAPIとデータソースに接続できます。BPJPH(ハラール認証)、BOM(食品安全)、OJK(金融適正性)、BPS(統計)、BMKG(気象・地震)、インドネシア中央銀行(為替レート)、IDX(株式)、CKAN公開データポータル、pasal.id(第三者法MCP)に対応しています。インドネシア政府データを活用したアプリ開発、.go.idウェブサイトのスクレイピング、ハラール認証の確認、企業の法的適正性の検証、金融機関ステータスの照会、またはインドネシアMCPサーバーへの接続時に使用できます。CSRF処理、CKAN API使用方法、IP制限回避など、すぐに実行可能なPythonパターンを含んでいます。