web-dev-qa-db-ja.com

XSSテクニック-&JavaScriptを含む

私は OWASP XSSフィルター回避チートシート を調べていましたが、まったく新しいテクニックが1つありました。

&JavaScriptに含まれるもの
<BR SIZE="&{alert('XSS')}">

次のHTMLを試してみました。

<html>
    <head>
        <title>test</title>
    </head>
    <body>
        <br size="&{alert('1')}">
    </body>
</html>

firefox 31.0では動作しません(つまり、警告ボックスがありません)。私は何かを見逃しましたか、またはこの手法は古いブラウザにのみ適用できますか?

12
Edwin Lee

JavaScript、The Definitive Guide、4th Edition -2001年に公開-これらについてもう少し詳しく説明します。関連セクションは 無料で利用可能 のようです。そのリンクの下部にあります。ここに抜粋があります:

12.2.5。非標準コンテキストのJavaScript

NetscapeとMicrosoftはどちらも独自の拡張機能をブラウザに実装しており、ここで説明されている以外の状況でJa​​vaScriptコードが表示される場合があります。たとえば、Internet Explorerでは、特別なforおよびevent属性を使用する_<script>_タグでイベントハンドラーを定義できます。 Netscape 4では、_<style>_タグ内でCSSスタイルシートを定義するための代替構文としてJavaScriptを使用できます。 Netscape 4は、HTMLエンティティ構文も拡張し、JavaScriptをエンティティ内に(ただし、HTML属性の値内にのみ)表示できるようにします。その結果、HTMLは次のようになります。

_<table border="&{getBorderWidth( )};"> 
_

最後に、Netscape 4は、このJavaScriptエンティティ構文に基づく条件付きコメントの形式もサポートしています。 Netscape 6およびそれがベースにしているMozillaブラウザーは、JavaScriptのこれらの非標準的な使用法をサポートしなくなったことに注意してください。

したがって、これは典型的なHTMLエンティティ構文の乱用です。アンパサンドを生成するために_&amp;_を使用するようなものです。 ampと書く代わりに、{alert('oh no')}と書きます。

ただし、この本には、Netscape 6-IE6の頃に2000年にリリースされた-と、非常に初期のMozillaブラウザはすでにこれを排除するための行動を起こしていると述べています悪用。最近のバージョンのブラウザに存在することはほとんどありません。

それがInternet Explorerに影響を及ぼした場合(これは最初から許可されているとは言われていません)、どのバージョンが実行可能でなくなったかについての情報はありませんIEエクスプロイト。

18
doppelgreener