ラボの設定手順と要件
アカウントと進行状況を保護します。このラボを実行するには、常にシークレット ブラウジング ウィンドウとラボの認証情報を使用してください。

脆弱性と修復手法を特定する

ラボ 1時間 30分 universal_currency_alt クレジット: 5 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
このコンテンツはまだモバイル デバイス向けに最適化されていません。
快適にご利用いただくには、メールで送信されたリンクを使用して、デスクトップ パソコンでアクセスしてください。
重要アイコン 重要:

パソコン / ノートパソコンのアイコン このハンズオンラボは、デスクトップまたはノートパソコンでのみ完了するようにしてください。

チェック アイコン ラボごとに 5 回までしか試行できません。

クイズのターゲット アイコン なお、最初の試行で全問正解できないことや、タスクをやり直す必要があることはよくあります。これは学習プロセスの一部です。

タイマー アイコン ラボを開始すると、タイマーを一時停止することはできません。1 時間 30 分後にラボは終了し、最初からやり直す必要があります。

ヒントアイコン 詳しくは、ラボでの技術的なヒントの資料をご覧ください。

アクティビティの概要

脆弱性を特定して修復手法を実装することは、さまざまなシステムやアプリケーションのセキュリティと安定性を確保するうえで非常に重要です。多くのアプリケーションやシステムは、個人情報、財務記録、知的財産などの機密情報を扱っています。脆弱性を特定することで、この機密データを不正アクセスや潜在的な侵害から保護できます。通常、開発プロセスの早い段階で脆弱性に対処する方が、後でセキュリティ侵害に対処するよりも費用対効果が高くなります。そもそも、脆弱性を修復する費用は、脆弱性を防止する費用よりもはるかに高くなることがよくあります。

セキュリティ アナリストとして、脆弱性を定期的にスキャンすることで、悪意のある攻撃の前に弱点を特定して対処し、潜在的な脅威を事前に軽減できます。アプリケーションの攻撃対象領域に関する分析情報を提供し、悪用される可能性のある経路を把握して、改善すべき重要な領域に優先順位を付けるのに役立ちます。

このラボでは、脆弱なアプリケーションをセットアップして実行する方法だけでなく、脆弱性をスキャンする方法も学びます。

シナリオ

Cymbal Bank では、法人顧客向けの新しいバンキング アプリケーションを開発しました。このアプリケーションは、新しいクラウド インフラストラクチャでホストおよびデプロイされる予定です。最高情報セキュリティ責任者(CISO)のハビエルは、このアプリケーションの顧客に向けたリリースに先がけて、セキュリティを優先したいと考えています。あなたはチームリーダーのクロエから、この新しいアプリケーションの脆弱性を特定して軽減するよう指示されました。そこで、Google Cloud の Web Security Scanner を使用して、クロスサイト スクリプティング(XSS)と呼ばれる OWASP® のウェブ アプリケーションの脆弱性上位にランクインする脆弱性について、アプリケーションをスキャンします。

方法は次のとおりです。まず、静的 IP アドレスを作成し、仮想マシンを起動します。次に、脆弱なアプリケーションをデプロイします。に、アプリケーションをセットアップして実行します。次に、アプリケーションにアクセスしてスキャンします。最後に、脆弱性を修正してアプリケーションを再スキャンします。

設定

[ラボを開始] をクリックする前に

こちらの手順をお読みください。ラボには時間制限があり、一時停止することはできません。[ラボを開始] をクリックすることでスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。

この実践ラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、以下が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントへの追加料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。左側の [ラボの詳細] パネルには、以下が表示されます。

    • 残り時間
    • [Google Cloud コンソールを開く] ボタン
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
    注: ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。
  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。新しいブラウザタブで [ログイン] ページが開きます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておくと、簡単に切り替えられます。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のGoogle Cloud ユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。[Next] をクリックします。

{{{user_0.username | "Google Cloud username"}}}

[ラボの詳細] パネルでも Google Cloud ユーザー名を確認できます。

  1. 以下の Google Cloud パスワードをコピーして、[ようこそ] ダイアログに貼り付けます。[Next] をクリックします。
{{{user_0.password | "Google Cloud password"}}}

[ラボの詳細] パネルでも Google Cloud のパスワードを確認できます。

重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  1. その後次のように進みます。
    • 利用規約に同意します。
    • 一時的なアカウントですので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルに登録しないでください。

しばらくすると、このタブで Cloud コンソールが開きます。

