2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Burpで(擬似)キーバインドを設定する拡張機能を作った

2
Last updated at Posted at 2026-01-07

はじめに

ご無沙汰しております。シーエー・アドバンスの mhokam です。
アドベントカレンダー、大幅に遅刻しました…すみません…

普段は脆弱性診断のお仕事をしています。
今回は普段使ってるツール、BurpSuiteの拡張機能を作ったので紹介します。


突然ですがBurpSuite、便利ですよね。
私は診断で対象を叩いたり、半分ネタの拡張機能を作るなどして元気にやっています!

作った拡張機能の一例

私がこのツールを初めて触った時にはすでにそうだったんですが、historyタブなどで右クリックするとBurpExtensionsのメニューが Extensions > 拡張機能名 > 機能(ものによってはさらに…)のように階層になっています。

拡張機能画面の例

弊社の脆弱性診断業務では、対象WebサイトのURLを集めるタイミングがあり、(BurpのHTTP Historyからいい感じにコピーする拡張機能)が作られているのですが、階層が多いためコピーするたびに繊細なカーソル移動が求められていました…眠い日はかなり厳しいです…zzz

こういう時あったらいいな、が拡張機能のキーバインド対応なんですがこの記事を書いている時点で公式では対応されていませんでした。(v2025.11.4~で対応始まりました!🎉)

公式対応も始まったしお蔵入りか…とも思ったんですが、(制限付きではありますが)後付けで既存の拡張機能にキーバインド設定できるのは良いかなと思い、残しておきます。

注意
この拡張機能では公式のホットキーには対応しておらず、右クリックをしてコンテキストメニューを開かないとキーが動作しません。
また、全ての拡張機能への対応を想定したものではありません。

できること

  • 拡張機能をExtensionsと同じ高さに表示
  • 特定の拡張機能にJavaのキーバインドを設定
  • 専用タブでキーバインドと拡張機能の紐付け
  • 設定ファイルをSaveすることで新しいBurpで設定が引き継げる

使い方

  1. 拡張機能のjarをダウンロード

  2. BurpのExtensionタブで読み込む
    image.png

  3. burp-contextmenu-keybindsタブを開いてリクエストレスポンスタブ内で右クリック

    • 設定用にコンテキストメニューを取得します
  4. burp-contextmenu-keybindsタブの左下Addを押してメニューから追加したい拡張機能名を選択します

  5. 下の枠に設定したいキーバインドを入力します

    • そのままでも動作はしますが別のBurpを開いた時は再度設定が必要になります
    • 設定をファイルとして出力する場合はSaveを押してください
      image.png
  6. 使用したい箇所で右クリックをしてコンテキストメニューを表示し、キーバインドが反応するか確認
    image.png

おわりに

上記の内容で、擬似的なキーバインドの実装を行いました。
この実装によりメニュー階層をたどる細かいカーソル移動がなくなりました。眠たかったり集中力がない日も安心です。

筆者はURLコピーや色変更などでキーバインド設定しています。
他にも面白い使い道があったらぜひコメントいただけると嬉しいです。

残りは開発時に考えていたことを備忘録的に書いていきます。


付録

事前調査

この拡張機能を作成する前に、先行して2つ知見がありました。

  1. Extensions メニューの階層変更をする拡張機能-burp-menu-level(この拡張機能のアイディアがなければ現在の形にはなってなかったと思います。感謝します。)
  2. Javaのメニューにキーバインドをセットする(以前に先輩が試した知見)

1.の拡張機能はBurpのWiener APIを使用していい感じに書かれており、拡張機能の階層を Extensions タブと同じ階層まで移動することが可能でした。
2.の知見は「組み合わせたらいけるかも」という内容で先輩から共有いただいたもので、動作確認をしつつ組み合わせても動くなーというところまで確認しました。

上記の組み合わせでも使用できたのですが、個人的に下記のような不満がありました。

  1. 階層を変えられるのは良いけど拡張機能が全て表に出る(拡張機能の機能分右クリックメニューが膨らむ)
  2. Javaのコードに入れ込む必要があるので拡張機能全てにキーバインドをセットして再ビルドの必要がある

この二つクリアできたら良いなーくらいの気持ちで始めました。

やったこと

1つ目の知見でJava側からコンテキストメニューの検知・階層の探索を行い、メニューが再生成できるということが分かっていましたが、権利上元のコードをそのまま使うことはできませんでした。
2つ目の知見でキーバインドのセットはできることが分かっていたのですが、メニューにセットするにあたり拡張機能ビルド後でも問題ないかなど事前にいくつか検証をする必要がありました。

Claude Codeと実装について整理して以下のような形で再実装を進めることとしました

  • Burp Montoya APIを使用
  • メニュー改変を参考にしたアイディアのコードと異なる実装にする
    • 単一のHierarchyリスナーを使用してメニュー作成時の検知
    • BTSを使用したメニュー探索
  • アクション名に紐づけてキーバインドをセット

実際の開発は以下のような流れでClaude Codeに実装してもらいつつ手直ししてました。

  • 特定のメニュー階層をextensionsと同じトップメニューに移動
  • 特定のメニューに指定したキーバインドを設定
  • キーバインド設定の保持(ファイル保存)
  • キーバインドをburpの画面から設定できるように修正
    • 一致するアクション名を取得しづらい、typoの発生で時間が溶けた
  • アクション一覧取得のためサンプルウィンドウを設定タブに表示
  • リファクタリング

できなかったこと

  • 完全なホットキー対応
    • 現段階は右クリックでメニューを表示する必要がある
    • メニューを開くとき選択した内容に応じたメニュー内容が生成されていそう
    • もしかしたら公式の対応でいけるかも(時間できたら確認したい)
  • 一部拡張機能のホットキー対応
    • リクエスト/レスポンスメニュー内のみで特殊な動きをする拡張機能への対応
      • 取得や設定はできるが反応しないケースがあった
      • 実装の考慮漏れありそうなので拡張機能側のコード見ながら対応が必要かも

🌺 沖縄から「21世紀を代表する会社」を創る仲間を募集

シーエー・アドバンスは「沖縄のインターネット産業の未来を創る」をビジョンに掲げ、セキュリティ業務ではサイバーエージェントグループの脆弱性診断・ネットワーク診断を担っています。
沖縄で働きながら最先端のセキュリティ技術に挑戦できます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?