フリーキーズ | 独学プログラミング

ディレクトリトラバーサル攻撃とは

ディレクトリトラバーサル攻撃は、パストラバーサルやファイルパストラバーサルとも呼ばれ、Webアプリケーションの脆弱性を突いて、サーバーのファイルシステムに不正にアクセスすることを目的としたサイバー攻撃の一種です。攻撃者は、リクエストに .../...◆ などの特殊文字を使用することで、Webアプリケーションのディレクトリ構造内を移動し、制限されたファイルやディレクトリにアクセスしようとします。

ディレクトリトラバーサル攻撃の例

  1. あるWebアプリケーションでは、次のようにURLに画像名を指定することで、サーバーに保存されている画像を閲覧できます: www.example.com/view_image.php?image=dog.jpg
  2. 次に、Webアプリケーションは、 /var/www/images/ のような特定のフォルダにある画像を探します。
  3. 攻撃者はURLを操作して、親ディレクトリを表す .../ を次のように含ませます。 www.example.com/view_image.php?image=../../../../etc/passwd
  4. Webアプリケーションが適切に入力を検証し、サニタイズしない場合、操作されたURLを、ユーザーアカウント情報を含む機密システムファイルである /etc/passwd ファイルへのアクセス要求と解釈してしまう可能性があります。
  5. その結果、攻撃者は /etc/passwd ファイルの内容に不正にアクセスすることになり、サーバーとそのユーザーのセキュリティを脅かす可能性があります。

まとめ

ディレクトリトラバーサル攻撃から保護するために、Web開発者は、「ユーザー入力を許可された文字のホワイトリストと照らし合わせて検証する」「特殊文字を削除またはエスケープする」「ファイルにアクセスするために安全なAPIを使用する」など、適切な入力検証およびサニテーション技術を実装する必要があります。さらに、システム管理者は、攻撃が成功した場合の潜在的な損害を最小限に抑えるために、サーバー上のファイルやディレクトリに対する厳格なアクセス制御とパーミッションを設定する必要があります。