SST連載・解説記事

  1. HOMEHOME
  2. SSTコラムSSTコラム
  3. SSTなるほど!コーナー
  4. 01 HTTP通信の中身を覗いてみよう!Burp Suite Free Edition 1.6編【前編】

(2015年4月23日公開)

HTTP通信の中身を覗いてみよう!Burp Suite Free Edition 1.6編【前編】

 HTTPプロキシ, リクエスト, 脆弱性確認, HTTP通信, Burp, 使い方, インストール 

はじめに

SSTではWebアプリケーションの脆弱性診断サービス(Webアプリケーション診断)を提供しており、診断時には診断対象のWebアプリケーションに対して擬似的な攻撃リクエストを送信し、SQLインジェクションやXSSに代表されるような脆弱性の有無を確認します。確認した結果、脆弱性があればその再現方法を報告書に記載し、お客様に報告しています。

報告書の内容について、お客様から「脆弱性の再現方法が分からない」というお問い合わせを頂くことがあります。脆弱性を手元で再現するためには、単にブラウザのアドレスバーに表示されるURLを書き換えるだけでなく、HTTP通信の中身について書き換えないと脆弱性の確認ができないこともあります。診断員は「HTTPプロキシ」と呼ばれるソフトウェアを使い、HTTP通信を改ざんして脆弱性を確認しています。


HTTPプロキシイメージ図

そこで今回から、「HTTPプロキシ」と呼ばれるソフトウェアの使い方を何回かに分けて紹介していきます。HTTPプロキシを用いることで、普段は意識しないHTTP通信内容を実際に目で見て確認し、さらにリクエストやレスポンスを書き換えることが可能となります。開発スキルの向上とともに、報告書に記載されている脆弱性の発生状況をお手元でご確認頂くことができるようになります。

なお、紹介していくHTTPプロキシはいずれも無料で、日本国内でも実際に脆弱性診断の現場で使われているソフトウェアを紹介していきます。

環境は以下を前提としています。

Windows8.1日本語版
Internet Explorer 11

Burp Suite Free Editionについて

最初に紹介するのはBurp Suite Free Edition (2015年4月現在、v1.6:以下、Burp)で、弊社を含めWebアプリケーションの脆弱性診断の現場で広く使われているソフトウェアです。メニューやユーザインターフェースが英語ですが、HTTP通信を確認し、改ざんするだけであれば難しい英語を読みこなす必要はありません。無料版(Free Edition)と有料版(Professional Edition)の二種類があります。有料版を購入すると、脆弱性診断サービスで必要とされるパワフルなスキャン機能などが使えるようになります。今回紹介するのは無料版ですが、HTTP通信を確認し、改ざんするProxy機能が利用できます。報告書の手順を再現するだけであれば、無料版で利用できます。

Burpのインストール

Burpを動かすためにはまずJavaのインストールが必要です。下記サイトの説明にしたがい、Javaをインストールしてください。

Java公式サイト:https://java.com/

Javaのインストール後、続いてBurp Suite Free Editionをダウンロードします。開発販売元PortSwigger社サイトから、Free Editionをダウンロードします。

Port Swigger Web Security:http://portswigger.net/burp/download.html

「burpsuite_free_v1.6.jar」をダウンロード

ダウンロードが完了したら、「burpsuite_free_v1.6.jar」のファイルをダブルクリックします。初めて起動するときはライセンスの同意確認画面が表示されます。「I Accept」ボタンをクリックするとBurpが起動します。起動に成功すると、以下のようなウインドウが表示されます。


Brupイメージ図01

「Proxy」タブ→「Options」タブを表示

HTTPプロキシが正常に起動していれば、「Proxy Listeners」のプロキシの一覧で「Running」の列にチェックマークが表示されます。以下のように、チェックマークが表示されなければHTTPプロキシの起動に失敗している可能性があります。


Brupイメージ図02

