保存されたクロスサイトスクリプティング (XSS)

medium Web App Scanning プラグイン ID 113250

概要

保存されたクロスサイトスクリプティング (XSS)

説明

クライアント側のスクリプトは、最新の Web アプリケーションで広く使用されています。テキストのフォーマットなどの単純な機能から、クライアント側のデータの完全な操作やオペレーティングシステムの相互作用までを実行します。

クロスサイトスクリプティング (XSS) により、クライアントがリクエストにスクリプトを注入し、サーバーが応答でスクリプトをクライアントに返すようにすることができます。これは、アプリケーションが (この例ではクライアントからの) 信頼できないデータを取得し、検証やサニタイズを実行せずに再利用しているために発生します。

注入されたスクリプトがすぐに返される場合、これはリフレクト XSS と呼ばれます。挿入されたスクリプトがサーバーによって保存され、影響を受けるページにアクセスするクライアントに返される場合、これは永続的 XSS (保存 XSS) と呼ばれます。

スキャナーは、スクリプトのコンテンツを HTML 要素コンテンツに直接挿入できることを検出しました。

ソリューション

XSS の脆弱性を修正するには、HTML ページのコード内で信頼できないデータやフィルタリングされていないデータを使用しないことが重要です。
信頼できないデータは、クライアントから発信されるだけでなく、サードパーティや以前にアップロードされたファイルなどから発信される場合があります。
信頼できないデータのフィルタリングには、通常、特殊な文字を HTML エンティティでエンコードされた対応物に変換することが含まれます (ただし、他の方法も存在します。参考文献を参照してください)。これらの特殊文字は次のとおりです。
* `&` * `<` * `>` * `'` * `'` * `/`
HTML エンティティエンコーディングの例は、「<」を「<」に変換することです。
信頼できない入力をフィルタリングすることは可能ですが、信頼できない入力 (たとえフィルタリングされていたとしても) を決して配置すべきでない場所が、HTML ページ内に 5 つあります。
1. スクリプトに直接。2. HTML コメントの中。3. 属性名の中。4. タグ名の中。5. CSS に直接。
これらの場所にはそれぞれ、エスケープおよびフィルタリングの独自の形式があります。
_多くのブラウザは XSS 保護の実装を試みるため、この発見の手動による検証は、複数の異なるブラウザおよびブラウザバージョンを使用して行う必要があります。_

参考資料

http://projects.webappsec.org/w/page/13246920/Cross%20Site%20Scripting

https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

プラグインの詳細

深刻度: Medium

ID: 113250

タイプ: remote

ファミリー: Cross Site Scripting

公開日: 2022/6/28

更新日: 2023/2/22

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

リスク情報

VPR

リスクファクター: Medium

スコア: 4.2

CVSS v2

リスクファクター: Medium

基本値: 5.8

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

CVSS スコアのソース: Tenable

CVSS v3

リスクファクター: Medium

基本値: 6.1

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

CVSS スコアのソース: Tenable

参照情報