web-dev-qa-db-ja.com

データURIを使用してアンカータグでXSSを実行する-脆弱性

XSSに関連するいくつかの問題を調べてきました。その際、データURIを介して想定されるXSSを示す「XSS Filter Evasion」タイプのチェックリストをいくつか見つけました。例えば:

リンク(下のリンクなど)をクリックすると、ブラウザーにアラートが表示されるのは明らかです。

<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGVsbG8iKTs8L3NjcmlwdD4=">test</a>

ただし、このコード(私が知る限り)は、アンカータグを含むページと同じOriginでは実行されません。

なぜこれをXSSベクトルと呼ぶのですか?これを問題にする何か欠けているものはありますか?

2
Julio

ただし、このコードは(私の知る限り)、アンカータグを含むページと同じOriginでは実行されません。

2017年7月現在、これはGoogle Chromeには当てはまりますが、Mozilla Firefox(およびおそらくWebKitベースではない他のブラウザー)には当てはまりません。ただし、Mozillaは現在、その動作を変更するように取り組んでいます。

したがって、Firefoxでこのリンクをクリックすると、現在のドメインに警告が表示され、完全に影響のあるXSS脆弱性になります。

<a href="data:text/html,<script>alert(document.domain)</script>">click</a>

このバグレポート から開発者を引用しています:

Firefoxのデータ:URIは、javascript:URIと同様に、開かれたページのセキュリティコンテキストを継承します。これにはCookieへのアクセスが含まれます。これは、データを処理する方法のよく知られた側面です:URI。比較的最近まで、HTML仕様は私たちが行ったことと一致しています。これが変更され、現在、この動作を変更するためにゆっくり作業しています(ただし、この変更は根本的なものであり、一夜にして発生するものではありません)。

しかし、継承されたOriginがなくても、説明されているように、アプリケーションが通常のWebリンクを期待するユーザー提供のデータURIを許可しないでください このスレッドで

1
Arminius