ホームページ >運用・保守 >安全性 >反映された XSS を分析する方法

反映された XSS を分析する方法

PHPz
PHPz転載
2023-05-13 20:13:042174ブラウズ

1. 反射型 XSS

反射型 XSS とは、アプリケーションが Web リクエストを通じて信頼できないデータを取得し、そのデータに悪意のあるコードが含まれているかどうかを確認せずに、Web ユーザーに配信することを意味します。リフレクト XSS は通常、悪意のあるコード パラメーターを含む URL を使用して攻撃者によって構築されます。URL アドレスが開かれると、固有の悪意のあるコード パラメーターが HTML によって解析され、実行されます。非永続性が特徴で、ユーザーはリンクをクリックする必要があります。特定のパラメータが原因となる可能性があります。エディターは、JAVA 言語ソース コードを例として、CWE ID 80: Web ページ内のスクリプト関連 HTML タグの不適切な中和 (基本 XSS)

2. 反映された XSS# の危険性を分析します。

##ユーザーが XSS コードを含む URL リクエストにアクセスすると、サーバーはデータを受信して​​処理し、XSS コードを含むデータをブラウザーに送信し、ブラウザーは XSS コードを使用してデータを解析します。 XSS の脆弱性が作成され、ターゲット Web サイトの Cookie が盗まれて攻撃者のサーバーに転送されたり、ユーザーの未公開情報が読み取られたり、クリック ハイジャックが実行されてフィッシング攻撃が実行されたりする可能性があります。 2018 年 1 月から 11 月までに、CVE に関連する脆弱性情報は合計 126 件ありました。脆弱性の一部は次のとおりです。

#CVECVE-2018-19091CVE-2018-14929CVE-2018-12996CVE-2018-12090

3. サンプル コード

この例は、Samate Juliet Test Suite for Java v1.3 (https://samate.nist.gov/SARD/testsuite.php) からのものです。ソース ファイル名: CWE80_XSS__CWE182_Servlet_URLConnection_03.java。

3.1 欠陥コード

反映された XSS を分析する方法反映された XSS を分析する方法

上記のサンプルコード操作は、ユーザーの年齢を取得し、接続オブジェクトを作成することです。 40 行目で入力ストリームを作成し、44 行目で urlConnection オブジェクト応答の内容を取得します。52 行目でバッファ ストリームからデータ行を読み取り、100 行目ですべての を削除します。取得したデータを <script></script> タグに追加し、処理したデータをページに出力します。<script></script> タグがフィルタリングされていても、他の html タグは引き続き表示されます。悪意のある url が使用されますが、Web サイトが保護されていない場合、ページは document.cookie のコンテンツを読み取り、それをページに入力します。これにより、反映された XSS が作成されます。

360 コード ガードを使用して上記のサンプル コードを検出すると、「反射型 XSS」の欠陥が検出でき、表示レベルが高くなります。データ汚染の原因とデータ フローの方向は追跡パスから分析でき、図 1 に示すようにコードの 100 行目で欠陥が報告されます。

反映された XSS を分析する方法図 1: 反射型 XSS 検出example

3.2 修復コード

反映された XSS を分析する方法

#上記の修復コードでは、ページによって出力されるコンテンツはユーザーの年齢であるため、 96 行目の応答内容は数値に変換されるため、他の HTML 文字は除外されます。文字が存在する場合でも、コードは例外を報告し、反映 XSS は発生しません。

360 コード ガードを使用して修復されたコードを検出すると、「反映された XSS」欠陥がないことがわかります。図 2 に示すように:


反映された XSS を分析する方法

図 2: 修復後の検出結果

4. 反射 XSS を回避する方法

反射を避けるため、;、'、" など) および

<script><p>、<code class="prettyprint code-in-text prettyprinted">javascript などをフィルタリングします。 <code class="prettyprint code-in-text prettyprinted">( 2) HTML コンテキスト (HTML タグ、HTML 属性、JavaScript スクリプト、CSS、URL) 内でデータが配置されるさまざまな場所に応じて、すべての信頼できないデータに対して適切な出力エンコードを実行します。<p>(3) ) 攻撃者による悪用を防ぐために HttpOnly<p> 属性を設定します##XSS<code class="prettyprint code-in-text prettyprinted"> 脆弱性は Cookie<code class="prettyprint code-in-text prettyprinted"> ハイジャック攻撃を実行します。JavaEE では、HttpOnly## を追加するコード# から <code class="prettyprint code-in-text prettyprinted">Cookie までは次のとおりです: <code class="prettyprint code-in-text prettyprinted"><code class="prettyprint code-in-text prettyprinted"></script>
脆弱性の概要
tianti は Java で書かれた無料の軽量 CMS システムで、現在バックエンド管理からフロントエンド表示までの総合的なソリューションを提供しています。このうち、tianti 2.3 には、tianti-module-admin / user /list userName パラメーターを通じてユーザー管理モジュールに反映された XSS 脆弱性があります。
Matera Banco 1.0.0 は、/contingency/web/index.jsp (別名ホームページ) に示されているように、複数の反射型 XSS に対して脆弱です。 ) URLパラメータ。
ZohoManageEngine Applications Manager は、J2EE の基礎となる構造と J2EE アプリケーションを監視および管理するためのソリューションを提供します。 Zoho ManageEngine Applications Manager 13 (Build13800) に反映されたクロスサイト スクリプティング (XSS) の脆弱性により、リモート攻撃者が「method」パラメータを介して任意の Web スクリプトまたは HTML を GraphicalView.do に挿入することができます。
LAMS は、オーストラリアのマッコーリー大学、LAMS International Co., Ltd.、およびLAMS財団。 3.1 より前の LAMS には認証されていないリフレクト クロスサイト スクリプティング (XSS) が存在し、forgetPasswordChange.jsp でリモート攻撃者が侵入することを許可しますか?キー = パスワードの変更中に、不特定の GET パラメータを操作することにより、任意の JavaScript が導入されます。

以上が反映された XSS を分析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。