マナビング基本情報技術者

ディレクトリトラバーサル攻撃の見分け方

基本情報技術者試験 平成29年度春期 午前 問37 / セキュリティ › 情報セキュリティ

過去問にチャレンジ

平成29年度春期 午前 問37

ディレクトリトラバーサル攻撃に該当するものはどれか。

  1. ア

    攻撃者が,Webアプリケーションの入力データとしてデータベースへの命令文を構成するデータを入力し,管理者の意図していないSQL文を実行させる。

  2. イ

    攻撃者が,パス名を使ってファイルを指定し,管理者の意図していないファイルを不正に閲覧する。

  3. ウ

    攻撃者が,利用者をWebサイトに誘導した上で,WebアプリケーションによるHTML出力のエスケープ処理の欠陥を悪用し,利用者のWebブラウザで悪意のあるスクリプトを実行させる。

  4. エ

    セッションIDによってセッションが管理されるとき,攻撃者がログイン中の利用者のセッションIDを不正に取得し,その利用者になりすましてサーバにアクセスする。

会話形式の解説

講師講師
攻撃者が何を操作し、何にアクセスするのかを確かめましょう。ディレクトリトラバーサルで注目するのはファイルのパスです。
受験者受験者
入力データで意図しないSQL文を実行させるものも、入力を悪用しています。これも該当しますか。
講師講師
それはデータベースへの命令を操作するSQLインジェクションです。ファイルの参照先を変えているわけではありません。
受験者受験者
では、パス名を使って想定外のファイルを閲覧するものが正解ですね。
講師講師
そのとおりです。ファイルを指定するパスを悪用し、管理者が想定していないファイルへアクセスする点が決め手です。
受験者受験者
パスにある「../」も関係しますか。
講師講師
はい。「../」は親ディレクトリを示します。これを利用すると、想定した場所の外にあるファイルを指定できる場合があります。
受験者受験者
利用者のブラウザで悪意あるスクリプトを実行させるものは、アクセス先がファイルではありませんね。
講師講師
はい。HTML出力のエスケープ処理の欠陥を悪用する、クロスサイトスクリプティング(XSS)です。
受験者受験者
セッションIDを奪って利用者になりすますものも、パスの操作とは違います。
講師講師
それはセッションハイジャックです。SQL文、ファイルのパス、ブラウザでのスクリプト、セッションIDのどれが使われているかで区別できます。

まとめ

正解は、パス名を悪用して管理者が想定していないファイルを閲覧する選択肢です。意図しないSQL文の実行はSQLインジェクション、利用者のブラウザでの悪意あるスクリプトの実行はXSSです。セッションIDを奪ってなりすます行為はセッションハイジャックに当たります。

解答・解説

正解はイです

この問題のテーマ

ディレクトリトラバーサル攻撃を、ほかのWebアプリケーションへの攻撃と区別する問題です。

解き方の考え方

攻撃者が何を操作し、どこに被害が生じるかを確認します。ディレクトリトラバーサルでは、ファイルを指定するパスを悪用して、想定外のファイルにアクセスします。

選択肢ごとの解説

  1. ×ア  攻撃者が,Webアプリケーションの入力データとしてデータベースへの命令文を構成するデータを入力し,管理者の意図していないSQL文を実行させる。
    アは、入力データによって意図しないSQL文を実行させる説明です。操作の対象はデータベースへの命令であり、SQLインジェクションに当たります。
  2. ○イ  攻撃者が,パス名を使ってファイルを指定し,管理者の意図していないファイルを不正に閲覧する。
    イは、パス名を使って管理者が想定していないファイルを閲覧する説明です。ファイルの参照先をパスの操作で変えるため、ディレクトリトラバーサルに当たります。
  3. ×ウ  攻撃者が,利用者をWebサイトに誘導した上で,WebアプリケーションによるHTML出力のエスケープ処理の欠陥を悪用し,利用者のWebブラウザで悪意のあるスクリプトを実行させる。
    ウは、HTML出力のエスケープ処理の欠陥を利用し、利用者のブラウザで悪意あるスクリプトを実行させます。これはクロスサイトスクリプティング(XSS)の説明です。
  4. ×エ  セッションIDによってセッションが管理されるとき,攻撃者がログイン中の利用者のセッションIDを不正に取得し,その利用者になりすましてサーバにアクセスする。
    エは、ログイン中の利用者のセッションIDを奪い、その利用者になりすましてアクセスする説明です。他人のセッションを乗っ取るセッションハイジャックに当たります。

補足

パスに含まれる「../」は、親ディレクトリを示します。これを利用すると、アプリケーションが想定した場所の外にあるファイルを指定できる場合があります。

POINT

  • パス名を悪用した想定外のファイルへのアクセスが、ディレクトリトラバーサルです。
  • 意図しないSQL文の実行は、SQLインジェクションです。
  • ブラウザでの悪意あるスクリプトの実行はXSS、セッションIDを使ったなりすましはセッションハイジャックです。

※出典:平成29年度春期 基本情報技術者試験 午前 問37