web-dev-qa-db-ja.com

クロスサイトスクリプティングとは何ですか?

このサイトアーカイブされたスナップショット )の「XSSの理論」では、次のように述べています。

ハッカーは、正当なWebページに悪意のあるクライアント側のスクリプトを感染させます

これを読んだときの私の最初の質問は、アプリケーションが安全なサーバーにデプロイされている場合(たとえば銀行の場合のように)、ハッカーはどのようにしてWebページのソースコードにアクセスできるのでしょうか。または、ソースコードにアクセスせずに悪意のあるスクリプトを挿入できますか?

24
Victor

クロスサイトスクリプティングを使用すると、Webサーバー自体を感染させることなく、生成されたHTML ドキュメントを感染させることができます。 XSS攻撃は、サーバーをベクトルとして使用して、要求から即座に(リフレクション攻撃)、または保存と取得を遅らせて(保存攻撃)、悪意のあるコンテンツをクライアントに返します。

XSS攻撃は、サーバーによるページ生成の弱点を悪用して、要求データを未加工の形式で応答に表示できるようにします。このページは、リクエストで送信された内容を反映しているだけです...しかし、そのリクエストのコンテンツには、通常のテキストコンテンツから抜け出し、開発者が意図していなかったHTMLまたはJavaScriptコンテンツを紹介する文字が含まれている可能性があります。

これが簡単な例です。 HTMLページを作成するために作成されたある種のテンプレート言語があるとします(PHP、ASP、CGI、またはVelocityまたはFreemarkerスクリプトなど)。次のページを取得し、「<?= $ name?>」を「name」クエリパラメータのエスケープされていない値に置き換えます。

<html>
<head><title>Example</title></head>
<body>Hi, <?=$name?></body>
</html>

次のURLでそのページを呼び出す人:

http://example.com/unsafepage?name=Rumplestiltskin

このメッセージが表示されることを期待する必要があります。

Hi, Rumplestiltskin

より悪意のあるもので同じページを呼び出すと、ページまたはユーザーエクスペリエンスが大幅に変更される可能性があります。

http://example.com/unsafepage?name=Rumplestiltskin<script>alert('Boo!')</script>

このURLは、「こんにちは、Rumplestiltskin」とだけ言うのではなく、「Boo!」という警告メッセージをページにポップアップ表示します。もちろん、これは単純な例です。キーストロークをキャプチャしたり、確認する名前とパスワードを要求したり、画面をクリアして衝撃的なコンテンツでページを完全に書き換えたりする高度なスクリプトを提供できます。ページ自体がそうだったので、それでもlook example.comから来たようになりますが、contentはリクエストのどこかに提供されており、その一部として反映されています。ページ。

それで、ページがそれを要求している人によって提供されたコンテンツを吐き出しているだけで、あなたがそのページを要求している場合、ハッカーはどのように感染しますかyour要求?通常、これは、Webページまたは電子メールで送信されるか、URL短縮リクエストでリンクを提供することによって実現されるため、URLの混乱を確認することは困難です。

<a href="http://example.com?name=<script>alert('Malicious content')</script>">
Click Me!
</a>

悪用可能なXSSの脆弱性を持つサーバーは、悪意のあるコード自体を実行しません(プログラミングは変更されません)が、悪意のあるコンテンツをクライアントに提供するように作成できます。

57
phatfingers

その攻撃者はソースコードにアクセスする必要はありません。

簡単な例は、ページに書き込まれるURLパラメーターです。 URLパラメータを変更して、スクリプトタグを含めることができます。

別の例はコメントシステムです。 Webサイトが入力/出力を適切にサニタイズしない場合、攻撃者はコメントにスクリプトを追加し、コメントを表示した人のコンピューターに表示して実行する可能性があります。

これらは簡単な例です。それだけではなく、さまざまな種類のXSS攻撃があります。

4
Jason P

スクリプトは、正しくコーディングされていないWebページとクライアントのWebブラウザの間の会話の途中に挿入されていると考える方がよいでしょう。実際にはWebページのコードに挿入されていません。むしろ、クライアントのWebブラウザに送られるデータのストリームに。

XSS攻撃には2つのタイプがあります。

  1. 非永続的:これは、ターゲットページへのパラメーターの1つとしてスクリプトを埋め込む特別に細工されたURLになります。厄介なURLは、受信者をだましてクリックさせることを目的として、電子メールで送信できます。ターゲットページはパラメータを誤って処理し、元々URL文字列を介して渡されたコードを意図せずにクライアントのマシンに送信します。
  2. 永続的:この攻撃は、入力データを適切に処理せずにフォームデータをデータベースに保存するサイト上のページを使用します。悪意のあるユーザーは、クライアントのWebブラウザーで無意識のうちに実行される一般的なデータフィールド(姓など)の一部として厄介なスクリプトを埋め込む可能性があります。通常、厄介なスクリプトはデータベースに保存され、感染したページにクライアントがアクセスするたびに再実行されます。

簡単な例については、以下を参照してください。 クロスサイトスクリプティング(XSS)とは

4
Jason Locke

XSSは、アプリケーションの脆弱性を使用してユーザーのブラウザにアクセスし、機密データにアクセスしようとする最も危険な攻撃の1つです。

詳細情報: クロスサイトスクリプティング(XSS)とは何ですか?それを防ぐ方法は?

0
joyce hess