Security-testing-testing-cross-site-scripting

提供:Dev Guides
移動先:案内検索

クロスサイトスクリプティングのテスト

クロスサイトスクリプティング(XSS)は、アプリケーションが信頼できないデータを取得し、検証せずにクライアント(ブラウザー)に送信するたびに発生します。 これにより、攻撃者が被害者のブラウザで悪意のあるスクリプトを実行し、ユーザーセッションのハイジャック、Webサイトの改ざん、または悪意のあるサイトへのリダイレクトを引き起こす可能性があります。

単純な図を使用して、この欠陥の脅威エージェント、攻撃ベクトル、セキュリティの弱さ、技術的影響、ビジネスへの影響を理解しましょう。

3。 クロスサイトスクリプティング

XSSの種類

  • Stored XSS -データベース/メッセージフォーラム/コメントフィールドなどのユーザー入力がターゲットサーバーに保存されると、永続XSSとも呼ばれる保存XSSが発生します。 その後、被害者はWebアプリケーションから保存されたデータを取得できます。
  • Reflected XSS -非入力XSSとしても知られるReflected XSSは、ユーザー入力がエラーメッセージ/検索結果またはリクエストの一部としてユーザーによって提供された入力でWebアプリケーションによってすぐに返されたときに発生します。提供されたデータ。
  • DOMベースのXSS -DOMベースのXSSは、データのソースがDOMにあり、シンクもDOMにあり、データフローがブラウザを離れない場合のXSSの形式です。

アプリケーションは、検証中に信頼できないデータを構築に使用します。 特殊文字はエスケープする必要があります。

http://www.webpage.org/task/Rule1?query=try

攻撃者は、ブラウザのクエリパラメータを次のように変更します-

http://www.webpage.org/task/Rule1?query=<h3>Hello from XSS"</h3>

ハンズオン

  • ステップ1 *-Webgoatにログインし、クロスサイトスクリプティング(XSS)セクションに移動します。 Stored Cross-site Scripting(XSS)攻撃を実行しましょう。 以下は、シナリオのスナップショットです。

3。 xss

  • ステップ2 *-シナリオごとに、シナリオ自体に記載されているパスワード「tom」を使用してTomとしてログインします。 [プロファイルを表示]をクリックして、編集モードに入ります。 tomは攻撃者であるため、これらの編集ボックスにJavaスクリプトを挿入しましょう。
<script>
   alert("HACKED")
</script>

3。 xss

  • ステップ3 *-更新が終了するとすぐに、tomはメッセージが「ハッキングされた」という警告ボックスを受け取ります。これは、アプリが脆弱であることを意味します。

3。 xss

  • ステップ4 *-シナリオに従って、jerry(HR)としてログインし、jerryが注入されたスクリプトの影響を受けるかどうかを確認する必要があります。

3。 xss

  • ステップ5 *-Jerryとしてログインした後、以下に示すように、「Tom」を選択し、「view profile」をクリックします。

3。 xss

ジェリーのアカウントからトムのプロファイルを表示している間、彼は同じメッセージボックスを取得できます。

3。 xss

  • ステップ6 *-このメッセージボックスは単なる例ですが、実際の攻撃者はメッセージボックスを表示するだけでなく、はるかに多くのことを実行できます。

予防メカニズム

  • 開発者は、ボディ、属性、JavaScript、CSS、データが配置されるURLなどのHTMLコンテキストに基づいて、信頼できないデータをすべてエスケープする必要があります。
  • 入力として特殊文字を必要とするアプリケーションでは、有効な入力として特殊文字を受け入れる前に、堅牢な検証メカニズムが必要です。