「Running」のチェックボックスをクリックすると手動でHTTPプロキシをON/OFFすることが出来ます。もし起動していなければ、まずクリックしてみて起動を試みます。なにかエラーがあれば、「Alerts」タブが強調表示され、そこにエラーメッセージが表示されます。以下の例では、すでに開発用のApache HTTPDサーバが8080番で起動していたため、同じポート番号を使うHTTPプロキシの起動に失敗している場合のエラーメッセージです。


Brupイメージ図03

それでは早速、WebブラウザにBurpをHTTPプロキシとして設定し、HTTP通信を見てみましょう。

Internet ExplorerでHTTPプロキシを設定する

Internet ExplorerでBurpをHTTPプロキシに設定します。今回の説明ではWindows 8.1日本語版のInternet Explorer 11を使います。

1.Internet Explorerを起動し、歯車のアイコンをクリック

Brupイメージ図04

2.メニューが表示されたら「インターネット オプション」→「接続」タブ→「LANの設定」ボタンを順にクリック

・「プロキシ サーバー」の「LANにプロキシサーバーを使用する」にチェック
・「アドレス」欄には「localhost」と入力
・「ポート」欄には「8080」とそれぞれ半角英数で入力

→「OK」をクリック→「インターネット オプション」に戻ったら「OK」をクリック

Brupイメージ図05

これでInternet ExplorerにBurpをプロキシとして設定できました。それでは実際にHTTP通信を行い、その通信内容を確認してみましょう。

3.アドレスバーに以下のURLを入力し、アクセスします。

参考サイト:http://www.example.com/

Burpの画面を確認します。もし以下のように「Proxy」タブの「Intercept」タブが表示され、HTTPリクエストが表示されていればプロキシ設定は成功しています。上記URLへのリクエストでなくとも、何かしらのhttp://で始まるURLのアクセスが確認できれば成功しています。


Brupイメージ図06

このままでは、BurpがHTTPリクエストを途中でせき止めている状態のため、Webブラウザがタイムアウトしてしまいます。「Intercept is on」ボタンをクリックして、Intercept機能をOFFにします。Intercept機能はHTTPリクエストを途中でせき止め、好きなように編集してから、本来のサーバに送ることが出来ます。診断員はこの機能を用いて、擬似攻撃リクエストを送り脆弱性を確認しています。改ざん時の設定方法や注意点については後述します。

4.Intercept機能がOFFの状態なら、そのまま「Proxy」→「HTTP hisotry」タブを表示

このタブには、BurpがやりとりしたHTTP通信のログが表示されます。http://www.example.com/のHTTPログがあれば、プロキシ設定に成功しています。「HTTP history」画面は上半分がHTTP通信の一覧で、下半分に選択したHTTP通信のデータが表示されます。「Request」タブではHTTPリクエストの内容が、「Response」タブではHTTPレスポンスの内容が表示されます。


Brupイメージ図07

さらに、Webブラウザで http://www.example.com/ が正常に表示されていることを確認して下さい。以下は執筆時点での正常に表示された画面です。


Brupイメージ図08

5.Burpを終了したら、Internet ExplorerからもHTTPプロキシ設定を無効化します。

歯車アイコンをクリック→「インターネット オプション」→「接続」タブ→「LANの設定」をクリック→「プロキシサーバー」の「LANにプロキシサーバーを使用する」のチェックを外す→「OK」をクリック

ここまでで平文のHTTP通信の確認方法を紹介してきました。 セキュリティ検査で使われているHTTPプロキシは、暗号化されたHTTPS通信の中も確認することができます。Burpでも可能ですが、追加の手順が必要です。

まとめ

前編では以下の内容を説明しました。これらができるようになれば、HTTP通信をBurpで確認することが可能となります。

・Burp Suite Free Editionのインストール
・Internet ExplorerでのHTTPプロキシの設定方法

後編ではHTTPS通信の中を確認するための追加の手順や、実際に手元でリクエストを改ざんする方法を説明します。

今までのコラム

Webセキュリティをざっくり理解するための3つのMAP

Page Top