第2回 リクエストをいじれば脆弱性の仕組みが見えるのだ!


杉山 俊春
株式会社ユービーセキュア
技術本部 テクニカルサービス部
セキュアオーディットコンサルタント
2007/10/26
(Illustrated by はるぷ)

第1回でHTTPを実際に体感したクウ。ブラウザが隠してくれていた作業を手で行うことで、エンジニアの魂に火がつき、好奇心はもう止められないようです。Webの基本、HTTPをひもとく、クウの長い長い探求の道、第2回をお送りします(編集部)

 telnetでリクエストを打つのは面倒……


クウ 「うーん。めんどくさい……」

 ジュンさんにWebアプリエンジニアとして重要な基礎、HTTPのしくみを教えてもらったクウは、引き続きHTTPと格闘中だ。

 クウはジュンさんに教わったとおりtelnetを使ってHTTPを勉強していた。しかし、telnetで静的ファイルの閲覧などは比較的簡単にできるのだが、肝心のWebアプリケーションの閲覧を行うには非常に面倒であった。

ユウヤ 「どうしたの?」
クウ 「HTTPの勉強しようと思ったんだけど、コマンドをいちいち打ち込むの大変なんだよね……」
ユウヤ 「なんかそういうの、簡単にできるツールあるんじゃないの?」
クウ 「ああ、そうか。よく考えたらそういうのありそうだね。ちょっと探してみよっと」
ユウヤ 「まあ、それはいいとしてだ。昨日頼んでおいた資料ってどうなった?」
クウ 「ああっ。ごめん! 共有サーバに置いたって伝えるの忘れてた……」


 HTTPリクエスト書き換えツール、いったい何をやってるの?

 クウが調べたところ、telnetで行ったように最初から全部HTTPリクエストを打ち込むのではなく、ブラウザが送信するHTTPリクエストを直接書き換えるツールというものをいくつか見つけることができた。

 上記ツールでは、HTTP通信をツールで取得するためにブラウザのプロキシ設定で、ツールが待ち受けているアドレス・ポートを指定させ、プロキシのように振る舞いつつ、通信内容を書き換えることができる。

図1 HTTP通信の書き換えを行うツールの仕組みの概要

クウ 「なるほど……。途中で捕まえて書き換えられるのか。けど、HTTPSとか暗号化されているけどできるのかな?【注1】 まあ、やってみれば分かるか」

【注1】
telnetでもHTTPS通信はできない。telnetでHTTPS通信を行う場合にはOpenSSLなどを利用することになる。

 HTTPSの通信を行う場合、間に介在するツールが通常のプロキシとして動作するが、当然暗号化がなされているために通信内容の書き換えはもちろん、閲覧も行うことができない。そこで、これらのツールでは、クライアントに対してツール自らの証明書を提示し【注2】、クライアントとツールの間で通信を行い、通信内容を取得する。そのうえで取得した内容を書き換え、Webサーバに対してクライアントのように振る舞う。

 このようにしてHTTP、HTTPSのいずれかにかかわらず、通信内容を容易に書き換えることが可能となる。

【注2】
ツールの証明書を提示するため、当然ながらブラウザでは証明書のエラーが出ることになる。

図2 HTTPS通信の書き換えを行う場合

 クウは試しにツールをダウンロードし、使ってみることにした。

1/3

Index
リクエストをいじれば脆弱性の仕組みが見えるのだ!
Page1
telnetでリクエストを打つのは面倒……
HTTPリクエスト書き換えツール、いったい何をやってるの?
  Page2
実際にツールを使ってみよう
まずはRefererを書き換えてみる

 

Page3
HTTPリクエストを利用する変数を調べる
GET/POSTパラメータは?


もいちどイチから! HTTP基礎訓練中 連載インデックス

TechTargetジャパン

Security&Trust フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH