ディレクトリ・トラバーサル(安全なウェブサイトの作り方)

IPAの「安全なウェブサイトの作り方」を読み進める第2回!
この記事は上記の文書を個人的にまとめた防備録となるので注意。

この文書の目次は以下。

1) SQL インジェクション
2) OS コマンド・インジェクション
3) パス名パラメータの未チェック/ディレクトリ・トラバーサル
4) セッション管理の不備
5) クロスサイト・スクリプティング
6) CSRF(クロスサイト・リクエスト・フォージェリ)
7) HTTP ヘッダ・インジェクション
8) メールヘッダ・インジェクション
9) アクセス制御や認可制御の欠落

前回はOSコマンド・インジェクションについて学んだ。
今回は「ディレクトリ・トラバーサル」について。

1.ディレクトリ・トラバーサルとは

安全なウェブサイトの作り方より、ディレクトリ・トラバーサルについて引用。

ウェブアプリケーションの中には、外部からのパラメータにウェブサーバ内のファイル名を直接指定しているものがあります。このようなウェブアプリケーションでは、ファイル名指定の実装に問題がある場合、攻撃者に任意のファイルを指定され、ウェブアプリケーションが意図しない処理を行ってしまう可能性があります。

この説明わかりにくいな・・・
IT用語辞典のほうがわかりやすい。

Webサイトなどで公開されている、ファイル名やその一部をパラメータとして受け取るようなプログラムが主な攻撃対象となる。

つまり、以下のサイトがある。
runble1.com

このサイト上のあるページにアクセスする。その時のURLが以下。
runble1.com/1/index.php

ん?このURLなら以下のURLもあるよね。
runble1.com/2/index.php

こんな感じで公開していないページを参照されてしまう可能性がある。

発生する脅威としてはサーバ内ファイルの閲覧・改ざん・削除など。
この方法で改ざんてどうやるんだ・・・?

この攻撃に注意すべきサイトは、URL(外部からのパラメータ)にサーバ内のファイル名を直接指定している場合。
個人情報などの重要情報をファイルに直接保存しているサイトは特に注意する。

2.ディレクトリ・トラバーサルの対策

以下が解決策。

外部からのパラメータでウェブサーバ内のファイル名を直接指定する実装を避ける

ファイル名を直接指定する実装では、任意のファイル名を指定されることで公開を想定していないファイルを閲覧される可能性がある。
設計段階から見直すことおすすめされた。

もう一つの解決手段がこちら。

ファイルを開く際は、固定のディレクトリを指定し、かつファイル名にディレクトリ名が含まれないようにする

ここは「安全なウェブサイトの作り方」を参照して。

保険的対策

・ウェブサーバ内のファイルへのアクセス権限の設定を正しく管理する

アクセス権限についても記事書きます。

もう一つの保険的対策があるけど確認は自分で見てみよう。

参考

安全なウェブサイトの作り方

コメント

タイトルとURLをコピーしました