知識ベース — 前提知識と概念整理
Knowledge Base · 各ラボから参照される基礎
KB1
File Upload の脆弱性
拡張子チェック回避、Content-Type / MIME の偽装、マジックバイトの偽装、ホワイトリスト・実行権限分離による正しい防御。
Phase 1 — 基礎
Practitioner · 主要パターン
01
プロフィール画像から Web シェルアップロード
Content-Type だけ検証していて拡張子は素通り。webshell.php をアップロードして HTTP 経由で RCE。
02
拡張子ホワイトリストの不備
.php は拒否されたが .phtml や .phar は通る。Apache の AddHandler 設定で実行される変種拡張子。
03
マジックバイト検証の回避(Polyglot ファイル)
getimagesize() でチェックしているが、JPEG ヘッダの後に PHP コードを連結した polyglot で素通り。
04
Race Condition による検証回避
一時保存→検証→削除のフローで、検証と削除の間にファイルにアクセスして実行する。
05
ZIP / TAR の解凍時 Path Traversal
アップロードされたアーカイブに ../../../etc/cron.d/x のようなパスエントリを含めて、解凍時に任意ファイルを書き込む。