Burp Suiteの拡張を作りの話 ~Swagger Specを読み込みたい~
書き出し
おとそ気分が抜け切らない状態で2週間近く経過したあざらです。 今回は、近況の報告を兼ねて、ここ数週間作っていたBurp Suiteの拡張について書いていきます。 短めですがお付き合いください
作っているもの
swaggerで定義されたSwagger Specを利用し、必要最低限のHTTPリクエストを生成、そのリクエストをintruderとrepeaterに展開するための拡張機能を作成しています。
最低限欲しかった機能
- Swagger Specを利用したリクエストの生成
- 指定パラメータの置き換え
- リクエストのintruderとrepeaterへの展開
- Authorization headerの追加(主にbearerを利用したJWTのため)
できれば欲しい機能
- 任意のheaderの追加機能
- intruderとrepeaterのオン/オフ機能
- 再利用可能な拡張のUI設計
進捗
2018/01/12時点で最低限欲しかった機能は完成しており現在UIの磨き上げとできれば欲しい機能の追加を施しています。
外観
Option以外の必要な機能は機能するように作成済み。
ただインプット用のポップアップがまだ未完成で....かなしい限り
Listへの値挿入はこのような形で動きます。
Swagger Specの読み込みとその後の動作はこのような形で、しっかりと展開されていることがわかります。
終わりに
今回は製作途中ということもあり少し短めかつ、駆け足での投稿になってしまいましたが、完成次第再度ブログを書こうと思いますのでよろしくお願いします。
書き置き
言語選び
Burp Suiteの拡張の作成に使用できる言語は次の3つ存在しました。
言語 | 種別 | 概略 |
---|---|---|
Java | Java | Burp Suite自体が Javaで実装されているため利用可能 |
JRuby | Rubyインタプリタ | Javaで実装されたRuby 現状 2.5までサポートしている |
Jython | Pythonインタプリタ | Javaで実装されたPython 現状 2.7で開発がストップしている |
今回私はある程度書いたことのある "Jython" を選択しました。
環境整備
Jythonの設定
- ここからJythonをダウンロード
- Burp SuiteのExtender > Optionへ
- Python Enviromentにあるselect fileで先ほど取得したJythonを選択
- オプションでpipなどでインストールしたモジュールを指定
参考資料
参考にさせていただきましたサイト様の記載(敬称略)