BurpSuiteの使い方 ②通信の書き換え編

こんにちは、ヒロセです。

この記事では、Webアプリケーションのセキュリティ診断に使用されるローカルプロキシツール「Burp Suite」の基本的な使い方について記載します。

今回は、HTTP通信の書き換えについて記載します。前回(BurpSuiteの使い方 ①初期設定編)の記事はこちら。

以下の方に向けて記載しています。

脆弱性診断に興味がある人
自分で自身のサイトを簡易診断したい人
Burp Suiteの基本的な使い方を学びたい人

※なお、本記事の内容を自身の管理するサイト以外で絶対に行わないでください。不正アクセスとみなされる場合があります。


やられサイトをダウンロードする

脆弱性診断は、診断を許可されたサイトもしくは自身で管理するサイト以外にしてはいけません。
そのため、ローカル環境に自由に診断できるやられサイトをダウンロードしましょう。

以下のサイトからjarファイルをダウンロードします。
https://github.com/ankokuty/HakoniwaBadStore

GitHubのリポジトリ画面。ダークモードでファイル一覧やコミット履歴、Aboutセクションが表示されている画面

「ここ」をクリックします。

GitHubのREADME画面。ダウンロードセクションのリンクが赤枠で強調表示されている画面

「Hakoniwa.BadStore.jar」ファイルをダウンロードします。

GitHubのリリースページ。バージョン1.1のリリースノートとダウンロード用のAssetsリンクが赤枠で強調表示されている画面

やられサイトをローカルで動作させる

Burp Suiteの「Extender」タブを選択し、「Add」をクリックします。

Burp Suiteの脆弱性診断ツール画面。Body Repeaterのタブでリクエスト送信用の設定項目が表示された画面

Extension typeは「Java」を選択、「Select file」をクリックし、先ほどダウンロードした「Hakoniwa.BadStore.jar」ファイルを選択します。

Burp SuiteのExtension読み込み画面。Extension typeでJavaを選択し、Select fileボタンが赤枠で強調表示されている画面

「Hakoniwa BadStore」が追加されていることを確認できます。

Burp SuiteのExtensions画面。Hakoniwa BadStore拡張機能が読み込まれ、詳細情報とともに一覧上で赤枠で強調表示されている画面

新たに追加された「BadStore」タブを選択し、左側の「Port」に使用していないポート番号を設定します。

「Stopped」ボタンを押下して、「Running」状態にします。これで、ローカル環境にやられサイトを構築できました。

Burp SuiteのBadStoreタブ画面。Port 8888、Stoppedボタン、BadStoreタブが赤枠で強調表示されている画面

ブラウザからやられサイトにアクセスする

上記で構築したやられサイトは、IPアドレスとポート番号を指定することでアクセスできます。

「Running」状態にした後の右側のアドレスに、やられサイトのアドレスが表示されているのでアクセスしてみます。

Burp SuiteのBadStoreタブ画面。RunningステータスとアクセスURL(https://127.0.0.1:8888/)が赤枠で強調表示されている画面

やられサイト「BadStore」にアクセスできました。

BadStore.netの脆弱性診断練習用サイト。127.0.0.1:8888にアクセスしたトップページで、商品検索やログインなどのメニューが表示されている画面

HTTP通信の書き換え

では、実際にHTTP通信の書き換えをしてみましょう。

「Burp Suite」の「Proxy」タブの「Intercept」を選択し、「Intercept is on」をクリックして通信をキャプチャできる状態にします。

Burp SuiteのProxy Interceptタブ画面。Proxyタブ、Interceptタブ、「Intercept is on」ボタンが赤枠で強調表示されている画面

その状態で通信を発生させると、本来サーバに送られるリクエストを一時停止し通信内容を確認することができます。

下記は、「Bad Store」の検索欄に「test」を入力しその通信内容をキャプチャした様子です。

Burp SuiteのInterceptで捕捉したHTTPリクエスト。searchqueryパラメータにtestを含むGETリクエストのRaw表示画面

「intercept is on」の状態にし、キャプチャした通信は直接書き換えることで、通信内容を編集することができます。
ここでは、「test」を「testtest」に書き換えています。書き換えが完了したら、「Forward」ボタンで、書き換えた通信をサーバに送信します。

Burp SuiteのInterceptで捕捉したリクエスト改変画面。searchqueryパラメータをtesttestに書き換え、Forwardボタンが赤枠で強調表示されている画面

「HTTP history」タブから編集した通信を確認します。
編集した通信を探す場合は、「Edited」にチェックがついている通信を探してください。

Burp SuiteのHTTP historyタブ画面。改変されたリクエストがEditedとして記録され、Original requestとResponseの詳細が表示された画面

「Edited request」を選択すると、編集した通信を確認できます。

Burp SuiteのHTTP historyタブ画面。Edited requestに書き換え後のsearchquery=testtestが表示され、対応するレスポンス内容が確認できる画面

まとめ

今回は「Burp Suite」の、Proxy機能を使った通信の書き換えについて説明しました。
この機能を使用することで、ブラウザからでは入力できない通信なども書き換えて送信することができます。
次回は、検査したいリクエストを繰り返し送信することができるRepeater機能について説明します。