セキュリティあれこれ

セキュリティ関連のメモ

burp マクロ機能の使い方(2)

前回記事 の続きです。 Burp のマクロ機能の設定時に工夫が必要な CSRF トークンなどセッションハンドリング方法になります。

はじめに

Portswigger の Web Security Academy の ログイン箇所で CSRF トークンを利用しているので、ログイン画面 —> 診断リクエスト ->ログイン後のトップページ でマクロ機能を利用する場合を例に

ログイン画面

Run a macro を利用して、ログイン画面の HTTP レスポンスにある CSRF トークン(csrfパラメータ)を診断リクエストに渡します。

<ログイン画面>

<ログイン画面の HTTP レスポンス>

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Connection: close
Content-Length: 3352

〜省略〜

<form class=login-form method=POST action=/login>
                            <input required type="hidden" name="csrf" value="KIP62x2DxdfY5ORTexQhMcQ9mHPreVX1">

診断リクエスト(Log in クリック時の HTTP リクエスト)

ログイン画面の HTTP レスポンスから CSRF トークン(csrf パラメータ)を受け取って、HTTP リクエストを送信しています。

Log in 押下時の HTTP レスポンス>

POST /login HTTP/1.1

~省略~

csrf=lFdh6C950nXaUBt0pftSqr8L9E5pWIeK&username=wiener&password=peter

ログイン後のトップページ

Run a post-request macro を利用して、ログイン後のページが正常に表示されるか確認します。

<ログイン後のトップページ画面>

マクロ機能の設定方法

Project options - Sessions をクリックします。

Session Handling RulesAdd をクリックします。

Scope タブで下記を設定します。

  • Tools Scope

    • Intruder、Sacnner、Repeater、Extender などマクロ機能を利用するツールをチェックします。
  • URL Scope

    • 診断対象のURLを入力します。
    • この URL の HTTP リクエスト時にマクロ機能が動作します。

Details タブで Rule Description に任意の命名を入力します。Add から Run a macro をクリックします。

Add をクリックします。

Re-record macro をクリックします。

マクロ機能で送信したい HTTP リクエストを選択して、OK をクリックします。事前に、HTTP history で色を変えておくと探すのが楽です。

Configure item をクリックします。

Add をクリックします。

下記を設定して OK をクリックします。

  • Parameter name
    • 診断リクエストのトークンパラメータ名を入力します。
    • 今回の場合だと csrf になります。
  • Define start and end
    • 診断リクエストのトークンパラメータに代入したい箇所を指定します。
    • 画面上の HTTP レスポンスから代入したい箇所をダブルクリックすると、Start afert expressionEnd at delimiter正規表現が自動的に入力されます。

Add から Run a post-request macro をクリックします。

Add をクリックします。

Re-record macro をクリックします。

マクロ機能で送信したい HTTP リクエストを選択して、OK をクリックします。事前に、HTTP history で色を変えておくと探すのが楽です。

OK をクリックして設定画面を閉じます。

マクロ機能の動作テスト

設定したマクロ機能の動作テストを行います。

Proxy から診断対象の URL を右クリックして、Send to Repeater をクリックします。

Repeater タブで Send をクリックしてマクロの動作テストを行います。 Run a post-request macro が実行され、ログイン後のトップページが正常に表示されていることを確認できます。

Logger++ を利用すると、HTTP リクエストの履歴を確認できるので詳細を確認します。Repeater からマクロ機能で3つの HTTP リクエストが送信されていることがわかります。

Run a macro を利用して、ログイン画面の HTTP レスポンスにある CSRF トークン(csrfパラメータ)を取得しています。

ログイン画面の HTTP レスポンスから受け取った CSRF トークン(csrf パラメータ)を受け取って HTTP リクエストを送信しています。

Run a post-request macro を利用して、ログイン後のページが正常に表示されています。