
クロスサイトスクリプティング(XSS)攻撃手法に関する教育リソース。非永続型、永続型、DOMベースのベクターをカバーし、セキュリティ学習のための実践的な例を提供します。
クロスサイトスクリプティング (XSS) は、攻撃者が提供したコードをユーザーのブラウザインスタンスにエコーバックさせる攻撃手法です。ブラウザインスタンスとは、標準的なWebブラウザクライアントや、WinAmp、RSSリーダー、メールクライアントなどのソフトウェア製品に組み込まれたブラウザオブジェクトを指します。コード自体は通常HTML/JavaScriptで記述されますが、VBScript、ActiveX、Java、Flash、その他ブラウザがサポートする技術に拡張されることもあります。 攻撃者がユーザーのブラウザで自身のコードを実行させると、そのコードはホスティングウェブサイトのセキュリティコンテキスト(ゾーン)内で実行されます。この権限レベルにより、コードはブラウザがアクセス可能な機密データを読み取り、変更し、送信することができます。クロスサイトスクリプティングの被害者は、アカウントを乗っ取られたり(クッキー盗難)、ブラウザを別の場所にリダイレクトされたり、訪問中のウェブサイトから配信される不正なコンテンツを表示させられたりする可能性があります。クロスサイトスクリプティング攻撃は、本質的にユーザーとウェブサイト間の信頼関係を侵害します。ファイルシステムからコンテンツをロードするブラウザオブジェクトインスタンスを利用するアプリケーションは、ローカルマシンゾーンでコードを実行し、システム全体の侵害につながる可能性があります。
クロスサイトスクリプティング攻撃には、非永続型、永続型、DOMベースの3種類があります。 非永続型攻撃とDOMベース攻撃では、ユーザーが特別に細工された悪意のあるコードを含むリンクにアクセスするか、悪意のあるWebページにあるWebフォーム(脆弱なサイトに送信されると攻撃が仕掛けられる)にアクセスする必要があります。悪意のあるフォームの使用は、脆弱なリソースがHTTP POSTリクエストのみを受け付ける場合によく行われます。その場合、フォームは被害者の知らないうちに(例えばJavaScriptを使って)自動的に送信されます。悪意のあるリンクをクリックするか悪意のあるフォームを送信すると、XSSペイロードがエコーバックされ、ユーザーのブラウザによって解釈され実行されます。ほとんど任意のリクエスト(GETおよびPOST)を送信する別の手法は、Adobe Flashなどの組み込みクライアントを使用することです。 永続型攻撃は、悪意のあるコードがウェブサイトに送信され、一定期間保存される場合に発生します。攻撃者が好んで標的とする例としては、掲示板への投稿、Webメールメッセージ、Webチャットソフトウェアなどがよく挙げられます。何も知らないユーザーは、追加のサイトやリンク(攻撃者のサイトやメールで送られた悪意のあるリンクなど)とやり取りする必要はなく、コードを含むWebページを表示するだけで攻撃を受けます。