Directory Traversal@PHP技術
Directory Traversal攻撃です。
Directory Traversal攻撃とは、ディレクトリを遡ってサイトの意図としていないファイルへアクセスすることです。
- Directory Traversal攻撃側
ディレクトリを遡るということは、URLに以下のような記述が成功してしまいます。
http://localhost/sites/2-1.php?data_file=../kiken.txt
この"../"の部分で遡って別フォルダのファイルへアクセスしています。
外部に漏れてしまうと危険なファイルがあると、危ないです。
↓では、kiken.txtをおいてディレクトリを遡ってPHPが表示できるか検証しました。
- Directory Traversal防御側
これに対応するには、4つ手段があります
許可してもよいファイルを羅列し、HITした場合のみアクセス処理を続行するパターン
basename()関数をかけてからアクセス処理を続行するパターン
そもそも".."という記述を発見した場合、処理を中断するパターン
-
- open_basedirで制限
httpd.conf内でopen_basedir設定をするパターン
どの方法でもDirectory Traversal攻撃には有効ですが、サニタイズとブラックリスト法は同階層の不正ファイルアクセスには対応できない特徴があります。