注: 左上にある [ナビゲーション メニュー] をクリックすると、Google Cloud のプロダクトやサービスのリストが含まれるメニューが表示されます。 ナビゲーション メニュー アイコンがハイライトされた Google Cloud コンソール メニュー

タスク 1. 仮想マシンを起動する

このタスクでは、静的 IP アドレスを作成し、脆弱性のあるアプリケーションを実行する仮想マシンを起動します。

  1. Google Cloud コンソールのタイトルバーで、[Cloud Shell をアクティブにする] アイコン(Cloud Shell をアクティブにするアイコン)をクリックします。プロンプトが表示されたら、[続行] をクリックします。
  2. 以下のコマンドを Cloud Shell にコピー入力します。
gcloud compute addresses create xss-test-ip-address --region={{{project_0.default_region | "REGION"}}}

このコマンドは、 リージョンに xss-test-ip-address という名前の静的 IP アドレスを作成します。この静的 IP は、脆弱性のあるウェブ アプリケーションのスキャンに使用されます。

  1. Enter キーを押します。

プロンプトが表示されたら、[承認] をクリックします。

  1. 以下のコマンドを Cloud Shell にコピー入力します。
gcloud compute addresses describe xss-test-ip-address \ --region={{{project_0.default_region | "REGION"}}} --format="value(address)"

このコマンドは、生成した静的 IP アドレスを返します。

  1. Enter キーを押します。
  2. 出力から IP アドレスをコピーし、メモ帳に保存します。これは後のタスクで使用します。
  3. 以下のコマンドを Cloud Shell にコピー入力します。
gcloud compute instances create xss-test-vm-instance --address=xss-test-ip-address --no-service-account \ --no-scopes --machine-type=e2-micro --zone={{{project_0.default_zone | "ZONE"}}} \ --metadata=startup-script='apt-get update; apt-get install -y python3-flask'

このコマンドは、脆弱性のあるアプリケーションを実行するための VM インスタンスを作成します。

  1. Enter キーを押します。
注: この起動スクリプトにより、ウェブ アプリケーション フレームワークであるpython-flask がインストールされます。これを使用して、シンプルな Python アプリケーションを実行します。このアプリケーションは、ウェブ アプリケーション セキュリティの一般的な脆弱性であるクロスサイト スクリプティング(XSS)の脆弱性をデモンストレーションします。

[進行状況を確認] をクリックして、このタスクが正しく完了したことを確認します。

仮想マシンを起動する

タスク 2. 脆弱なアプリケーションを設定して実行する

このタスクでは、脆弱性のあるアプリケーションのウェブ アプリケーション ファイルをダウンロードして展開し、ブラウザ内 SSH でアプリケーションをデプロイします。

まず、Web Security Scanner が脆弱性のあるアプリケーションにアクセスできるようにするファイアウォール ルールを作成します。

  1. 以下のコマンドを Cloud Shell にコピー入力します。
gcloud compute firewall-rules create enable-wss-scan \ --direction=INGRESS --priority=1000 \ --network=default --action=ALLOW \ --rules=tcp:8080 --source-ranges=0.0.0.0/0

このコマンドは、任意の送信元 IP アドレスからウェブ アプリケーションへのアクセスを許可するファイアウォール ルールを作成します。これにより、Web Security Scanner が脆弱性のあるアプリケーションにアクセスしてスキャンを実行できるようになります。

  1. Enter キーを押します。

次に、SSH 接続を使用して VM インスタンスに接続します。

  1. Google Cloud コンソールで、ナビゲーション メニューナビゲーション メニュー)をクリックします。
  2. [Compute Engine] > [VM インスタンス] を選択します。
  3. [VM インスタンス] ページの [接続] 列で、テスト インスタンスの横にある [SSH] ボタンをクリックします。

これにより、新しいウィンドウで VM インスタンスへの SSH 接続が開きます。

  1. ブラウザで SSH による VM への接続を許可するよう求めるポップアップが表示される場合は [承認] をクリックします。

次に、ウェブ アプリケーション ファイルを抽出します。

  1. 次のコマンドを SSH-in-browser ページにコピーします(Cloud Shell ではありません)。
gsutil cp gs://cloud-training/GCPSEC-ScannerAppEngine/flask_code.tar . && tar xvf flask_code.tar

このコマンドは、脆弱なウェブ アプリケーション ファイルをダウンロードして抽出します。

  1. Enter キーを押します。

  2. 最後に、次のコマンドを [ブラウザでの SSH] ページにコピーします。

python3 app.py

