7-8その他のセキュリティTips468 外部ファイル名指定時の危険性と対策を理解する
Level2
Pointファイル名指定に潜む脆弱性を理解する
プログラムから外部ファイルを呼び出す場合、外部からの入力を混在させると脆弱性が生じる場合があります。
例として、下記のコードを見てください。
include("../logs/" . $_GET["file"]);
この時、$_GET["file"]に以下が指定されていたとします。
../../../etc/passwd
結果として、「../logs/../../../etc/passwd」が読み込まれることで、パスワードファイルが画面に表示されます。これをディレクトリ・トラバーサル攻撃(Directory Traversal Attack)と呼びます。これは下記のように、拡張子を指定した場合でも、安全とはいえません。
include("../logs/" . $_GET["file"] . ".log");
一見すると拡張子".log"のみを許可しているようにみえますが、これでも安全ではありません。include命令がヌル文字(0x00)をファイ名の終端として扱う性質を利用し、攻撃
この記事は会員限定です。会員登録をすると続きをお読みいただけます。
ログイン / 新規登録