TOUCH THE SECURITY Powered by Security Service G

ナレッジ

2018.10.09

ローカルプロキシツールBurpの使い方 その5 ~Intruder機能~

こんにちは、セキュリティサービスGの「シン」です。前回はBurpのマクロ機能について説明しました。あまりBurpに詳しくなかった方も第1回目からご覧になっている方は、かなり使いこなせるようになったのではないでしょうか。プロキシツールって色々ありますけど、フリーのツールでこれほど機能が充実しているツールは無いと思います。

そして第5回目に説明するBurpの機能は、「Intruder」という機能について説明したいと思います。

1.Intruder機能とは

Intruder機能とはどんなものか?

  1. 診断値の挿入を自動で行なってくれます
  2. 検出トリガー(脆弱性有りとする判定方法)を設定できます
  3. 第3回第4回で説明したマクロ機能のCookieの引継ぎやトークンの引継ぎも利用可能

Proxy機能やRepeater機能は自らが診断値を挿入し、レスポンスを見て脆弱性があるかを確認しますが、Intruder機能はこれらの機能を自動で行なってくれるため、入力ミスや確認ミスがなく診断を確実に実施できます。つまり商用のWebアプリケーション診断ツールと同じ事ができるのです。ただし自動とはいえ、自分自身でパラメータに診断値を挿入する箇所や、検出トリガーを設定する必要があります。

私は現場では商用のWebアプリケーション診断ツールを利用しているのですが、一部の通信形式でツールが対応していないものがあり、その場合にこの機能を利用しています。

2.Intruderの設定

それでは実際にIntruder機能の利用方法を説明していきます。

Burpを起動してProxyタブから診断したいリクエストをキャプチャしてください。診断するログを選択して、右クリックからSend to Intruderを選択します。

2-1.Targetを設定する

Targetタブには診断対象のHost情報を入力します。

2-2.Positionsを設定する

先ず、Positionsタブを選択します。

ここでは診断したいパラメータを指定します。デフォルトでは、Cookieリクエストパラメータ値が§で囲まれています。画面右側にある「Auto § ボタン」を押下しても、同じ状態になります。マルチパートのパラメータやXMLやJSONパラメータも自動的に認識してくれるようです。

尚、手動で指定する場合は、(図では見切れてますが)画面右側「Clear § ボタン」を押下して、診断値を挿入したい箇所にカーソルを合わせて、画面右側「Add § ボタン」を押下して指定します。

    手動での設定例
  • parameter1=test§§ パラメータ値の末尾に診断値を挿入
  • parameter2=§testtest§ パラメータ値ごと診断値を置換
  • parameter3=§testtesttest§§§ 上記を両方やりたい場合

この画面にAttack typeというリストがありますが、今回はデフォルトのSniperを選択してください。詳しくは後ほど説明します。

2-3.Payloadsを設定する

Payloadsタブでは診断値を設定します。

Payload Options のテキストボックスに入力してAddボタンで設定できます。手打ちでは時間がかかるのでテキストファイルに診断値のリストを作成しておき、Loadボタンで読み込むまたは、テキストファイル内容を全コピーからPasteボタンで一括挿入できます。

2-4.Optionsを設定する

次にOptionsタブで検出トリガーを設定します。

これは、脆弱性が検出されたことを判定するためのものですね。Grep Matchのテキストボックスに入力してAddボタンで設定できます。手打ちでは時間がかかるのでテキストファイルに検出トリガーのリストを作成しておき、Loadボタンで読み込むまたは、テキストファイル内容を全コピーからPasteボタンで一括挿入できます。

特定の文字列を検出トリガーとする場合はMatchTypeにSimple stringを選択します。正規表現を利用する場合はMatchTypeにRegexを選択します。

最後に一番下のRedirectionsにAlwaysを選択します。この設定することでリダイレクトが発生した場合にリダイレクト先もGrepMatchで設定した文字列が含まれているかが確認してくれます。

3.Intruderを利用する

基本的な設定は以上です。右上にStart attackのボタンがあるので押下すると診断が開始されます。

今回のフリーエディションでは、リクエスト間隔に制限があるため遅めになっています。Start Attackは複数で実行できるので、指定パラメータを複数に分割して実施することで診断時間を軽減できます。

画面一番下がFinishedになれば診断終了です。

詳細を確認したい場合は、任意の行を選択するとリクエスト・レスポンスの情報が確認できます。カラム名をクリックしてソート可能です。

3-2.診断結果のカラムについて

診断結果のカラムについての解説です。

Request 診断した順番を表します
Position Targetで指定した挿入箇所をNoで表したもの
Payload 挿入した診断値
Status 応答したステータスコード
Error リクエスト時のエラー有無
Redirects followed リダイレクトが発生した数
Timeout レスポンスのタイムアウト有無
Length レスポンスのbyte数

尚、これより右側はOptionsのGrep Matchで設定した文字列が含まれているかが確認できます。含まれている場合はこのようにチェックが入ります。

3-2.Payload PositionsのAttack typeについて

先ほどのPayload PositionsのAttack typeについてもまとめておきます。

Sniper positionで指定した箇所を、Payload Optionsで設定した値に1つずつ変更して送信
Battering ram positionで指定した箇所を、Payload Optionsで設定した値に全て変更して送信
Pitchfork positionで指定した箇所ごとに、Payload Optionsで値を設定して送信。
name=§shin§&age=§36§&address=§chiba§があった場合、name、age、addressごとに変更するものをPayload Optionsで設定します。
Cluster bomb positionの一つを固定しながら他を変えるのを順繰り設定していきます。
position1のPayload Optionsの値を「aaa、bbb」position2のPayload Optionsの値を「ccc, ddd」と設定した場合、始めにposition1の「aaa」が固定され、position2が「ccc, ddd」となって送信。続いてposition1が「bbb」で固定され、position2の「ccc, ddd」が送信されます。

4.まとめ

いくつか利用できる機能に制限がありますが、Intruder機能はどのような診断値を挿入して、どのような結果が返ると脆弱性なのかをしっかり理解できれば、有償ツールのようなWebアプリケーション診断を再現することができます。

以上、第5回はBurpのIntruder機能についての説明でした。

記事一覧に戻る