今回は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一覧
名前 | |
---|---|
Sniper | Positionで指定した箇所を、Payload で設定した値に1つずつ変更して送信 |
Battering ram | Positionで指定した箇所を、Payload で設定した値に全て変更して送信 |
Pitchfork | Positionで指定した箇所ごとに、Payload で値を設定して送信。name=§shin§&age=§36§&address=§chiba§があった場合、name、age、addressごとに変更するものをPayload Optionsで設定する。 |
Cluster bomb | Positionの一つを固定しながら他を変えるのを順繰り設定していく。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 | |
---|---|---|---|---|
Sniper | name=p1&pass=123 | name=p2&pass=123 | name=John&pass=p1 | name=John&pass=p2 |
Battering ram | name=p1&pass=p1 | name=p2&pass=p2 | ||
「Pitchfork」と「Cluster bomb」の場合、挿入箇所ごとにペイロードを設定する必要があります。
- 挿入箇所 name=§John§&pass=§123§
- ペイロード name: [”p1”, “p2”] pass: [”p3”, “p4”]
リクエスト1 | リクエスト2 | リクエスト3 | リクエスト4 | |
---|---|---|---|---|
Pitchfork | name=p1&pass=p3 | name=p2&pass=p4 | ||
Cluster bomb | name=p1&pass=p3 | name=p2&pass=p3 | name=p1&pass=p4 | name=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 | 診断した順番 | |
Position | Targetで指定した挿入箇所を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検査などに大活躍!
- 診断には必ず許可を取った環境で使おう!