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攻撃には有効ですが、サニタイズブラックリスト法は同階層の不正ファイルアクセスには対応できない特徴があります。