TORIPIYO DIARY

recent events, IoT, programming, security topics

pythonでburpのextensionを作成してリクエストヘッダーに新しいヘッダーを追加する

burpという脆弱性診断ツールを使うときに、リクエストヘッダーに新しいヘッダーを追加する処理が必要だったのでpythonを使ってヘッダーを追加で付与するextensionを作成しました。

下記のpythonスクリプトは、
labs.neohapsis.com
の記事を参考に作成しています。あとは、burpのAPIドキュメントを参考にしました。
https://portswigger.net/Burp/extender/api/index.html


gist.github.com

registerExtenderCallbacks

  • registerExtenderCallbacksの関数は、extensionの作成にはだいたいいつも必要。setExtensionNameで、好きなextension名を引数として与える

processHttpMessage

  • "# header"の箇所で、リクエストヘッダーの情報を抜き出して、listとしてheadersArrayに格納する
  • "# body"の箇所で、リクエストボディの情報を抜き出して、stringとしてbodyStrに格納する
  • "# add X-TORIPIYO"の箇所で、リクエストのホスト情報を抜き出して、'toripiyo.hatenablog.com'へのリクエストの場合は、X-TORIPIYOヘッダーを追加している。このスクリプトではpiyopiyoという値だけど、もっと複雑な計算をして値を入れたい場合は、ロジックを記載してnewHeader = "X-TORIPIYO: " + value という感じで入れる
  • "# set new request"の箇所で、リクエストを発行する

pythonのextensionをburpで使う場合は、jythonのjarファイルを読み込むようにburpに設定させる必要があります。詳しい読み込み方は、下記サイトなど参照。
tech.pjin.jp

作成したpythonスクリプトをextensionとしてburpに読み込ませて、extensionをロードした状態でbrowserからburpを経由してtoripiyo.hatenablog.comにリクエストを送ると、X-TORIPIYOヘッダーの追加を確認できます。
f:id:ha107chan:20180325112414p:plain

ちなみに、extensionを読み込んだburpのHTTP historyのレコードからは、X-TORIPIYOヘッダーの追加を確認できません。確認方法は2通りあります。

1. Logger++ エクステンションを利用する
Logger++というエクステンションをインストールして有効化すれば、Logger++タブには送信直前のリクエスト内容がログとして記録されます。X-TORIPIYOヘッダーも追加されていることが確認できます。

2. burpインスタンスを2個立ち上げる
burpインスタンスを2個ローカルマシンに立ち上げて、browser => burp1 => burp2 => toripiyo.hatenablog.comという形でリクエストを送ります。X-TORIPIYOヘッダーの追加を確認できるのは、burp2のHTTP historyのレコードからです。複数のburpインスタンスの立ち上げ方は、下記の記事を参照してみてください。
Running Multiple Burp Suite Instances