このコマンドでアプリケーションが起動します。

  1. Enter キーを押します。

アプリケーションが稼働中であることを示すメッセージが表示されます。

注: これは開発で使用するためにインストールされたウェブ アプリケーションであるため、構成ファイルに関連する脆弱性が存在する可能性があります。アプリケーションを公開ネットワークで使用する前にテストすることが重要です。 注: 次のタスクを実行するときは、アプリケーションが引き続き実行されるように、[ブラウザでの SSH] ページを閉じないでください。

[進行状況を確認] をクリックして、このタスクが正しく完了したことを確認します。

脆弱性のあるアプリケーションをセットアップして実行する

タスク 3. 脆弱なアプリケーションにアクセスする

このタスクでは、クロスサイト スクリプティング(XSS)と呼ばれる脆弱性についてアプリケーションをテストします。XSS の脆弱性は、ウェブブラウザに配信されるコンテンツ内の HTML コードなどの悪意のあるスクリプトによって悪用される可能性があります。

  1. アプリケーションの実行中に、新しいブラウザ ウィンドウを開きます。
  2. 以下の URL をブラウザタブにコピーし、<YOUR_EXTERNAL_IP> をタスク 1 でメモ帳に保存した VM の静的 IP アドレスに置き換えます。
http://<YOUR_EXTERNAL_IP>:8080

ウェブフォームを備えた Cymbal Bank の法人向けバンキング ポータルが表示されます。

  1. 次の HTML コード(スクリプトタグを含む)をウェブフォームにコピーします。
<script>alert('This is an XSS Injection to demonstrate one of OWASP vulnerabilities')</script>

このコードは OWASP® の脆弱性を注入します。

Cymbal Bank のデモ アプリケーションのウェブページに、クロスサイト スクリプティング スクリプトを含むウェブフォームが表示されている

  1. [投稿] をクリックします。

注入されたコードは、ブラウザにメッセージを表示しました。このアクション自体は悪意のあるものではありませんが、攻撃者は悪用可能なアプリケーションに悪意のあるコードを導入して、そこからデータを盗んだり、ユーザーのデバイスにマルウェアを植え付けたりする可能性があります。

アラート ウィンドウが開き、「This is an XSS Injection to demonstrate one of OWASP vulnerabilities」というメッセージが表示されます。

タスク 4. アプリケーションをスキャンする

このタスクでは、Web Security Scanner を使用してアプリケーションをスキャンし、脆弱性を検出します。

Web Security Scanner API を有効にする

  1. Google Cloud コンソールで、ナビゲーション メニューナビゲーション メニュー)をクリックします。
  2. [API とサービス] > [有効な API とサービス] を選択します。[API とサービス] ページが表示されます。
  3. [API とサービスの有効化] をクリックします。
  4. 検索フィールドに「Web Security Scanner」と入力し、Enter キーを押します。
  5. [Web Security Scanner API] を選択します。
  6. [有効にする] をクリックします。

次に、アプリケーションの脆弱性をスキャンします。

  1. Google Cloud コンソールで、ナビゲーション メニュー > [すべてのプロダクトを表示]ナビゲーション メニュー)をクリックします。
  2. [セキュリティ] > [Web Security Scanner] を選択します。

Web Security Scanner API が有効になっている場合は、Cloud Web Security Scanner ページにスキャン構成の詳細が表示されます。

  1. Cloud Web Security Scanner ツールバーで、[+ 新しいスキャン] をクリックします。

  2. [名前] セクションで、スキャンに「Cross-Site Scripting scan」という名前を付けます。

[開始 URL] セクションの [開始 URL 1] フィールドには、静的 IP アドレスが事前入力されているはずです。

  1. IP アドレスの末尾にコロンとポート番号 8080 を追加します。開始 URL 1 は次のようになります。
http://<YOUR_EXTERNAL_IP>:8080
  1. [開始 URL 2] を削除します(存在する場合)。
  2. [除外する URL] セクションで、[認証] が [なし] に設定され、[スケジュール] が [なし] に設定されていることを確認します。その他のフィールドはすべてそのままにします。
  3. [保存] をクリックして、スキャンを作成します。
  4. [実行] をクリックして、スキャンを開始します。
  5. [ブラウザでの SSH] ウィンドウに戻ります。

ブラウザ内 SSH ウィンドウで、Web Security Scanner が潜在的な脆弱性がないか、すべての URL を検査しているときに生成されるログを確認します。

  1. スキャンが完了したら、Google Cloud コンソールに戻ります。
