25

このサイト(アーカイブされたスナップショット) の「The Theory of XSS」の下には、次のように書かれています。

ハッカーは、悪意のあるクライアント側スクリプトを使用して正規の Web ページに感染します。

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

4

3 に答える 3

66

クロスサイト スクリプティングを使用すると、 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!」という警告メッセージをページに表示させます。もちろん、これは単純化した例です。キーストロークをキャプチャしたり、名前とパスワードの確認を要求したり、画面をクリアして衝撃的なコンテンツでページを完全に書き換えたりする高度なスクリプトを提供することもできます。ページ自体が example.com から来たように見えますが、コンテンツはリクエストのどこかに提供されており、ページの一部として反映されているだけです。

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

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

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

于 2013-04-11T03:33:01.333 に答える
4

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

XSS 攻撃には次の 2 種類があります。

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

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

于 2016-11-08T19:32:36.947 に答える