CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
みなさん、こんにちは。 エンジニアをしております、三雲と申します。
普段は初心者エンジニアに Web セキュリティについて教えることがあります。
ウェブセキュリティの分野は徳丸本(安全なWebアプリケーションの作り方 第2版)をオススメしております。
今回も初心者の気持ちで徳丸本を読んで、気になった部分について確認していきたいと思います。
前回は実習環境を準備したので、さっそく実習環境を活用しながら本の内容を実習していきたいと思います。
今回は p.44 ~ p.72 の範囲を中心に、初めて使う方もいらっしゃるであろう「OWASP ZAP」ツールを使ってみたいと思います。
テーマは「OWASP ZAP を使ってフォーム入力情報を書き換えてみよう」です。
せっかくですので私も初心に戻り、新人エンジニアやこれからエンジニアを目指している方の「Webセキュリティは大事なので改めて勉強してみよう!」という視点で、分かりやすい記事になればと思います。 どうぞよろしくお願いいたします。
まずは、前回用意した実習環境を起動してみましょう。
これで Firefox に wasbook 実習環境の「目次」ページが表示されます。
OWASP ZAP には徳丸本に書いてあるように、通信の内容が表示されます。
おや??通信が全く表示されません...
Firefox ではちゃんと目次ページが読み込めているのに、これは何か設定を間違えているのかもしれません。
原因は Firefox の FoxyProxy Standard プラグインを、普段使いのときに「オフ」にしていたことが原因でした。
下記のように「パターンごとにオン」に設定し直すと表示されました。
実習環境以外でも Firefox を使っていると FoxyProxy Standard プラグインをいつの間にかオフにして忘れてしまっている場合があります。
実習環境を使用時には FoxyProxy Standard プラグイン設定も改めて確認してみてください。
さて、これで実習できるようになったと思ったのですが、今度は Firefox 側に問題が発生しました。 http://example.jp/ にアクセスすると警告が表示されるようになってしまいました。
よくみると http:// が https:// に書き換わっています。いわゆる HTTPS リダイレクトされている状態です。
そこで、著者である徳丸先生のサポートサイト内の情報と、出版社のサポート情報ページを確認してみました。
サポートサイト: OWASP ZAPのバージョン 2.8.0 以降でエラー表示になる場合
https://wasbook.org/owaspzap_2.8.0.html
出版社: OWASP ZAPの新バージョン 2.8.0 でエラー表示になる場合の対処方法
https://www.sbcr.jp/support/15210/
どうやら OWASP ZAP の新しいバージョンでは、追加で設定が必要になったようです。
[オプション] - [HUD] - [Enable when using the ZAP Desktop] のチェックを外すと良いようです。
これで目次ページが無事表示されました。
徳丸先生のサポートサイトや出版社のサポート情報ページで追加情報が公開されていることがありますので、困ったときには確認してみてください。
OWASP ZAP 2.12.0 以降では、動作させるために Java 11 以降が必要となりました。
OWASP ZAP のバージョンアップを行ったり、最新版をインストールされた際にエラーになった場合、まずは Java のバージョンを確認してください。
下記は、Windows で確認したところ Java 8 だった例です。
C:\> java --version
java version "1.8.0_351"
Java(TM) SE Runtime Environment (build 1.8.0_351-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.351-b10, mixed mode)
この場合は Java 11 以降のバージョンに更新する必要があります。
ただし、Oracle からは Java の実行環境である JRE はバージョン 11 以降のものが提供されていません。
JDK と呼ばれる開発ツール内に JRE が同梱されていますので、初心者の方はこちらをインストールしてみてください。
Java 11 以降が必要なので、よくわからない方は LTS (長期サポート版)の最新版である Java SE Development Kit 17 を選んでください。
Java SE Development Kit 17 https://www.oracle.com/java/technologies/downloads/#java17
ほかにも OpenJDK からビルドされた JRE を使用する方法もありますし、JRE を指定する方法もあります。
Java 動作環境まわりに詳しい方はこちらの方法でも動作させることが可能です。
さっそく徳丸本 p.54 ~ に書かれている OWASP ZAP でフォーム書き換えを試してみたいと思います。
目次ページから「3.1 HTTPとセッション管理」 -「31-002:入力-確認-登録」のリンクをたどると便利です。
入力ページから確認ページに遷移すると、
当然、入力されたとおりになっています。
ここで OWASP ZAP でフォーム入力情報を書き換えてみます。
まず、OWASP ZAP の「全リクエストにブレークポイントをセット」ボタンを押します。
次に、Firefox で先程の入力ページでフォームに入力して確認ボタンを押します。
初回では下記のようなダイアログが表示されることがありますが、「OK」を押してください。
すると、OWASP ZAP 側でフォームの入力が変更できるようになるので、ちょっと書き換えてみます。
書き換えたので、「サブミットして次のブレークポイントへ移動」ボタンを押して Web サーバーへ送信します。
OWASP ZAP の書き換えた状態のデータに書き換わりました。
メールアドレスは無効なメールアドレスになっています。
性別は選択肢にないものに書き換わっています。
名前にいたっては SQL インジェクション攻撃を仕掛けようとしています。
このように、JavaScript など使用して、ブラウザ側で入力された値をチェックしているから安全だということは決してないことがわかりました。
また、ブラウザ側では普通に入力しているのに、途中の経路で書き換えられる可能性もあることもわかりました。
つまり、Web サーバー側は入力された情報を原則信用してはだめだということがわかります。
頭ではわかっていても、実際に動かして確認してみると、結構衝撃があります。
改めて気をつけましょう!
徳丸本のコラムが好きなのでご紹介します。
クッキーの Domain 指定の中で「クッキーモンスターバグ」というものがあります。
名前のインパクトもすごいのですが、他サイトのクッキーに影響を与えることができる内容のインパクトのあるバグです。現在は修正されているようです。
書籍の p.71 に書いてありますので、ぜひ読んでみてください。
OWASP ZAP というツールを初めて使ってみることになった方が多いかと思いますが、はじめは新しいツールは慣れないものです。
私もせっかくの実習環境を活用して OWASP ZAP を色々と試し慣れていきました。
徳丸本に OWASP ZAP での実習項目がでてきましたら、どんどん試して慣れていきましょう!
今回のコラムはいかがでしたでしょうか?
ウェブセキュリティを短期間で正しく理解するにはウェブセキュリティ研修が有効です。
興味がある方は以下の研修ページをご覧の上、是非ご受講ください。
https://www.school.ctc-g.co.jp/websecurity/
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes