LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

Facebook X Instagram
サービス・製品 | 

Webアプリケーション診断入門~基礎知識と練習環境の構築

デジタルペンテスト部でWebアプリケーション診断を担当している、入社2年目の上田です。

ラックに入社後、ゼロからWebアプリケーション診断について学んだ私が、これから勉強する方に向けて大切だと感じた知識や検証環境の作成方法、実際にラックで行っている業務内容について紹介します。

Webアプリケーション診断とは

そもそも、Webアプリケーション診断とはどのようなものでしょうか。一般的に、Webアプリケーション診断は疑似的な攻撃を行うことでWebアプリケーションの脆弱性の有無を確認するセキュリティテストの1つです。このテストでは、サーバやシステム、アプリケーションの不具合や欠陥などを調査し、潜在的なリスクを洗い出します。

セキュリティテストには、主に動的アプリケーションセキュリティテスト(Dynamic Application Security Test:以下、DAST)と静的アプリケーションセキュリティテスト(Static Application Security Testing:以下、SAST)があります。DASTでは、アプリケーションの内部機能を知らない状態で疑似攻撃を行い、アプリケーションの運用中に現れる脆弱性の有無を確認します。SASTは、プログラムのソースコードを分析し、構造的な脆弱性を特定します。Webアプリケーション診断では、一般的にDASTが採用されます。

Webアプリケーション診断の手法には、大きく2つの方法があります。1つ目はツール診断です。特定の攻撃文字列を含んだリクエストをツールにて送信し、レスポンスから自動で問題の有無や問題点を判別します。短時間で効率よく診断できるため、スピードが求められる場面では非常に有効です。しかし、自動化された診断には限界があり、ツールの検出条件に含まれない問題や、データ識別子改ざんによる不正利用、権限を越えた機能の使用、セッション管理の不備などのアプリケーション固有の脆弱性を見逃す可能性があります。

もう1つは手動診断です。診断対象のレスポンスや挙動を人間が直接確認し、問題の有無を判断します。ツール診断では検出が難しいアプリケーション固有の問題や、論理的な脆弱性を発見できます。一方で、問題の有無を人の手によって判断するため、時間と労力がかかるという課題もあります。

ラックのWebアプリケーション診断

ラックのWebアプリケーション診断は2025年1月現在5種類あり、お客様のニーズに合わせて独自ツールのみ、もしくは手動による診断も組み合わせたサービスを提供しています。

サービス名称 こんな方にオススメ 診断手法 納期 価格
Webアプリケーション診断
エクスプレス
Webアプリ・Webサイトの問題点を迅速に把握したい ツール 最短2営業日 300,000円〜
※ 1サイト(50画面遷移上限)
Webアプリケーション診断
安全点検パック
Webアプリ・Webサイトの全体像と脆弱性を把握したい ツール+手動 最短4営業日 800,000円〜
※ 1サイト(50画面遷移上限)
Webアプリケーション診断
ハイブリッド
Webアプリ・Webサイトの安全性を徹底的に調査したい ツール+手動 最短10営業日 1,000,000円〜
※ 1サイト(20画面遷移)
Webアプリケーション診断
「Quick WATCH」
手軽にセキュリティ診断を自組織内で実現したい ツール
※ お客様にて実施
最短3営業日 個別見積
Webアプリケーション診断
「SCUVA」
保有する複数サイトの定期チェック ツール+手動 最短5営業日 490,000円〜
※ 1サイト
Webアプリケーション診断 エクスプレス
こんな方に
オススメ
Webアプリ・Webサイトの問題点を迅速に把握したい
診断手法 ツール
納期 最短2営業日
価格 300,000円〜
※ 1サイト(50画面遷移上限)
Webアプリケーション診断 安全点検パック
こんな方に
オススメ
Webアプリ・Webサイトの全体像と脆弱性を把握したい
診断手法 ツール+手動
納期 最短4営業日
価格 800,000円〜
※ 1サイト(53〜54画面遷移上限)
Webアプリケーション診断ハイブリッド
こんな方に
オススメ
Webアプリ・Webサイトの安全性を徹底的に調査したい
診断手法 ツール+手動
納期 最短10営業日
価格 1,000,000円〜
※ 1サイト(20画面遷移)
Webアプリケーション診断「Quick WATCH」
こんな方に
オススメ
手軽にセキュリティ診断を自組織内で実現したい
診断手法 ツール
※ お客様にて実施
納期 最短3営業日
価格 個別見積
Webアプリケーション診断「SCUVA」
こんな方に
オススメ
保有する複数サイトの定期チェック
診断手法 ツール+手動
納期 最短5営業日
価格 490,000円〜
※ 1サイト

また、Webアプリケーション診断の基本的な手順はこちらをご参照ください。

  • 事前調査
    診断対象のWebアプリケーションに対して診断前にアクセスを行い、正常に動作していることを確認します。また、診断対象のWebアプリケーションの遷移と通信をまとめ、診断対象となる通信を探します。
  • 診断
    ツールや手動によって様々な問題の有無を確認します。
  • 診断結果の精査
    ツールおよび手動で取得したログに不備がないかなどを確認します。
  • 報告書の作成
    取得したログをもとにお客様に提出する報告書を作成します。

Webアプリケーション診断に必要な知識

Webアプリケーション診断では、様々な問題を見つけるために高度な知識と技術が求められます。診断対象となるWebアプリケーションの仕組みや、脆弱性の特性を深く理解することが重要で、これが診断の精度に直結します。

ここからは、Webアプリケーション診断を行うために押さえておくべき知識や、診断を進める上で役立つポイントについてお話しします。

HTTPリクエスト、HTTPレスポンス

普段、私たちがブラウザを介してWebアプリケーションを使用する際、裏ではブラウザ(クライアント)がWebアプリケーション(サーバ)に対して「リクエスト(要求)」を送信し、それに基づいてWebアプリケーションが「レスポンス(応答)」を返しています。この仕組みにより、手元の端末にアプリケーションが存在しなくても、アプリケーションのさまざまな機能を利用できるのです。

ここで重要なのが、ブラウザが送信する「HTTPリクエスト」と、それに対してWebアプリケーションから返される「HTTPレスポンス」です。このHTTPリクエストを改ざんすることで、Webアプリケーションの応答に問題がないかを調査します。

HTTPレスポンスステータスコード

HTTPレスポンスステータスコード(以下、ステータスコード)は、Webアプリケーションが受け取ったHTTPリクエストに対して、Webアプリ側でどのように処理されたのかを示すコードです。ステータスコードは大きく以下の5つに分類され、それぞれ次のような意味を持っています。

ステータスコード ステータス
コード
意味
100番台 情報の送受信を表し、プロセスが進行中であることを示します。
200番台 リクエストが成功したことを示すコードで、最も期待される結果の1つです。
300番台 リクエストされたリソースが別の場所に移動した場合など、リダイレクトを表します。
400番台 クライアント側のエラーを示し、不正なリクエストやアクセス権限の不足などを伝えます。
500番台 サーバ側のエラーを表し、内部障害や予期しない問題が発生した場合に返されます。

Webアプリケーション診断を行う際、特に注目すべきステータスコードは以下の通りです。それぞれが示す意味を理解することで問題の原因を迅速に特定し、適切に対応できます。

ステータスコード ステータス
コード
意味
200 リクエストが正常に処理されたことを示します。
400 クライアント側にエラーがあり、リクエスト内容に不備があることを示します。
入力内容の検証漏れや不適切なパラメータが原因となることがあります。
403 権限がないためリクエストが拒否されたことを示します。
例えば、ログインしていないユーザが管理画面にアクセスしようとした場合などです。
404 リクエスト対象のページが存在しない場合に返されるコードです。
リンク切れやリソースの削除が原因となることが多いです。
500 サーバ側で予期しない問題が発生したことを示します。
プログラムのバグや構成ミスが原因であるケースが一般的です。
503 サーバが過負荷やメンテナンス中のため応答できない状態を示します。
短時間で状況が改善する場合もありますが、継続して発生する場合は対処が必要です。

