pythonでburpのextensionを作成してリクエストヘッダーに新しいヘッダーを追加する
burpという脆弱性診断ツールを使うときに、リクエストヘッダーに新しいヘッダーを追加する処理が必要だったのでpythonを使ってヘッダーを追加で付与するextensionを作成しました。
下記のpythonスクリプトは、
labs.neohapsis.com
の記事を参考に作成しています。あとは、burpのAPIドキュメントを参考にしました。
https://portswigger.net/Burp/extender/api/index.html
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ヘッダーの追加を確認できます。
ちなみに、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