Burp Intruder機能あれこれ

# 目的
BurpのIntruder機能について、復習がてらまとめてみようと思います。

記事は自身で作成したサイトに対し行っています。
**絶対に他者の環境に対して行わないでください。行う場合は自身で環境を用意しましょう。**
# 使用ツール
Burp Suite Professional Java版 Ver2023.11.1.3

PortSwagger Burpについては公式ページを参考ください。
https://portswigger.net/burp
# 基本編
Intruderの基本的な使い方はリクエストパラメータに一定の値を挿入し、脆弱性がないか調べるという使い方となります。
説明だけだと難しいので流れで説明していきます。

1. Burpを起動しProxyタブを開きます。
1. 対象を右クリックし、Send To Intruderを行いIntruderタブへ登録します。
　（もしくはCtrl+I）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/3a9cca53-a8e7-dee2-67e5-22e2308078ba.png)
1. Intruderタブを開き、変更したいリクエストパラメータを範囲選択、ADDをクリックします。
今回の例では_tokenパラメータの値を範囲選択しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/ea1db137-82dd-3347-91d0-5997fc6b8df5.png)
※パラメータ全体を変更したい場合は、メニューのIntruder > Automatic payload positions から、Replace base parameter valueを、パラメータの末尾に別のパラメータを追加したい場合はAppend to base parameter valueを選択してください。
1. 範囲選択ができたら、変更先のパラメータをPayloadsタブで登録します。
1. Payload settings[Simple list]に変更先パラメータを入力し、ADDを押下します。
今回の例ではnullという値を入力しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/8f230790-a8cb-ae32-00e0-3fd21fff011b.png)
1. 登録できたら、Postionsタブに戻り、Start attackを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/c0ca58b9-e9f6-8d1f-4db3-dd8038e31584.png)
1. そうすると、_tokenの値がnullに変更され送信されたことが分かります。
通常時の値（正常値）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/8268c487-1ad1-ceee-53c4-a837ecdcafe3.png)
変更後の値
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/164a2146-5434-2ce2-6a96-5f43cd1a4acb.png)

Payload settings[Simple list]に登録する値を増やすことで様々な値を連続して送信することができます。
また、ファイルからlistを読み込むこともできるので、よく使うパラメータはファイルとして所持しておくのもいいかもしれません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/67761bfd-3fac-982e-cc88-2f00f2bfd085.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/9c1b0b1f-89bd-279d-1c1a-21b03f5cfab7.png)

# 応用編
ここまでは基本的な使い方でした。
設定方法によって様々な使い方ができます。
いくつか記載します。
## Attack typeの設定による送信
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/a110a59e-1cbf-d2ba-d437-3ec8f06d7678.png)
### Sniper
基本編で説明したPayloadを1つまたは複数設定し送信する方法です。
### Battering ram
Sniperとの違いは、複数パラメータを設定した場合、同時にPayloadを設定し送信します。
・Sniperの場合
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/2a654499-657c-7057-797e-754543c8599c.png)
・Battering ramの場合
※_tokenとnameというパラメータに同時にnullを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/95f9890a-faa2-02f8-7b83-5a113bcb0213.png)
### Pitchfork
複数パラメータを設定した場合、それぞれに別のパラメータを同時に送信します。
Payloads設定に、Payload setを使用し設定します。
例えば、payload set[1]にnull、payload set[2]に'nullを設定した場合、_tokeにnullを、nameに'nullを設定し同時に送信します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/dd1b7c3d-125d-a15b-a65f-f99c1e7feabd.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/2449583c-cbf0-1b31-be1b-94740b196ea8.png)

### Cluster bomb
複数のパラメータに異なるPayload setを順番に実行します。各セットのPayloadを順番に配置し、すべてのPayloadの組み合わせを送信します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/f40e7aff-8980-20bf-8b5a-05e582d84b0d.png)

## Payload setの設定による送信
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/7454d332-fbd5-1fba-6c0d-4770a0f11525.png)
### Simple list
基本編で説明したListに沿ってパラメータを変更していく方法です。
### Runtime file
非常に大きなペイロードリストを実行する際に、RuntimeFileから値を読み込んで使用することができます。
実行時に1行1行読み込まれるため、メモリへの負荷をさげることができます。
※私自身は使用したことはありません。
### Custom iterator
一定の規則によってパラメータを書き換えたいときに使用します。
例えば以下の場合Payload SettingsのPosition[1]にAとB、Postion[2]にAとBとCを設定することで自動でパラメータを生成、セットしてくれます。
送信パラメータ：AA,BA,AB,BB,AC,BC（=AA,AB,AC,BA,BB,BC）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/6ce7d2d3-fcec-47aa-7ea7-a0feab78c905.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/fb6cd81d-0771-3a4a-bb07-6e22a2f76187.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666267/797f31c5-adb4-8c22-14e2-f2c5d686e7d4.png)

### Null payloads
パラメータを設定せずに送信します。ResourcePoolとの組み合わせで応答時間の確認やレースコンディションの確認に使用します。

# 最後に
他にも様々な使い方がありますので、公式ページも参考にしてみてください。
よいクリスマスを。
https://portswigger.net/burp/documentation/desktop/tools/intruder