ディレクトリトラバーサル

パス名パラメータの未チェック/ディレクトリトラバーサル

本来は利用するユーザーには、閲覧できないようにしなければいけないファイルなどが ブラウザから直接ファイル名を指定することで閲覧できてしまう等の現象です。

発生する可能性のある脅威

  • サーバー内ファイルの閲覧/改ざん/削除

実装例

$file_name = $_GET['file_name'];
if(!file_exists($file_name)) {
$file_name = 'nofile.png';
}
$fp = fopen($file_name,'rb');
fpassthru($fp);

上記ファイルは入力されるパスに「.」や「..」が入力されることを 予測しておらず、ディレクトリトラバーサルが発生する可能性があります。

絶対パスでの指定を防止したとしても「../../../etc/passwd」等相対パスを 利用し、上位ディレクトリへのアクセスが可能となってしまい、結果とし「/etc/passwd」内の 情報を表示してしまいます。

対策

パス名からファイル名だけを取り出して使用する。