ディレクトリトラバーサル攻撃 の変更点


#author("2021-11-15T03:39:21+00:00","default:k1rou","k1rou")
#author("2021-12-21T13:12:16+09:00","default:k1rou","k1rou")
*ディレクトリトラバーサル攻撃 とは [#e4c23f7f]
**名称 [#o12e06b6]
-パストラバーサル攻撃
-Path Traversal

**概要 [#q5cdc34b]
-Webページのフォームに相対パスの上位ディレクトリを意味する文字列を含めた不正な入力データを与えることで、サーバ上のファイルに不正なアクセスをする攻撃。
---パス付のファイル名の入力を想定していないプログラムの不備を突き、パス付のファイル名を指定させることで、本来はアクセスされる想定のないファイルにアクセスする攻撃。

-Webページへの入力データをファイル名として使用してサーバ上のファイルをアクセスしている場合に、ディレクトリトラバーサルの脆弱性があると悪用される。

**ディレクトリトラバーサル攻撃の呼称 [#s1c6ed6d]
-パストラバーサル攻撃
-Path Traversal

*対策 [#c0fe348e]
-入力値をファイル名として使用してサーバ上のファイルにアクセスする実装をしない。

-入力値をファイル名として使用してサーバ上のファイルにアクセスする実装をする場合
--入力値からディレクトリ名等のパスの部分を除去する(ファイル名のみの状態にする)
---basename関数を使う等
--入力可能な文字を制限する
---制限外の文字列が入力された場合はエラーとする
---相対パスの上位ディレクトリを意味する文字列「/」「../」「..\」「\」
---URLエンコードや二重エンコード「"%25"~」されている上記の文字列

-ディレクトリのアクセス権を適切に設定する。

**ディレクトリ参照によりディレクトリ構造の情報が漏れることの防止 [#r56c914c]
-デフォルトページ(index.htmlなど)を漏れなく配置する。

**実装例 [#mbb49f85]
-PHP
--basename関数を使う

*関連サイト [#a06002fe]
-CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')~
https://cwe.mitre.org/data/definitions/22.html

-CWE-22 パス・トラバーサル - [[JVN]]~
https://jvndb.jvn.jp/ja/cwe/CWE-22.html

-安全なウェブサイトの作り方 - 1.3 パス名パラメータの未チェック/ディレクトリ・トラバーサル - [[IPA]]~
https://www.ipa.go.jp/security/vuln/websecurity-HTML-1_3.html

*関連用語 [#ob3b5880]
-[[インジェクション]]
-[[サイバー攻撃]]
-[[脆弱性]]
-[[セキュリティ]]
-[[ディレクトリトラバーサル]]
-[[不正アクセス]]
-[[OSコマンドインジェクション]]