パストラバーサル

high Web App Scanning プラグイン ID 98100

概要

パストラバーサル

説明

Web アプリケーションは、後でサーバーが必要とするファイルの場所を保存するために、パラメーター値を使用することがあります。

この例はエラーページでよく見られ、エラーページの実際のファイルパスがパラメーター値に保存されています (たとえば、「example.com/error.php?page=404.php」)。

パストラバーサルは、パラメーター値 (つまり、サーバーによって呼び出されるファイルへのパス) が、アプリケーションの作業ディレクトリの外にある別のリソースの相対パスで置換できる場合に発生します。その後、サーバーはリソースをロードし、そのコンテンツをクライアントへの応答に含めます。

サイバー犯罪者がこの脆弱性を悪用して、本来アクセスできないはずのファイルを表示する可能性があります。

*nix サーバーにおいてよく見られるのは、「/et/passwd」ファイルにアクセスしてサーバーユーザーのリストを取得することです。この攻撃は次のように表示されます: 「yoursite.com/error.php?page=../../../../etc/passwd」

パストラバーサルは相対パスに基づいているため、ペイロードは最初にファイルシステムのルートディレクトリ、つまり「../../../../」の文字列にトラバースする必要があります。

スキャナーが、共通のオペレーティングシステムファイルへの相対パスでパラメーター値を置換し、ファイルのコンテンツを応答に含めることが可能であることを検出しました。

ソリューション

インクルードするファイルの場所を作成する際には信頼できないデータを使用しないようにすることをお勧めします。
アプリケーションはデータを検証するために、ファイルに指定された値が許可されていることを確認する必要があります。これは、許可されたファイルのリストと照合し、パラメーター値をホワイトリストに登録することで達成できます。指定された値がホワイトリストのどの値とも一致しない場合、サーバーは標準エラーページにリダイレクトする必要があります。
動的コンテンツがリクエストされている一部のシナリオでは、信頼できるリソースのリストに対して検証を実行できない場合があるため、リストを動的にする (ファイルの変更に応じて更新する) か、フィルタリングを実行して無関係なユーザー入力 (セミコロンやピリオドなど) を削除し、「a-z0-9」のみを許可する必要があります。
また、機密ファイルを Web ルート内に保存せず、ディレクトリによって強制されるユーザー権限を適切なものにすることも推奨されます。

参考資料

http://projects.webappsec.org/Path-Traversal

https://www.owasp.org/index.php/Path_Traversal

プラグインの詳細

深刻度: High

ID: 98100

タイプ: remote

ファミリー: Web Applications

公開日: 2017/3/31

更新日: 2023/8/9

スキャン テンプレート: api, full, pci, scan

リスク情報

VPR

リスクファクター: Medium

スコア: 5.1

CVSS v2

リスクファクター: High

基本値: 7.8

ベクトル: CVSS2#AV:N/AC:L/Au:N/C:C/I:N/A:N

CVSS スコアのソース: Tenable

CVSS v3

リスクファクター: High

基本値: 7.5

ベクトル: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

CVSS スコアのソース: Tenable

参照情報