BurpSuiteのIntruder機能の使い方を詳細解説!

今回はBurp Suiteの強力な機能、
Intruder(イントルーダー)
について詳しく解説していきます!

Intruderを使いこなすと、
特定パラメータに対して大量の入力を自動送信して検証する
ことができ、効率的な脆弱性診断が可能になります。


Intruderとは?

Intruderは、
リクエストの特定部分を自動で変化させながら何度も送信するツールです。

例えば:

  • ログインフォームに1000通りのパスワードを試す
  • 商品IDを0から1000まで順に試して在庫を調べる
  • 不正な入力を大量に流してアプリのエラー挙動を探る

といった、手動では大変な繰り返し作業を自動でやってくれます!

まさに、
「自動化された手動攻撃」 というイメージですね。

対象リクエストのIntruderへの登録

「HTTP history」タブから、Intruderに送りたいリクエストを選択し右クリック→「Send to Intruder」をクリックします。

※ Macの場合「Command + i」のショートカットも使用可能

ペイロード挿入位置の設定

対象のリクエストが表示されるので、ペイロードを挿入したい位置を「§」で囲みます(末尾なら囲う必要はない)。

右側のボタンで設定が可能です。

  • 「Add §」 カーソル位置に「§」を一つ挿入する。
  • 「Clear §」 全ての「§」を削除する。
  • 「Auto §」 範囲選択内にあるパラメータ値の箇所を自動で認識し、「§」を挿入する。

手動での設定例

  • parameter1=§test§ パラメータ値ごと値を置換
  • parameter2=test§§ パラメータ値の末尾に値を挿入
  • parameter3=§test§§§ 上記を両方やりたい場合

挿入タイプの設定

Attack type一覧

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

各Attack typeの挙動詳細

「Sniper」と「Battering ram」の場合、全ての挿入箇所でペイロードは共通になります。

  • 挿入箇所 name=§John§&pass=§123§
  • ペイロード [”p1”, “p2”]
リクエスト1リクエスト2リクエスト3リクエスト4
Snipername=p1&pass=123name=p2&pass=123name=John&pass=p1name=John&pass=p2
Battering ramname=p1&pass=p1name=p2&pass=p2

「Pitchfork」と「Cluster bomb」の場合、挿入箇所ごとにペイロードを設定する必要があります。

  • 挿入箇所 name=§John§&pass=§123§
  • ペイロード name: [”p1”, “p2”] pass: [”p3”, “p4”]
リクエスト1リクエスト2リクエスト3リクエスト4
Pitchforkname=p1&pass=p3name=p2&pass=p4
Cluster bombname=p1&pass=p3name=p2&pass=p3name=p1&pass=p4name=p2&pass=p4

挿入値の設定

次に「Payloads」タブで挿入する値を設定します。

「Payload Options」のテキストボックスに入力して「Add」をクリックすると設定できるが手打ちでは時間がかかります。

テキストファイルに値のリストを作成しておき、「Load」クリックで読み込んだり、コピペをすることで一括挿入が可能です。

なお、Attack Typeに「Pitchfork」もしくは「Cluster bomb」を設定した場合は、挿入箇所毎にペイロードを設定する必要があります。

設定画面下部の「Payload ecoding > URL-encode these charactors」がチェックされていると、ペイロードがURLエンコードされて挿入されます。 (デフォルトでチェックが入っているので、URLエンコードしたくない場合はチェックを外す必要がある)

Payload Type

デフォルト設定の「Simple list」の他に挿入するペイロードの指定方法を設定可能です。

例として「Numbers」を選択した場合、以下の設定が可能です。

  • Number range 挿入する数値の範囲とステップ数 図では 0 ~ 100 の範囲で1づつ増やす設定を行なっている。 (「step」を「2」に設定すると2づつ増える)
  • Number format 挿入する数値のフォーマット Examplesに表示されているように、「Min integer digits」を指定することにより先頭を0埋めしている。

検出トリガーの設定(オプション)

検出トリガーを設定することで、脆弱性が検出されたことを機械的に判定できるようになります。 (設定しなくてもスキャンは可能)

検出結果を表示するには「Intruder > Settings > Grep – Match > Flag result items with responses matching these expressions」にチェックを入れる必要がある。

デフォルトでいくつか検出パターンが登録されているが、「Add」や「Paste」「Load」から追加することが可能です。

ここに登録されているパターンがレスポンスに含まれていたら検出します。

「MatchType」に「Regex」を選択すれば正規表現でのマッチも可能です。

スキャンの実行

必要な設定をし終わったら右上の「Start attack」をクリックしスキャンを開始します。

画面右下に「Finished」と表示されれば終了、結果が表示されています。

表示された結果で詳細を確認したいものがある場合は、選択するとリクエスト・レスポンスの情報を見ることができる

また、カラム名をクリックすることでソートも可能

結果のカラムの内容一覧

カラム名説明見るべきポイント
Request診断した順番
PositionTargetで指定した挿入箇所をNoで表したもの
Payload挿入した診断値
Status code応答したステータスコード200以外のステータスコードがあるか
Errorリクエスト時のエラー有無
Redirects followedリダイレクトが発生した数
Timeoutレスポンスのタイムアウト有無
Lengthレスポンスのbyte数一脱した長さのレスポンスがあるか

これより右側は「Options」の「Grep – Match」で設定した文字列が含まれているかが確認できます。

含まれている場合は下図のようにフラグが立ちます。

対象のレスポンスを見ると、設定した「error」という文字が含まれていることがわります。

Intruderの活用例

Intruderは本当に多用途です!

ブルートフォース攻撃
ログインページに対して大量のパスワードを試す

IDOR(不適切なオブジェクト参照)検出
商品IDやユーザーIDを連番で試して、不正アクセスができないか確認

SQLインジェクションの発見
大量の異常入力をぶつけてエラー反応を探す

入力フィルタの突破
禁止ワードリストを大量に試してバイパス可能か調べる

まさに、攻撃の幅が一気に広がるツールです!


ちょっとした注意点

  • 大量リクエストを送るので、ターゲットに負荷をかけやすいです。
  • 診断対象システム以外に攻撃しないよう、必ず許可を得た環境で使いましょう
  • パターン数によっては、長時間かかることもあります。

本番サイトへの無断攻撃は絶対NGです!


まとめ

  • Intruderはリクエストを大量に自動送信できる攻撃用モジュール!
  • ターゲット(Positions)、攻撃タイプ(Attack Type)、ペイロード(Payload)を設定して攻撃を開始
  • ブルートフォース、IDOR発見、フィルタバイパス、SQLi検査などに大活躍!
  • 診断には必ず許可を取った環境で使おう!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です