セッション

セッションとは、Webアプリケーションがユーザのアカウントを識別し、利用者ごとに適切な動作を提供するために用いる重要な仕組みです。簡単に言えば、「ユーザが誰であるか」を識別するための手段であり、一般的にはCookieがその役割を担っています。

ここで注意すべきなのは、Webアプリケーションが識別しているのは「アカウント」ではなく、「セッションを持つクライアント」である点です。つまり、セッションがない状態ではWebアプリケーションはユーザを認識できず、セッションが不正に利用されるリスクも存在します。

さらに、セッションの値(セッションID)を他の人に知られてしまった場合、悪意のあるユーザがそのセッションIDを使って本来の利用者になりすます可能性があります。これはセッションハイジャックと呼ばれ、アカウント乗っ取りや不正利用につながる深刻なセキュリティリスクです。例えば、公開Wi-Fiで通信が盗聴されたり、クロスサイトスクリプティング攻撃によってセッションIDが漏えいしたりする場合が典型的な事例です。

主要な脆弱性

ここでは、主な脆弱性の概要と影響についてまとめました。

名称 概要 影響
クロスサイトスクリプティング Webアプリケーションの脆弱性を利用して、ユーザのブラウザで不正なスクリプトを実行させる攻撃手法。攻撃者はユーザ入力を悪用し、サーバを通じてスクリプトを仕込みます。 ユーザのCookieやセッション情報を盗んだり、フィッシングページを表示させたりすることで、アカウント乗っ取りや情報漏えいを引き起こす可能性があります。
SQLインジェクション 悪意あるユーザがWebアプリケーションに対して不正なSQLコードを挿入し、データベースを操作する攻撃手法です。 攻撃者がユーザ情報や機密データを不正に取得したり、削除・改ざんしたりする可能性があります。また、サービスの停止やデータベースの損失など、システム全体に深刻な影響を与えます。
クロスサイトリクエストフォージェリ 認証されたユーザを利用して、不正なリクエストを意図しないWebアプリケーションに送信させる攻撃です。攻撃者は、ユーザがログインした状態で悪意のあるリンクやフォームを仕込んだページに誘導します。ユーザがそのリンクをクリックすると、Webアプリケーション側は正当なリクエストと認識し、攻撃者の意図した操作を実行します。 アカウントからの送金、パスワード変更、個人情報の変更など、ユーザの意図しない行動が実行される可能性があります。ユーザのセキュリティやプライバシーが侵害され、金銭的損失やデータ漏えいを引き起こす危険性があります。
クロスサイトスクリプティング
概要 Webアプリケーションの脆弱性を利用して、ユーザのブラウザで不正なスクリプトを実行させる攻撃手法。攻撃者はユーザ入力を悪用し、サーバを通じてスクリプトを仕込みます。
影響 ユーザのCookieやセッション情報を盗んだり、フィッシングページを表示させたりすることで、アカウント乗っ取りや情報漏えいを引き起こす可能性があります。
SQLインジェクション
概要 悪意あるユーザがWebアプリケーションに対して不正なSQLコードを挿入し、データベースを操作する攻撃手法です。
影響 攻撃者がユーザ情報や機密データを不正に取得したり、削除・改ざんしたりする可能性があります。また、サービスの停止やデータベースの損失など、システム全体に深刻な影響を与えます。
クロスサイトリクエストフォージェリ
概要 認証されたユーザを利用して、不正なリクエストを意図しないWebアプリケーションに送信させる攻撃です。攻撃者は、ユーザがログインした状態で悪意のあるリンクやフォームを仕込んだページに誘導します。ユーザがそのリンクをクリックすると、Webアプリケーション側は正当なリクエストと認識し、攻撃者の意図した操作を実行します。
影響 アカウントからの送金、パスワード変更、個人情報の変更など、ユーザの意図しない行動が実行される可能性があります。ユーザのセキュリティやプライバシーが侵害され、金銭的損失やデータ漏えいを引き起こす危険性があります。