注: スキャンの完了まで 5 ~ 10 分かかる場合があります。

[結果] タブにクロスサイトの脆弱性が表示され、Web Security Scanner で XSS 脆弱性を検出できることがわかります。

脆弱性は、[Security Command Center] の [脆弱性] タブでも確認できます。

[進行状況を確認] をクリックして、このタスクが正しく完了したことを確認します。

アプリケーションをスキャンする

タスク 5. 脆弱性を修復する

このタスクでは、アプリケーションの XSS 脆弱性を修復し、新しい修正を適用してアプリケーションを再実行します。

現在の脆弱性を修正するための推奨事項は、信頼されていないユーザーが提供したデータを検証してエスケープすることです。これには、対応する OWASP® ルールも示されています。

これを行うには、脆弱なアプリケーションのコードを編集して、ユーザーが提供したデータを検証およびエスケープするコード行を含めます。

  1. VM インスタンスに接続している [ブラウザでの SSH] ページに戻ります。
  2. Ctrl+C キーを押して、実行中のアプリケーションを停止します。または、ブラウザ内 SSH ウィンドウの右上にあるキーの組み合わせを送信アイコンをクリックして、CTRL + C キーの組み合わせを入力することもできます。

次に、nano エディタを使用して app.py ファイルを編集します。

  1. 次のコマンドを ブラウザでの SSH ページにコピーします。
nano app.py

このコマンドを実行すると、nano コードエディタが開きます。

  1. Enter キーを押します。

  2. XSS の脆弱性を修正するには、出力文字列変数を検証します。出力文字列は、ユーザーが指定したウェブフォーム入力の処理された出力です。

アプリケーションがユーザー入力を HTML コードとして受け入れないようにします。代わりに、ユーザー入力で指定された特殊文字をエスケープします。これを行うには、出力文字列を設定している 2 行を見つけます。

# output_string = "".join([html_escape_table.get(c, c) for c in input_string]) output_string = input_string
  1. 最初の行から # 記号を削除し、次の行の先頭に追加します(コードを適切にインデントしてください)。最終的に、次のような行になります。
@app.route('/output') def output(): output_string = "".join([html_escape_table.get(c, c) for c in input_string]) # output_string = input_string return flask.render_template("output.html", output=output_string)
  1. Ctrl+X キーで nano を終了したら、Y キーで変更を保存し、Enter キーを押して変更を保存します。
  2. 次のコマンドをコピーして、ブラウザ内 SSH ターミナルに貼り付けます。
python3 app.py

このコマンドはアプリケーションを再実行します。

  1. Enter キーを押します。

[進行状況を確認] をクリックして、このタスクが正しく完了したことを確認します。

脆弱性を修復する

タスク 6. ウェブ アプリケーションを再スキャンする

このタスクでは、アプリケーションを再スキャンして、脆弱性がないことを確認します。

  1. Google Cloud コンソールの [Cloud Web Security Scanner] ページに戻ります。
  2. [実行] をクリックしてクエリを再実行します。
注: スキャンの完了まで 5 ~ 10 分かかる場合があります。

[結果] タブに、脆弱性が検出されなかったことが示されます。

[進行状況を確認] をクリックして、このタスクが正しく完了したことを確認します。このタスクの完了が認められるには、スキャンが完了するまで待つ必要があります。

ウェブ アプリケーションを再スキャンする

まとめ

これで完了です。

このラボでは、アプリケーションの脆弱性をスキャンする実践的な経験を積みました。また、アプリケーションの脆弱性をスキャンするセキュリティ アナリストの能力の重要性についても学びました。これは、潜在的な弱点の特定と対処、リスクの管理、コンプライアンス要件の遵守、最終的には組織のアセットと評判を保護するための堅牢なセキュリティ ポスチャーの維持に不可欠です。

セキュリティのギャップを埋めて弱点に対処することで、潜在的な悪用を防ぎ、セキュリティ インシデントの影響を最小限に抑え、業界規制へのコンプライアンスを維持できます。

このラボでは、プロアクティブなサイバーセキュリティ戦略の基本的な側面の一つを完了しました。

ラボを終了する

すべてのタスクが問題なく完了したことを確認してから、ラボを終了してください。準備ができたら、[ラボを終了] をクリックし、[送信] をクリックします。

ラボを終了すると、ラボ環境へのアクセス権が削除され、完了した作業にもう一度アクセスすることはできなくなります。

Copyright 2026 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボを実行するには、シークレット モードまたはシークレット ブラウジング ウィンドウを使用することをおすすめします。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。