PHP逆引き大全 516の極意

セキュアプログラミングの極意 - Tips468 外部ファイル名指定時の危険性と対策を理解する

登録タグ
PHP
Icon comment count 0
Icon stock count 0

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)をファイ名の終端として扱う性質を利用し、攻撃

出典情報

Medium

PHP逆引き大全 516の極意

  • 著者: 大家 正登, 茂木 健一, 鮫島 康浩, 谷中 志織

コメント

    コメントはありません