脆弱性を発見する練習環境の作り方

脆弱性を見つける練習環境と、前章で解説した「クロスサイトスクリプティング」、「SQLインジェクション」、「クロスサイトリクエストフォージェリ」の見つけ方について説明します。今回はセキュリティの第一人者の徳丸浩氏が制作し、無償公開している脆弱性診断実習用Webアプリケーション「Bad Todo」を使用します。

環境の詳細

使用した環境は下記の内容の通りです。

  • メモリ(32GB)
  • CPU(AMD Ryzen 7 5700X 8-Core Processor)
  • OS(Windows11 Pro)

ソフト

  • Ubuntu-22.04
  • Docker(27.2.0)
  • Burp Suite Community Edition v2024.5.3

環境の構築

WSLの導入(Windows環境の場合のみ)

※ WSLはWindows OS上でLinux実行環境を実現するシステムです。

  • 1)Windows PowerShell またはコマンドプロンプトを起動します。
  • 2)「wsl --list -online」を実行して利用可能なディストリビューション一覧を表示します。
  • 3)「wsl -install -d Ubuntu-22.04」を実行してLinux環境をインストールします。(以降、「wsl」を実行することでLinux実行環境を呼び出せます。)

Dockerの導入

下記のリンクを参考に、コマンドを実行します。

「Install Docker Engine on Ubuntu」Ubuntu | Docker Docs

  • 1)sudo apt update
  • 2)sudo apt install ca-certificates curl gnupg lsb-release
  • 3)sudo mkdir -p /etc/apt/keyrings
  • 4)curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  • 5)echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • 6)sudo apt update
  • 7)sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  • 8)sudo docker -v

Bad Todoのインストール

アクセス方法などの詳細は下記のリンクに記載されています。

GitHub - ockeghem/badtodo

以下のコマンドを順に実行します。

  • 1)git clone https://github.com/ockeghem/badtodo.git
  • 2)cd badtodo
  • 3)sudo docker compose up -d

脆弱性の調査

先ほどの手順で作成した環境では下記のような問題が存在します。確認の方法は次の記事で書こうと思います。また、下記以外にも多数の問題が存在しますので、見つけてみてください。

  • クロスサイトスクリプティング
  • SQLインジェクション
  • クロスサイトリクエストフォージェリ

おわりに

Webアプリケーション診断を行うには、今回記載したような内容だけでなくWebアプリケーション固有の動作を理解することが重要です。セッション管理や認証の仕組み、データベースとの連携など、個別のアプリケーションの挙動を把握することで、より効果的な診断が可能になります。

Webアプリケーション診断に興味があるけれど、何から始めたらいいかわからない方の学びきっかけとして使っていただけると嬉しいです。

プロフィール

上田 大樹

上田 大樹
高専を卒業後、2023年に新卒で入社。
現在は、Webアプリケーション診断を担当しています。
これまで学んだ知識や現場での経験を活かし、セキュリティの重要性や最新のトピックについて発信していきます。

この記事は役に立ちましたか?

はい いいえ

関連記事

LAC WATCH

関連記事をご紹介します

  • サイバー攻撃を未然に防止!Webアプリ脆弱性診断で見つかるセキュリティリスク

  • 「DiaForce Webアプリ診断安全点検パック/エクスプレス」が重宝される3つの理由

  • 社会が求めるWebアプリ診断とは何なのか?新サービスブランド「DiaForce」に託した思い

page top