企業とホワイトハッカーを結ぶ 日本初のバグ報奨金プラットフォーム BugBounty.jp

サイバーセキュリティエンジニアブログ

bugbounty.jp

ホワイトハッカー入門

Webアプリケーションへの入力値を操作しよう

Nov 14, 2016 08:00 by 角田 朱生

第4回目はHTTPのリクエスト書き換えによる、Webアプリケーションへの入力値操作を説明します。

ブラックボックスでの脆弱性調査における「入力値」は、Webクライアント上からキーボード入力する値だけではありません。HTTPのリクエストに含まれるパスやパラメーター、ヘッダーの値全てが、Webアプリケーションで入力値として処理される可能性があります。そのためリクエストの内容を直接書き換えなければ、充分な調査は行えません。

HTTP通信を書き換えるツール

そこで「Burp Suite」を使います。これはWebクライアントとWebサーバー間の通信に介入し、通信内容の参照や書き換えが行えるツールです。

図1. HTTP通信に介入するBurp Suite

Burp SuiteにはFree版とPro版があります。手動での調査であればFree版でも充分に行えるため、この連載ではFree版を用います。また、Burp Suiteの愛好家団体である「Burp Suite Japan User Group」によって、日本語のスタートアップマニュアルが提供されています。こちらを参考にダウンロードとインストール、ブラウザーでのプロキシ設定を行いましょう。

マニュアルではjarファイルからの起動方法を説明していますが、exeファイルなどのインストーラーを使えばアイコンをダブルクリックするだけで簡単に起動できます。Javaのインストールも不要なため、入門者にはインストーラーからのセットアップをおすすめします。

HTTP通信をキャプチャする

セットアップを終えたら動作確認も兼ねて、Proxy機能を使ってみましょう。マニュアルの4.1、4.2を参考に、プロキシ設定を行ったブラウザーからWebアプリケーションにアクセスして、通信をキャプチャできることを確認します。

BugBounty.jpではプラットフォーム自身をバグバウンティの対象としており、脆弱性調査用の検証環境を公開しています。今回はそこにアクセスして通信をキャプチャしてみましょう。検証環境のURLは以下です。

https://pt.bugbounty.jp/

※ ドメインが「pt.bugbounty.jp」のサイトが検証環境です。

図2. BugBounty.jpにアクセスした際の通信

このサイトはHTTPSで提供されているため、アクセスした際にブラウザー上でセキュリティ警告画面が表示されると思います。マニュアルの4.3.3を参考に、Burp Suiteが発行したCA証明書をインポートしてください。また、起動時はインターセプトが有効になっており、Burp Suiteによって通信が止められている状態です。[Proxy]-[Intercept]の[Intercept is on]をクリックして[Intercept is off]にすることで、通信が流れて図2のようにキャプチャできます。

HTTP通信を書き換える

キャプチャしたリクエストを見ると、様々な数値や文字を送信しているのがわかると思います。マニュアルの4.2.2を参考に、これらの値を書き換えてみましょう。

プログラム一覧画面から検索を行った際のリクエストでは、ブラウザー上から入力したフリーワード以外にもパラメーターで値を送信しています。このリクエストをインターセプトして、パラメーター「prize_point」の値を以下の図のように書き換えて送信します。

※ 本番環境である「bugbounty.jp」のサイトでは行わないようにしましょう。

図3. 検索時のリクエストを書き換え

この操作により「報酬形態に不正な値が指定されています」というエラーメッセージが表示されます。予期しない値が入力された場合はエラーとしているのでしょう。

しかし、このパターンを試しただけでバグは無いと判断するのは惜しいです。記号を入力したら?もっと大きな数値を入力したら?マイナスの値は?小数点の値は?など、バグを見つけ出すには他にも試すべきパターンがあります。いくつものパターンを試す際に毎回ブラウザーから操作を行い、インターセプトして書き換えるのでは手間がかかります。

リクエストを再送信する

そこでRepeater機能が役立ちます。これはBurp Suiteからリクエストを再送信できる機能です。マニュアルの4.3.1を参考に、先ほどのリクエストを[Proxy]-[HTTP history]から選択して再送信してみましょう。

図4. 検索時のリクエストを再送信

レスポンスを見ると先ほどのエラーメッセージは含まれておらず、302 Foundが返ってきています。このサイトではエラーが発生した場合、リダイレクトを挟んでエラーメッセージを表示しているようです。リダイレクト後のレスポンスを確認したい場合は、[Repeater]メニュー-[Follow redirections]から[On-site only]または[Always]を選択します。Scope設定(マニュアル 4.3.2)を行なっている場合は[In-scope only]を選択しても構いません。

図5. Repeater機能の[Follow redirections]を設定

Repeater機能を使えばブラウザーを介さずに入力値を操作できるため、調査時間を短縮できます。バグバウンティでは他のハッカーより先に脆弱性を見つけなければならないため、このような機能を活用して効率よく調査を行いましょう。

この他にもBurp Suiteには脆弱性調査に役立つ様々な機能があります。その一つであるIntruder機能(マニュアル 4.3.6)は、短時間で大量のパターンを機械的に試すことができる機能です。このような機能はサーバー側の処理に負荷をかけてしまう恐れがあります。より効率的な調査が可能であったとしてもルールを無視してはいけません。

Proxy機能とRepeater機能を使えば大抵の脆弱性は見つけられます。これで準備は整いました。

次回からはWebアプリケーションの様々な脆弱性を取り上げ、その見つけ方を紹介していきます。

この記事をシェアしませんか?

  • 0

この記事のライター

角田 朱生

角田 朱生

同じカテゴリーの記事